<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://austenasia.wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Austenasia</id>
	<title>Austenasia Wiki - User contributions [en-gb]</title>
	<link rel="self" type="application/atom+xml" href="https://austenasia.wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Austenasia"/>
	<link rel="alternate" type="text/html" href="https://austenasia.wiki/Special:Contributions/Austenasia"/>
	<updated>2026-10-09T05:58:40Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=884</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=884"/>
		<updated>2026-09-19T20:33:07Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
.vector-header-start {&lt;br /&gt;
    padding:10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-logo-wordmark {&lt;br /&gt;
	width: 180px !important;&lt;br /&gt;
	height: auto !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .vector-search-box {&lt;br /&gt;
    margin-left: 8px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 #p-search {&lt;br /&gt;
    margin-left: 9px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Do not invert logo in dark mode */&lt;br /&gt;
.mw-logo-container {&lt;br /&gt;
	filter: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo {&lt;br /&gt;
    gap: 0px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-icon {&lt;br /&gt;
    width: 50px;&lt;br /&gt;
    height: 50px;&lt;br /&gt;
    padding: 5px;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-wordmark {&lt;br /&gt;
    width: 170px !important;&lt;br /&gt;
    height: auto !important;&lt;br /&gt;
    max-width: none !important;&lt;br /&gt;
    max-height: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* === Main Page layout === */&lt;br /&gt;
&lt;br /&gt;
.mainpage-layout {&lt;br /&gt;
    display: grid;&lt;br /&gt;
    grid-template-columns: minmax(0, 1fr) 352px;&lt;br /&gt;
    gap: 32px;&lt;br /&gt;
    align-items: start;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-content {&lt;br /&gt;
    min-width: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-intro {&lt;br /&gt;
    font-size: 16px;&lt;br /&gt;
    line-height: 1.65;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* === Right sidebar === */&lt;br /&gt;
&lt;br /&gt;
.mainpage-sidebar {&lt;br /&gt;
    width: 352px;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    font-family: sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social {&lt;br /&gt;
    min-height: 98px;&lt;br /&gt;
    display: flex;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
    padding: 0 25px;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
    color: #fff;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-discord {&lt;br /&gt;
    background: #5865f2;&lt;br /&gt;
    margin-top: 16px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-news {&lt;br /&gt;
    background: #17212b;&lt;br /&gt;
    margin-top: 16px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social-icon {&lt;br /&gt;
    width: 40px;&lt;br /&gt;
    flex: 0 0 40px;&lt;br /&gt;
    margin-right: 25px;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social-text {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social-title {&lt;br /&gt;
    font-size: 17px;&lt;br /&gt;
    font-weight: 700;&lt;br /&gt;
    margin-bottom: 6px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social-subtitle {&lt;br /&gt;
    font-size: 14px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social-arrow {&lt;br /&gt;
    font-size: 34px;&lt;br /&gt;
    font-weight: 300;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social-label {&lt;br /&gt;
    background: #525ee0;&lt;br /&gt;
    color: #fff;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 15px 10px;&lt;br /&gt;
    font-size: 12px;&lt;br /&gt;
    font-weight: 700;&lt;br /&gt;
    letter-spacing: .4px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-news-label {&lt;br /&gt;
    background: #111a22;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* === Help panel === */&lt;br /&gt;
&lt;br /&gt;
.mainpage-help {&lt;br /&gt;
    margin-top: 14px;&lt;br /&gt;
    background: #b82025;&lt;br /&gt;
    color: #fff;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-help h2 {&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 22px 24px 8px;&lt;br /&gt;
    border: 0;&lt;br /&gt;
    color: #fff;&lt;br /&gt;
    font-family: Georgia, serif;&lt;br /&gt;
    font-size: 22px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-help p {&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0 24px 18px;&lt;br /&gt;
    font-size: 14px;&lt;br /&gt;
    line-height: 1.65;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-help-links {&lt;br /&gt;
    padding: 16px 24px 20px;&lt;br /&gt;
    background: rgba(0, 0, 0, .08);&lt;br /&gt;
    line-height: 1.8;&lt;br /&gt;
    font-size: 14px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-help-links a {&lt;br /&gt;
    color: #fff !important;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-help-links a:hover {&lt;br /&gt;
    text-decoration: underline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* === Mobile === */&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 900px) {&lt;br /&gt;
    .mainpage-layout {&lt;br /&gt;
        display: block;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .mainpage-sidebar {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        margin-top: 30px;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hatnote {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    padding-left: 1.6em;&lt;br /&gt;
    margin-bottom: 0.5em;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=883</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=883"/>
		<updated>2026-09-19T20:32:00Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
.vector-header-start {&lt;br /&gt;
    padding:10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-logo-wordmark {&lt;br /&gt;
	width: 180px !important;&lt;br /&gt;
	height: auto !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .vector-search-box {&lt;br /&gt;
    margin-left: 8px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 #p-search {&lt;br /&gt;
    margin-left: 9px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Do not invert logo in dark mode */&lt;br /&gt;
.mw-logo-container {&lt;br /&gt;
	filter: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo {&lt;br /&gt;
    gap: 0px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-icon {&lt;br /&gt;
    width: 50px;&lt;br /&gt;
    height: 50px;&lt;br /&gt;
    padding: 5px;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-wordmark {&lt;br /&gt;
    width: 170px !important;&lt;br /&gt;
    height: auto !important;&lt;br /&gt;
    max-width: none !important;&lt;br /&gt;
    max-height: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* === Main Page layout === */&lt;br /&gt;
&lt;br /&gt;
.mainpage-layout {&lt;br /&gt;
    display: grid;&lt;br /&gt;
    grid-template-columns: minmax(0, 1fr) 352px;&lt;br /&gt;
    gap: 32px;&lt;br /&gt;
    align-items: start;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-content {&lt;br /&gt;
    min-width: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-intro {&lt;br /&gt;
    font-size: 16px;&lt;br /&gt;
    line-height: 1.65;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* === Right sidebar === */&lt;br /&gt;
&lt;br /&gt;
.mainpage-sidebar {&lt;br /&gt;
    width: 352px;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    font-family: sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social {&lt;br /&gt;
    min-height: 98px;&lt;br /&gt;
    display: flex;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
    padding: 0 25px;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
    color: #fff;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-discord {&lt;br /&gt;
    background: #5865f2;&lt;br /&gt;
    margin-top: 16px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-news {&lt;br /&gt;
    background: #17212b;&lt;br /&gt;
    margin-top: 16px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social-icon {&lt;br /&gt;
    width: 40px;&lt;br /&gt;
    flex: 0 0 40px;&lt;br /&gt;
    margin-right: 40px;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social-text {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social-title {&lt;br /&gt;
    font-size: 17px;&lt;br /&gt;
    font-weight: 700;&lt;br /&gt;
    margin-bottom: 6px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social-subtitle {&lt;br /&gt;
    font-size: 14px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social-arrow {&lt;br /&gt;
    font-size: 34px;&lt;br /&gt;
    font-weight: 300;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social-label {&lt;br /&gt;
    background: #525ee0;&lt;br /&gt;
    color: #fff;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 15px 10px;&lt;br /&gt;
    font-size: 12px;&lt;br /&gt;
    font-weight: 700;&lt;br /&gt;
    letter-spacing: .4px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-news-label {&lt;br /&gt;
    background: #111a22;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* === Help panel === */&lt;br /&gt;
&lt;br /&gt;
.mainpage-help {&lt;br /&gt;
    margin-top: 14px;&lt;br /&gt;
    background: #b82025;&lt;br /&gt;
    color: #fff;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-help h2 {&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 22px 24px 8px;&lt;br /&gt;
    border: 0;&lt;br /&gt;
    color: #fff;&lt;br /&gt;
    font-family: Georgia, serif;&lt;br /&gt;
    font-size: 22px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-help p {&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0 24px 18px;&lt;br /&gt;
    font-size: 14px;&lt;br /&gt;
    line-height: 1.65;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-help-links {&lt;br /&gt;
    padding: 16px 24px 20px;&lt;br /&gt;
    background: rgba(0, 0, 0, .08);&lt;br /&gt;
    line-height: 1.8;&lt;br /&gt;
    font-size: 14px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-help-links a {&lt;br /&gt;
    color: #fff !important;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-help-links a:hover {&lt;br /&gt;
    text-decoration: underline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* === Mobile === */&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 900px) {&lt;br /&gt;
    .mainpage-layout {&lt;br /&gt;
        display: block;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .mainpage-sidebar {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        margin-top: 30px;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hatnote {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    padding-left: 1.6em;&lt;br /&gt;
    margin-bottom: 0.5em;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=Main_Page&amp;diff=882</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=Main_Page&amp;diff=882"/>
		<updated>2026-09-19T20:30:28Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mainpage-layout&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-intro&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;The Austenasia Wiki&#039;&#039;&#039; is the official encyclopaedia of the [[Empire of Austenasia]]. Information concerning Austenasia published by third parties may not reflect the position of the Austenasian Government and may contain claims disputed by Austenasia&#039;s official institutions. Readers seeking authoritative information regarding Austenasian history, government, officeholders, constitutional matters, and current events should refer to this wiki and other official Austenasian publications.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Official links ==&lt;br /&gt;
* [https://austenasia.com Official Website]&lt;br /&gt;
* [https://austenasia.news Austenasian Times]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-sidebar&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social mainpage-discord&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-icon&amp;quot;&amp;gt;[[File:Discord_logo_icon.svg|40px|link=https://discord.gg/PCTyAEBEAK]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-text&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-title&amp;quot;&amp;gt;The Austenasian Discord&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-subtitle&amp;quot;&amp;gt;&lt;br /&gt;
Join our Discord server!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-arrow&amp;quot;&amp;gt;›&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-label&amp;quot;&amp;gt;OFFICIAL AUSTENASIA DISCORD&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social mainpage-news&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-icon&amp;quot;&amp;gt;[[File:Austenasia-logomark-white.svg|40px|link=https://austenasia.news]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-text&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-title&amp;quot;&amp;gt;Austenasian Times&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-subtitle&amp;quot;&amp;gt;Read the latest news&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-arrow&amp;quot;&amp;gt;›&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-label mainpage-news-label&amp;quot;&amp;gt;OFFICIAL NEWS&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-help&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Help us improve&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Austenasia Wiki is maintained by invited contributors. Editors can help expand and improve our coverage of Austenasia&#039;s history, people and institutions.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-help-links&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;› [[Help:Editing|How do I start editing?]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;› [[Austenasia Wiki:Contributing|How can I become a contributor?]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;› [[Special:WantedPages|Which pages need creating?]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;› [[Special:RecentChanges|What has changed recently?]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=881</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=881"/>
		<updated>2026-09-19T20:29:51Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
.vector-header-start {&lt;br /&gt;
    padding:10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-logo-wordmark {&lt;br /&gt;
	width: 180px !important;&lt;br /&gt;
	height: auto !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .vector-search-box {&lt;br /&gt;
    margin-left: 8px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 #p-search {&lt;br /&gt;
    margin-left: 9px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Do not invert logo in dark mode */&lt;br /&gt;
.mw-logo-container {&lt;br /&gt;
	filter: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo {&lt;br /&gt;
    gap: 0px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-icon {&lt;br /&gt;
    width: 50px;&lt;br /&gt;
    height: 50px;&lt;br /&gt;
    padding: 5px;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-wordmark {&lt;br /&gt;
    width: 170px !important;&lt;br /&gt;
    height: auto !important;&lt;br /&gt;
    max-width: none !important;&lt;br /&gt;
    max-height: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* === Main Page layout === */&lt;br /&gt;
&lt;br /&gt;
.mainpage-layout {&lt;br /&gt;
    display: grid;&lt;br /&gt;
    grid-template-columns: minmax(0, 1fr) 352px;&lt;br /&gt;
    gap: 32px;&lt;br /&gt;
    align-items: start;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-content {&lt;br /&gt;
    min-width: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-intro {&lt;br /&gt;
    font-size: 16px;&lt;br /&gt;
    line-height: 1.65;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* === Right sidebar === */&lt;br /&gt;
&lt;br /&gt;
.mainpage-sidebar {&lt;br /&gt;
    width: 352px;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    font-family: sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social {&lt;br /&gt;
    min-height: 98px;&lt;br /&gt;
    display: flex;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
    padding: 0 25px;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
    color: #fff;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-discord {&lt;br /&gt;
    background: #5865f2;&lt;br /&gt;
    margin-top: 16px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-news {&lt;br /&gt;
    background: #17212b;&lt;br /&gt;
    margin-top: 16px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social-icon {&lt;br /&gt;
    width: 40px;&lt;br /&gt;
    flex: 0 0 40px;&lt;br /&gt;
    padding: 0 16px;&lt;br /&gt;
    display: flex;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social-text {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social-title {&lt;br /&gt;
    font-size: 17px;&lt;br /&gt;
    font-weight: 700;&lt;br /&gt;
    margin-bottom: 6px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social-subtitle {&lt;br /&gt;
    font-size: 14px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social-arrow {&lt;br /&gt;
    font-size: 34px;&lt;br /&gt;
    font-weight: 300;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social-label {&lt;br /&gt;
    background: #525ee0;&lt;br /&gt;
    color: #fff;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 15px 10px;&lt;br /&gt;
    font-size: 12px;&lt;br /&gt;
    font-weight: 700;&lt;br /&gt;
    letter-spacing: .4px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-news-label {&lt;br /&gt;
    background: #111a22;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* === Help panel === */&lt;br /&gt;
&lt;br /&gt;
.mainpage-help {&lt;br /&gt;
    margin-top: 14px;&lt;br /&gt;
    background: #b82025;&lt;br /&gt;
    color: #fff;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-help h2 {&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 22px 24px 8px;&lt;br /&gt;
    border: 0;&lt;br /&gt;
    color: #fff;&lt;br /&gt;
    font-family: Georgia, serif;&lt;br /&gt;
    font-size: 22px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-help p {&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0 24px 18px;&lt;br /&gt;
    font-size: 14px;&lt;br /&gt;
    line-height: 1.65;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-help-links {&lt;br /&gt;
    padding: 16px 24px 20px;&lt;br /&gt;
    background: rgba(0, 0, 0, .08);&lt;br /&gt;
    line-height: 1.8;&lt;br /&gt;
    font-size: 14px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-help-links a {&lt;br /&gt;
    color: #fff !important;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-help-links a:hover {&lt;br /&gt;
    text-decoration: underline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* === Mobile === */&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 900px) {&lt;br /&gt;
    .mainpage-layout {&lt;br /&gt;
        display: block;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .mainpage-sidebar {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        margin-top: 30px;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hatnote {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    padding-left: 1.6em;&lt;br /&gt;
    margin-bottom: 0.5em;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=880</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=880"/>
		<updated>2026-09-19T20:29:04Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
.vector-header-start {&lt;br /&gt;
    padding:10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-logo-wordmark {&lt;br /&gt;
	width: 180px !important;&lt;br /&gt;
	height: auto !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .vector-search-box {&lt;br /&gt;
    margin-left: 8px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 #p-search {&lt;br /&gt;
    margin-left: 9px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Do not invert logo in dark mode */&lt;br /&gt;
.mw-logo-container {&lt;br /&gt;
	filter: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo {&lt;br /&gt;
    gap: 0px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-icon {&lt;br /&gt;
    width: 50px;&lt;br /&gt;
    height: 50px;&lt;br /&gt;
    padding: 5px;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-wordmark {&lt;br /&gt;
    width: 170px !important;&lt;br /&gt;
    height: auto !important;&lt;br /&gt;
    max-width: none !important;&lt;br /&gt;
    max-height: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* === Main Page layout === */&lt;br /&gt;
&lt;br /&gt;
.mainpage-layout {&lt;br /&gt;
    display: grid;&lt;br /&gt;
    grid-template-columns: minmax(0, 1fr) 352px;&lt;br /&gt;
    gap: 32px;&lt;br /&gt;
    align-items: start;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-content {&lt;br /&gt;
    min-width: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-intro {&lt;br /&gt;
    font-size: 16px;&lt;br /&gt;
    line-height: 1.65;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* === Right sidebar === */&lt;br /&gt;
&lt;br /&gt;
.mainpage-sidebar {&lt;br /&gt;
    width: 352px;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    font-family: sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social {&lt;br /&gt;
    min-height: 98px;&lt;br /&gt;
    display: flex;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
    padding: 0 25px;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
    color: #fff;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-discord {&lt;br /&gt;
    background: #5865f2;&lt;br /&gt;
    margin-top: 16px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-news {&lt;br /&gt;
    background: #17212b;&lt;br /&gt;
    margin-top: 16px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social-icon {&lt;br /&gt;
    width: 52px;&lt;br /&gt;
    flex: 0 0 52px;&lt;br /&gt;
    font-size: 32px;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social-text {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social-title {&lt;br /&gt;
    font-size: 17px;&lt;br /&gt;
    font-weight: 700;&lt;br /&gt;
    margin-bottom: 6px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social-subtitle {&lt;br /&gt;
    font-size: 14px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social-arrow {&lt;br /&gt;
    font-size: 34px;&lt;br /&gt;
    font-weight: 300;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social-label {&lt;br /&gt;
    background: #525ee0;&lt;br /&gt;
    color: #fff;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 15px 10px;&lt;br /&gt;
    font-size: 12px;&lt;br /&gt;
    font-weight: 700;&lt;br /&gt;
    letter-spacing: .4px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-news-label {&lt;br /&gt;
    background: #111a22;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* === Help panel === */&lt;br /&gt;
&lt;br /&gt;
.mainpage-help {&lt;br /&gt;
    margin-top: 14px;&lt;br /&gt;
    background: #b82025;&lt;br /&gt;
    color: #fff;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-help h2 {&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 22px 24px 8px;&lt;br /&gt;
    border: 0;&lt;br /&gt;
    color: #fff;&lt;br /&gt;
    font-family: Georgia, serif;&lt;br /&gt;
    font-size: 22px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-help p {&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0 24px 18px;&lt;br /&gt;
    font-size: 14px;&lt;br /&gt;
    line-height: 1.65;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-help-links {&lt;br /&gt;
    padding: 16px 24px 20px;&lt;br /&gt;
    background: rgba(0, 0, 0, .08);&lt;br /&gt;
    line-height: 1.8;&lt;br /&gt;
    font-size: 14px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-help-links a {&lt;br /&gt;
    color: #fff !important;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-help-links a:hover {&lt;br /&gt;
    text-decoration: underline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* === Mobile === */&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 900px) {&lt;br /&gt;
    .mainpage-layout {&lt;br /&gt;
        display: block;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .mainpage-sidebar {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        margin-top: 30px;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hatnote {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    padding-left: 1.6em;&lt;br /&gt;
    margin-bottom: 0.5em;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=Main_Page&amp;diff=879</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=Main_Page&amp;diff=879"/>
		<updated>2026-09-19T20:27:36Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mainpage-layout&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-intro&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;The Austenasia Wiki&#039;&#039;&#039; is the official encyclopaedia of the [[Empire of Austenasia]]. Information concerning Austenasia published by third parties may not reflect the position of the Austenasian Government and may contain claims disputed by Austenasia&#039;s official institutions. Readers seeking authoritative information regarding Austenasian history, government, officeholders, constitutional matters, and current events should refer to this wiki and other official Austenasian publications.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Official links ==&lt;br /&gt;
* [https://austenasia.com Official Website]&lt;br /&gt;
* [https://austenasia.news Austenasian Times]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-sidebar&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social mainpage-discord&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-icon&amp;quot;&amp;gt;[[File:Discord_logo_icon.svg|40px|link=https://discord.gg/PCTyAEBEAK]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-text&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-title&amp;quot;&amp;gt;The Austenasian Community&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-subtitle&amp;quot;&amp;gt;&lt;br /&gt;
Join our Discord server!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-arrow&amp;quot;&amp;gt;›&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-label&amp;quot;&amp;gt;OFFICIAL AUSTENASIA DISCORD&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social mainpage-news&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-icon&amp;quot;&amp;gt;[[File:Austenasia-logomark-white.svg|40px|link=https://austenasia.news]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-text&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-title&amp;quot;&amp;gt;Austenasian Times&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-subtitle&amp;quot;&amp;gt;Read the latest news&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-arrow&amp;quot;&amp;gt;›&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-label mainpage-news-label&amp;quot;&amp;gt;OFFICIAL NEWS&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-help&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Help us improve&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Austenasia Wiki is maintained by invited contributors. Editors can help expand and improve our coverage of Austenasia&#039;s history, people and institutions.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-help-links&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;› [[Help:Editing|How do I start editing?]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;› [[Austenasia Wiki:Contributing|How can I become a contributor?]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;› [[Special:WantedPages|Which pages need creating?]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;› [[Special:RecentChanges|What has changed recently?]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=File:Austenasia-logomark-white.svg&amp;diff=878</id>
		<title>File:Austenasia-logomark-white.svg</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=File:Austenasia-logomark-white.svg&amp;diff=878"/>
		<updated>2026-09-19T20:27:04Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=Main_Page&amp;diff=877</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=Main_Page&amp;diff=877"/>
		<updated>2026-09-19T20:25:56Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mainpage-layout&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-intro&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;The Austenasia Wiki&#039;&#039;&#039; is the official encyclopaedia of the [[Empire of Austenasia]]. Information concerning Austenasia published by third parties may not reflect the position of the Austenasian Government and may contain claims disputed by Austenasia&#039;s official institutions. Readers seeking authoritative information regarding Austenasian history, government, officeholders, constitutional matters, and current events should refer to this wiki and other official Austenasian publications.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Official links ==&lt;br /&gt;
* [https://austenasia.com Official Website]&lt;br /&gt;
* [https://austenasia.news Austenasian Times]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-sidebar&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social mainpage-discord&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-icon&amp;quot;&amp;gt;[[File:Discord_logo_icon.svg|40px|link=https://discord.gg/PCTyAEBEAK]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-text&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-title&amp;quot;&amp;gt;The Austenasian Community&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-subtitle&amp;quot;&amp;gt;&lt;br /&gt;
Join our Discord server!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-arrow&amp;quot;&amp;gt;›&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-label&amp;quot;&amp;gt;OFFICIAL AUSTENASIA DISCORD&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social mainpage-news&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-icon&amp;quot;&amp;gt;A&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-text&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-title&amp;quot;&amp;gt;Austenasian Times&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-subtitle&amp;quot;&amp;gt;Read the latest news&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-arrow&amp;quot;&amp;gt;›&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-label mainpage-news-label&amp;quot;&amp;gt;OFFICIAL NEWS&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-help&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Help us improve&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Austenasia Wiki is maintained by invited contributors. Editors can help expand and improve our coverage of Austenasia&#039;s history, people and institutions.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-help-links&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;› [[Help:Editing|How do I start editing?]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;› [[Austenasia Wiki:Contributing|How can I become a contributor?]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;› [[Special:WantedPages|Which pages need creating?]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;› [[Special:RecentChanges|What has changed recently?]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=File:Discord_logo_icon.svg&amp;diff=876</id>
		<title>File:Discord logo icon.svg</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=File:Discord_logo_icon.svg&amp;diff=876"/>
		<updated>2026-09-19T20:23:17Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=Main_Page&amp;diff=875</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=Main_Page&amp;diff=875"/>
		<updated>2026-09-19T20:19:48Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mainpage-layout&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-intro&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;The Austenasia Wiki&#039;&#039;&#039; is the official encyclopaedia of the [[Empire of Austenasia]]. Information concerning Austenasia published by third parties may not reflect the position of the Austenasian Government and may contain claims disputed by Austenasia&#039;s official institutions. Readers seeking authoritative information regarding Austenasian history, government, officeholders, constitutional matters, and current events should refer to this wiki and other official Austenasian publications.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Official links ==&lt;br /&gt;
* [https://austenasia.com Official Website]&lt;br /&gt;
* [https://austenasia.news Austenasian Times]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-sidebar&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social mainpage-discord&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-icon&amp;quot;&amp;gt;◆&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-text&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-title&amp;quot;&amp;gt;The Austenasian Community&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-subtitle&amp;quot;&amp;gt;&lt;br /&gt;
Join our Discord server!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-arrow&amp;quot;&amp;gt;›&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-label&amp;quot;&amp;gt;OFFICIAL AUSTENASIA DISCORD&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social mainpage-news&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-icon&amp;quot;&amp;gt;A&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-text&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-title&amp;quot;&amp;gt;Austenasian Times&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-subtitle&amp;quot;&amp;gt;Read the latest news&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-arrow&amp;quot;&amp;gt;›&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-label mainpage-news-label&amp;quot;&amp;gt;OFFICIAL NEWS&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-help&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Help us improve&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Austenasia Wiki is maintained by invited contributors. Editors can help expand and improve our coverage of Austenasia&#039;s history, people and institutions.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-help-links&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;› [[Help:Editing|How do I start editing?]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;› [[Austenasia Wiki:Contributing|How can I become a contributor?]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;› [[Special:WantedPages|Which pages need creating?]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;› [[Special:RecentChanges|What has changed recently?]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=Main_Page&amp;diff=874</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=Main_Page&amp;diff=874"/>
		<updated>2026-09-19T20:19:37Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mainpage-layout&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-intro&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;The Austenasia Wiki&#039;&#039;&#039; is the official encyclopaedia of the [[Empire of Austenasia]]. Information concerning Austenasia published by third parties may not reflect the position of the Austenasian Government and may contain claims disputed by Austenasia&#039;s official institutions. Readers seeking authoritative information regarding Austenasian history, government, officeholders, constitutional matters, and current events should refer to this wiki and other official Austenasian publications.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Official links ==&lt;br /&gt;
* [https://austenasia.com Official Website]&lt;br /&gt;
* [https://austenasia.news Austenasian Times]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-sidebar&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social mainpage-discord&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-icon&amp;quot;&amp;gt;◆&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-text&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-title&amp;quot;&amp;gt;The Austenasian Community&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-subtitle&amp;quot;&amp;gt;&lt;br /&gt;
Join the official Austenasia Discord server!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-arrow&amp;quot;&amp;gt;›&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-label&amp;quot;&amp;gt;OFFICIAL AUSTENASIA DISCORD&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social mainpage-news&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-icon&amp;quot;&amp;gt;A&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-text&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-title&amp;quot;&amp;gt;Austenasian Times&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-subtitle&amp;quot;&amp;gt;Read the latest news&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-arrow&amp;quot;&amp;gt;›&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-label mainpage-news-label&amp;quot;&amp;gt;OFFICIAL NEWS&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-help&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Help us improve&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Austenasia Wiki is maintained by invited contributors. Editors can help expand and improve our coverage of Austenasia&#039;s history, people and institutions.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-help-links&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;› [[Help:Editing|How do I start editing?]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;› [[Austenasia Wiki:Contributing|How can I become a contributor?]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;› [[Special:WantedPages|Which pages need creating?]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;› [[Special:RecentChanges|What has changed recently?]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=Main_Page&amp;diff=873</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=Main_Page&amp;diff=873"/>
		<updated>2026-09-19T20:19:15Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mainpage-layout&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-intro&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;The Austenasia Wiki&#039;&#039;&#039; is the official encyclopaedia of the [[Empire of Austenasia]]. Information concerning Austenasia published by third parties may not reflect the position of the Austenasian Government and may contain claims disputed by Austenasia&#039;s official institutions. Readers seeking authoritative information regarding Austenasian history, government, officeholders, constitutional matters, and current events should refer to this wiki and other official Austenasian publications.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Official links ==&lt;br /&gt;
* [https://austenasia.com Official Website]&lt;br /&gt;
* [https://austenasia.news Austenasian Times]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-sidebar&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social mainpage-discord&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-icon&amp;quot;&amp;gt;◆&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-text&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-title&amp;quot;&amp;gt;The Austenasian Community&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-subtitle&amp;quot;&amp;gt;&lt;br /&gt;
Join the official Austenasia Discord to meet fellow Austenasians and take part in the nation’s conversation!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-arrow&amp;quot;&amp;gt;›&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-label&amp;quot;&amp;gt;OFFICIAL AUSTENASIA DISCORD&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social mainpage-news&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-icon&amp;quot;&amp;gt;A&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-text&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-title&amp;quot;&amp;gt;Austenasian Times&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-subtitle&amp;quot;&amp;gt;Read the latest news&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-arrow&amp;quot;&amp;gt;›&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-label mainpage-news-label&amp;quot;&amp;gt;OFFICIAL NEWS&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-help&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Help us improve&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Austenasia Wiki is maintained by invited contributors. Editors can help expand and improve our coverage of Austenasia&#039;s history, people and institutions.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-help-links&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;› [[Help:Editing|How do I start editing?]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;› [[Austenasia Wiki:Contributing|How can I become a contributor?]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;› [[Special:WantedPages|Which pages need creating?]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;› [[Special:RecentChanges|What has changed recently?]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=872</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=872"/>
		<updated>2026-09-19T20:18:02Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
.vector-header-start {&lt;br /&gt;
    padding:10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-logo-wordmark {&lt;br /&gt;
	width: 180px !important;&lt;br /&gt;
	height: auto !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .vector-search-box {&lt;br /&gt;
    margin-left: 8px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 #p-search {&lt;br /&gt;
    margin-left: 9px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Do not invert logo in dark mode */&lt;br /&gt;
.mw-logo-container {&lt;br /&gt;
	filter: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo {&lt;br /&gt;
    gap: 0px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-icon {&lt;br /&gt;
    width: 50px;&lt;br /&gt;
    height: 50px;&lt;br /&gt;
    padding: 5px;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-wordmark {&lt;br /&gt;
    width: 170px !important;&lt;br /&gt;
    height: auto !important;&lt;br /&gt;
    max-width: none !important;&lt;br /&gt;
    max-height: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* === Main Page layout === */&lt;br /&gt;
&lt;br /&gt;
.mainpage-layout {&lt;br /&gt;
    display: grid;&lt;br /&gt;
    grid-template-columns: minmax(0, 1fr) 352px;&lt;br /&gt;
    gap: 32px;&lt;br /&gt;
    align-items: start;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-content {&lt;br /&gt;
    min-width: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-intro {&lt;br /&gt;
    font-size: 16px;&lt;br /&gt;
    line-height: 1.65;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* === Right sidebar === */&lt;br /&gt;
&lt;br /&gt;
.mainpage-sidebar {&lt;br /&gt;
    width: 352px;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    font-family: sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social {&lt;br /&gt;
    min-height: 98px;&lt;br /&gt;
    display: flex;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
    padding: 0 24px;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
    color: #fff;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-discord {&lt;br /&gt;
    background: #5865f2;&lt;br /&gt;
    margin-top: 16px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-news {&lt;br /&gt;
    background: #17212b;&lt;br /&gt;
    margin-top: 16px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social-icon {&lt;br /&gt;
    width: 52px;&lt;br /&gt;
    flex: 0 0 52px;&lt;br /&gt;
    font-size: 32px;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social-text {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social-title {&lt;br /&gt;
    font-size: 17px;&lt;br /&gt;
    font-weight: 700;&lt;br /&gt;
    margin-bottom: 6px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social-subtitle {&lt;br /&gt;
    font-size: 14px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social-arrow {&lt;br /&gt;
    font-size: 34px;&lt;br /&gt;
    font-weight: 300;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social-label {&lt;br /&gt;
    background: #525ee0;&lt;br /&gt;
    color: #fff;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 15px 10px;&lt;br /&gt;
    font-size: 12px;&lt;br /&gt;
    font-weight: 700;&lt;br /&gt;
    letter-spacing: .4px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-news-label {&lt;br /&gt;
    background: #111a22;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* === Help panel === */&lt;br /&gt;
&lt;br /&gt;
.mainpage-help {&lt;br /&gt;
    margin-top: 14px;&lt;br /&gt;
    background: #b82025;&lt;br /&gt;
    color: #fff;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-help h2 {&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 22px 24px 8px;&lt;br /&gt;
    border: 0;&lt;br /&gt;
    color: #fff;&lt;br /&gt;
    font-family: Georgia, serif;&lt;br /&gt;
    font-size: 22px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-help p {&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0 24px 18px;&lt;br /&gt;
    font-size: 14px;&lt;br /&gt;
    line-height: 1.65;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-help-links {&lt;br /&gt;
    padding: 16px 24px 20px;&lt;br /&gt;
    background: rgba(0, 0, 0, .08);&lt;br /&gt;
    line-height: 1.8;&lt;br /&gt;
    font-size: 14px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-help-links a {&lt;br /&gt;
    color: #fff !important;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-help-links a:hover {&lt;br /&gt;
    text-decoration: underline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* === Mobile === */&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 900px) {&lt;br /&gt;
    .mainpage-layout {&lt;br /&gt;
        display: block;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .mainpage-sidebar {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        margin-top: 30px;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hatnote {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    padding-left: 1.6em;&lt;br /&gt;
    margin-bottom: 0.5em;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=Main_Page&amp;diff=871</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=Main_Page&amp;diff=871"/>
		<updated>2026-09-19T20:16:20Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mainpage-layout&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-intro&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;The Austenasia Wiki&#039;&#039;&#039; is the official encyclopaedia of the [[Empire of Austenasia]]. Information concerning Austenasia published by third parties may not reflect the position of the Austenasian Government and may contain claims disputed by Austenasia&#039;s official institutions. Readers seeking authoritative information regarding Austenasian history, government, officeholders, constitutional matters, and current events should refer to this wiki and other official Austenasian publications.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Official links ==&lt;br /&gt;
* [https://austenasia.com Official Website]&lt;br /&gt;
* [https://austenasia.news Austenasian Times]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-sidebar&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social mainpage-discord&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-icon&amp;quot;&amp;gt;◆&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-text&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-title&amp;quot;&amp;gt;The Austenasia Community&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-subtitle&amp;quot;&amp;gt;Join our Discord server!&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-arrow&amp;quot;&amp;gt;›&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-label&amp;quot;&amp;gt;OFFICIAL AUSTENASIA DISCORD&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social mainpage-news&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-icon&amp;quot;&amp;gt;A&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-text&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-title&amp;quot;&amp;gt;Austenasian Times&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-subtitle&amp;quot;&amp;gt;Read the latest news&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-arrow&amp;quot;&amp;gt;›&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-label mainpage-news-label&amp;quot;&amp;gt;OFFICIAL NEWS&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-help&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Help us improve&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Austenasia Wiki is maintained by invited contributors. Editors can help expand and improve our coverage of Austenasia&#039;s history, people and institutions.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-help-links&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;› [[Help:Editing|How do I start editing?]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;› [[Austenasia Wiki:Contributing|How can I become a contributor?]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;› [[Special:WantedPages|Which pages need creating?]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;› [[Special:RecentChanges|What has changed recently?]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=870</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=870"/>
		<updated>2026-09-19T20:15:19Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
.vector-header-start {&lt;br /&gt;
    padding:10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-logo-wordmark {&lt;br /&gt;
	width: 180px !important;&lt;br /&gt;
	height: auto !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .vector-search-box {&lt;br /&gt;
    margin-left: 8px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 #p-search {&lt;br /&gt;
    margin-left: 9px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Do not invert logo in dark mode */&lt;br /&gt;
.mw-logo-container {&lt;br /&gt;
	filter: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo {&lt;br /&gt;
    gap: 0px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-icon {&lt;br /&gt;
    width: 50px;&lt;br /&gt;
    height: 50px;&lt;br /&gt;
    padding: 5px;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-wordmark {&lt;br /&gt;
    width: 170px !important;&lt;br /&gt;
    height: auto !important;&lt;br /&gt;
    max-width: none !important;&lt;br /&gt;
    max-height: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* === Main Page layout === */&lt;br /&gt;
&lt;br /&gt;
.mainpage-layout {&lt;br /&gt;
    display: grid;&lt;br /&gt;
    grid-template-columns: minmax(0, 1fr) 352px;&lt;br /&gt;
    gap: 32px;&lt;br /&gt;
    align-items: start;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-content {&lt;br /&gt;
    min-width: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-intro {&lt;br /&gt;
    font-size: 16px;&lt;br /&gt;
    line-height: 1.65;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* === Right sidebar === */&lt;br /&gt;
&lt;br /&gt;
.mainpage-sidebar {&lt;br /&gt;
    width: 352px;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    font-family: sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social {&lt;br /&gt;
    min-height: 98px;&lt;br /&gt;
    display: flex;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
    padding: 0 24px;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
    color: #fff;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-discord {&lt;br /&gt;
    background: #b82025;&lt;br /&gt;
    margin-top: 16px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-news {&lt;br /&gt;
    background: #17212b;&lt;br /&gt;
    margin-top: 16px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social-icon {&lt;br /&gt;
    width: 52px;&lt;br /&gt;
    flex: 0 0 52px;&lt;br /&gt;
    font-size: 32px;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social-text {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social-title {&lt;br /&gt;
    font-size: 17px;&lt;br /&gt;
    font-weight: 700;&lt;br /&gt;
    margin-bottom: 6px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social-subtitle {&lt;br /&gt;
    font-size: 14px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social-arrow {&lt;br /&gt;
    font-size: 34px;&lt;br /&gt;
    font-weight: 300;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social-label {&lt;br /&gt;
    background: #9e1b20;&lt;br /&gt;
    color: #fff;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 15px 10px;&lt;br /&gt;
    font-size: 12px;&lt;br /&gt;
    font-weight: 700;&lt;br /&gt;
    letter-spacing: .4px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-news-label {&lt;br /&gt;
    background: #111a22;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* === Help panel === */&lt;br /&gt;
&lt;br /&gt;
.mainpage-help {&lt;br /&gt;
    margin-top: 14px;&lt;br /&gt;
    background: #b82025;&lt;br /&gt;
    color: #fff;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-help h2 {&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 22px 24px 8px;&lt;br /&gt;
    border: 0;&lt;br /&gt;
    color: #fff;&lt;br /&gt;
    font-family: Georgia, serif;&lt;br /&gt;
    font-size: 22px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-help p {&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0 24px 18px;&lt;br /&gt;
    font-size: 14px;&lt;br /&gt;
    line-height: 1.65;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-help-links {&lt;br /&gt;
    padding: 16px 24px 20px;&lt;br /&gt;
    background: rgba(0, 0, 0, .08);&lt;br /&gt;
    line-height: 1.8;&lt;br /&gt;
    font-size: 14px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-help-links a {&lt;br /&gt;
    color: #fff !important;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-help-links a:hover {&lt;br /&gt;
    text-decoration: underline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* === Mobile === */&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 900px) {&lt;br /&gt;
    .mainpage-layout {&lt;br /&gt;
        display: block;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .mainpage-sidebar {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        margin-top: 30px;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hatnote {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    padding-left: 1.6em;&lt;br /&gt;
    margin-bottom: 0.5em;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=869</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=869"/>
		<updated>2026-09-19T20:13:33Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
.vector-header-start {&lt;br /&gt;
    padding:10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-logo-wordmark {&lt;br /&gt;
	width: 180px !important;&lt;br /&gt;
	height: auto !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .vector-search-box {&lt;br /&gt;
    margin-left: 8px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 #p-search {&lt;br /&gt;
    margin-left: 9px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Do not invert logo in dark mode */&lt;br /&gt;
.mw-logo-container {&lt;br /&gt;
	filter: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo {&lt;br /&gt;
    gap: 0px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-icon {&lt;br /&gt;
    width: 50px;&lt;br /&gt;
    height: 50px;&lt;br /&gt;
    padding: 5px;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-wordmark {&lt;br /&gt;
    width: 170px !important;&lt;br /&gt;
    height: auto !important;&lt;br /&gt;
    max-width: none !important;&lt;br /&gt;
    max-height: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* === Main Page layout === */&lt;br /&gt;
&lt;br /&gt;
.mainpage-layout {&lt;br /&gt;
    display: grid;&lt;br /&gt;
    grid-template-columns: minmax(0, 1fr) 352px;&lt;br /&gt;
    gap: 32px;&lt;br /&gt;
    align-items: start;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-content {&lt;br /&gt;
    min-width: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-intro {&lt;br /&gt;
    font-size: 16px;&lt;br /&gt;
    line-height: 1.65;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* === Right sidebar === */&lt;br /&gt;
&lt;br /&gt;
.mainpage-sidebar {&lt;br /&gt;
    width: 352px;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    font-family: sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social {&lt;br /&gt;
    min-height: 98px;&lt;br /&gt;
    display: flex;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
    padding: 0 24px;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
    color: #fff;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-discord {&lt;br /&gt;
    background: #b82025;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-news {&lt;br /&gt;
    background: #17212b;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social-icon {&lt;br /&gt;
    width: 52px;&lt;br /&gt;
    flex: 0 0 52px;&lt;br /&gt;
    font-size: 32px;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social-text {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social-title {&lt;br /&gt;
    font-size: 17px;&lt;br /&gt;
    font-weight: 700;&lt;br /&gt;
    margin-bottom: 6px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social-subtitle {&lt;br /&gt;
    font-size: 14px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social-arrow {&lt;br /&gt;
    font-size: 34px;&lt;br /&gt;
    font-weight: 300;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-social-label {&lt;br /&gt;
    background: #9e1b20;&lt;br /&gt;
    color: #fff;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 15px 10px;&lt;br /&gt;
    font-size: 12px;&lt;br /&gt;
    font-weight: 700;&lt;br /&gt;
    letter-spacing: .4px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-news-label {&lt;br /&gt;
    background: #111a22;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* === Help panel === */&lt;br /&gt;
&lt;br /&gt;
.mainpage-help {&lt;br /&gt;
    margin-top: 14px;&lt;br /&gt;
    background: #b82025;&lt;br /&gt;
    color: #fff;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-help h2 {&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 22px 24px 8px;&lt;br /&gt;
    border: 0;&lt;br /&gt;
    color: #fff;&lt;br /&gt;
    font-family: Georgia, serif;&lt;br /&gt;
    font-size: 22px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-help p {&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0 24px 18px;&lt;br /&gt;
    font-size: 14px;&lt;br /&gt;
    line-height: 1.65;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-help-links {&lt;br /&gt;
    padding: 16px 24px 20px;&lt;br /&gt;
    background: rgba(0, 0, 0, .08);&lt;br /&gt;
    line-height: 1.8;&lt;br /&gt;
    font-size: 14px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-help-links a {&lt;br /&gt;
    color: #fff !important;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mainpage-help-links a:hover {&lt;br /&gt;
    text-decoration: underline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* === Mobile === */&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 900px) {&lt;br /&gt;
    .mainpage-layout {&lt;br /&gt;
        display: block;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .mainpage-sidebar {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        margin-top: 30px;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hatnote {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    padding-left: 1.6em;&lt;br /&gt;
    margin-bottom: 0.5em;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=Main_Page&amp;diff=868</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=Main_Page&amp;diff=868"/>
		<updated>2026-09-19T20:13:10Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mainpage-layout&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-intro&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;The Austenasia Wiki&#039;&#039;&#039; is the official encyclopaedia of the [[Empire of Austenasia]]. Information concerning Austenasia published by third parties may not reflect the position of the Austenasian Government and may contain claims disputed by Austenasia&#039;s official institutions. Readers seeking authoritative information regarding Austenasian history, government, officeholders, constitutional matters, and current events should refer to this wiki and other official Austenasian publications.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Official links ==&lt;br /&gt;
* [https://austenasia.com Official Website]&lt;br /&gt;
* [https://austenasia.news Austenasian Times]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-sidebar&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social mainpage-discord&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-icon&amp;quot;&amp;gt;◆&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-text&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-title&amp;quot;&amp;gt;The Austenasia Community&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-subtitle&amp;quot;&amp;gt;Join our Discord server!&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-arrow&amp;quot;&amp;gt;›&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-label&amp;quot;&amp;gt;OFFICIAL AUSTENASIA DISCORD&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social mainpage-news&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-icon&amp;quot;&amp;gt;A&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-text&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-title&amp;quot;&amp;gt;Austenasian Times&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-subtitle&amp;quot;&amp;gt;Read the latest news&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-arrow&amp;quot;&amp;gt;›&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-social-label mainpage-news-label&amp;quot;&amp;gt;OFFICIAL NEWS&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-help&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Help us improve&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Anyone can edit Austenasia Wiki! Help us expand and improve our coverage of Austenasia&#039;s history, people and institutions.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage-help-links&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;› [[Help:Editing|How do I start editing?]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;› [[Austenasia Wiki:Help|Where can I ask for help?]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;› [[Special:WantedPages|Which pages need creating?]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;› [[Special:RecentChanges|What has changed recently?]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=867</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=867"/>
		<updated>2026-09-19T20:11:05Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
.vector-header-start {&lt;br /&gt;
    padding:10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-logo-wordmark {&lt;br /&gt;
	width: 180px !important;&lt;br /&gt;
	height: auto !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .vector-search-box {&lt;br /&gt;
    margin-left: 8px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 #p-search {&lt;br /&gt;
    margin-left: 9px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Do not invert logo in dark mode */&lt;br /&gt;
.mw-logo-container {&lt;br /&gt;
	filter: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo {&lt;br /&gt;
    gap: 0px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-icon {&lt;br /&gt;
    width: 50px;&lt;br /&gt;
    height: 50px;&lt;br /&gt;
    padding: 5px;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-wordmark {&lt;br /&gt;
    width: 170px !important;&lt;br /&gt;
    height: auto !important;&lt;br /&gt;
    max-width: none !important;&lt;br /&gt;
    max-height: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hatnote {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    padding-left: 1.6em;&lt;br /&gt;
    margin-bottom: 0.5em;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=866</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=866"/>
		<updated>2026-09-19T20:10:18Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
.vector-header-start {&lt;br /&gt;
    padding:10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-logo-wordmark {&lt;br /&gt;
	width: 180px !important;&lt;br /&gt;
	height: auto !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .vector-search-box {&lt;br /&gt;
    margin-left: 8px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 #p-search {&lt;br /&gt;
    margin-left: 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Do not invert logo in dark mode */&lt;br /&gt;
.mw-logo-container {&lt;br /&gt;
	filter: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo {&lt;br /&gt;
    gap: 0px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-icon {&lt;br /&gt;
    width: 50px;&lt;br /&gt;
    height: 50px;&lt;br /&gt;
    padding: 5px;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-wordmark {&lt;br /&gt;
    width: 170px !important;&lt;br /&gt;
    height: auto !important;&lt;br /&gt;
    max-width: none !important;&lt;br /&gt;
    max-height: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hatnote {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    padding-left: 1.6em;&lt;br /&gt;
    margin-bottom: 0.5em;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=865</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=865"/>
		<updated>2026-09-19T20:09:39Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
.vector-header-start {&lt;br /&gt;
    padding:10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-logo-wordmark {&lt;br /&gt;
	width: 180px !important;&lt;br /&gt;
	height: auto !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .vector-search-box {&lt;br /&gt;
    margin-left: 8px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 #p-search {&lt;br /&gt;
    margin-left: 32px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Do not invert logo in dark mode */&lt;br /&gt;
.mw-logo-container {&lt;br /&gt;
	filter: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo {&lt;br /&gt;
    gap: 0px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-icon {&lt;br /&gt;
    width: 50px;&lt;br /&gt;
    height: 50px;&lt;br /&gt;
    padding: 5px;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-wordmark {&lt;br /&gt;
    width: 170px !important;&lt;br /&gt;
    height: auto !important;&lt;br /&gt;
    max-width: none !important;&lt;br /&gt;
    max-height: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hatnote {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    padding-left: 1.6em;&lt;br /&gt;
    margin-bottom: 0.5em;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=864</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=864"/>
		<updated>2026-09-19T20:08:50Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
.vector-header-start {&lt;br /&gt;
    padding:10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-logo-wordmark {&lt;br /&gt;
	width: 180px !important;&lt;br /&gt;
	height: auto !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .vector-search-box {&lt;br /&gt;
    margin-left: 32px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 #p-search {&lt;br /&gt;
    margin-left: 32px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Do not invert logo in dark mode */&lt;br /&gt;
.mw-logo-container {&lt;br /&gt;
	filter: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo {&lt;br /&gt;
    gap: 0px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-icon {&lt;br /&gt;
    width: 50px;&lt;br /&gt;
    height: 50px;&lt;br /&gt;
    padding: 5px;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-wordmark {&lt;br /&gt;
    width: 170px !important;&lt;br /&gt;
    height: auto !important;&lt;br /&gt;
    max-width: none !important;&lt;br /&gt;
    max-height: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hatnote {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    padding-left: 1.6em;&lt;br /&gt;
    margin-bottom: 0.5em;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=863</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=863"/>
		<updated>2026-09-19T20:08:36Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
.vector-header-start {&lt;br /&gt;
    padding:10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-logo-wordmark {&lt;br /&gt;
	width: 180px !important;&lt;br /&gt;
	height: auto !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .vector-search-box {&lt;br /&gt;
    margin-left: 32px;&lt;br /&gt;
}&lt;br /&gt;
/* Do not invert logo in dark mode */&lt;br /&gt;
.mw-logo-container {&lt;br /&gt;
	filter: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo {&lt;br /&gt;
    gap: 0px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-icon {&lt;br /&gt;
    width: 50px;&lt;br /&gt;
    height: 50px;&lt;br /&gt;
    padding: 5px;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-wordmark {&lt;br /&gt;
    width: 170px !important;&lt;br /&gt;
    height: auto !important;&lt;br /&gt;
    max-width: none !important;&lt;br /&gt;
    max-height: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hatnote {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    padding-left: 1.6em;&lt;br /&gt;
    margin-bottom: 0.5em;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=Johannes_Karl&amp;diff=862</id>
		<title>Johannes Karl</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=Johannes_Karl&amp;diff=862"/>
		<updated>2026-09-19T20:05:36Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: Redirected page to Johannes Karl I Augustus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Johannes Karl I Augustus]]&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=861</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=861"/>
		<updated>2026-09-19T20:02:31Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
.vector-header-start {&lt;br /&gt;
    padding:10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-logo-wordmark {&lt;br /&gt;
	width: 180px !important;&lt;br /&gt;
	height: auto !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Do not invert logo in dark mode */&lt;br /&gt;
.mw-logo-container {&lt;br /&gt;
	filter: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo {&lt;br /&gt;
    gap: 0px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-icon {&lt;br /&gt;
    width: 50px;&lt;br /&gt;
    height: 50px;&lt;br /&gt;
    padding: 5px;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-wordmark {&lt;br /&gt;
    width: 170px !important;&lt;br /&gt;
    height: auto !important;&lt;br /&gt;
    max-width: none !important;&lt;br /&gt;
    max-height: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hatnote {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    padding-left: 1.6em;&lt;br /&gt;
    margin-bottom: 0.5em;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=860</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=860"/>
		<updated>2026-09-19T20:01:03Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
.mw-logo-wordmark {&lt;br /&gt;
	width: 180px !important;&lt;br /&gt;
	height: auto !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Do not invert logo in dark mode */&lt;br /&gt;
.mw-logo-container {&lt;br /&gt;
	filter: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo {&lt;br /&gt;
    gap: 0px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-icon {&lt;br /&gt;
    width: 50px;&lt;br /&gt;
    height: 50px;&lt;br /&gt;
    padding: 5px;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-wordmark {&lt;br /&gt;
    width: 170px !important;&lt;br /&gt;
    height: auto !important;&lt;br /&gt;
    max-width: none !important;&lt;br /&gt;
    max-height: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hatnote {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    padding-left: 1.6em;&lt;br /&gt;
    margin-bottom: 0.5em;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=859</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=859"/>
		<updated>2026-09-19T20:00:47Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
.mw-logo-wordmark {&lt;br /&gt;
	width: 180px !important;&lt;br /&gt;
	height: auto !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Do not invert logo in dark mode */&lt;br /&gt;
#.mw-logo-container {&lt;br /&gt;
	filter: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo {&lt;br /&gt;
    gap: 0px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-icon {&lt;br /&gt;
    width: 50px;&lt;br /&gt;
    height: 50px;&lt;br /&gt;
    padding: 5px;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-wordmark {&lt;br /&gt;
    width: 170px !important;&lt;br /&gt;
    height: auto !important;&lt;br /&gt;
    max-width: none !important;&lt;br /&gt;
    max-height: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hatnote {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    padding-left: 1.6em;&lt;br /&gt;
    margin-bottom: 0.5em;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=858</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=858"/>
		<updated>2026-09-19T20:00:34Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
.mw-logo-wordmark {&lt;br /&gt;
	width: 180px !important;&lt;br /&gt;
	height: auto !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Do not invert logo in dark mode */&lt;br /&gt;
.mw-logo-container {&lt;br /&gt;
	filter: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo {&lt;br /&gt;
    gap: 0px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-icon {&lt;br /&gt;
    width: 50px;&lt;br /&gt;
    height: 50px;&lt;br /&gt;
    padding: 5px;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-wordmark {&lt;br /&gt;
    width: 170px !important;&lt;br /&gt;
    height: auto !important;&lt;br /&gt;
    max-width: none !important;&lt;br /&gt;
    max-height: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hatnote {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    padding-left: 1.6em;&lt;br /&gt;
    margin-bottom: 0.5em;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=857</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=857"/>
		<updated>2026-09-19T20:00:13Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
.mw-logo-wordmark {&lt;br /&gt;
	width: 180px !important;&lt;br /&gt;
	height: auto !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Do not invert logo in dark mode */&lt;br /&gt;
.mw-logo-container {&lt;br /&gt;
	filter: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo {&lt;br /&gt;
    gap: 0px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-icon {&lt;br /&gt;
    width: 50px;&lt;br /&gt;
    height: 50px;&lt;br /&gt;
    padding: 5px;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-wordmark {&lt;br /&gt;
    width: 170px !important;&lt;br /&gt;
    height: auto !important;&lt;br /&gt;
    max-width: none !important;&lt;br /&gt;
    max-height: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hatnote {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    padding-left: 1.6em;&lt;br /&gt;
    margin-bottom: 0.5em;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=856</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=856"/>
		<updated>2026-09-19T19:58:58Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo {&lt;br /&gt;
    gap: 0px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-icon {&lt;br /&gt;
    width: 50px;&lt;br /&gt;
    height: 50px;&lt;br /&gt;
    padding: 5px;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-wordmark {&lt;br /&gt;
    width: 170px !important;&lt;br /&gt;
    height: auto !important;&lt;br /&gt;
    max-width: none !important;&lt;br /&gt;
    max-height: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hatnote {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    padding-left: 1.6em;&lt;br /&gt;
    margin-bottom: 0.5em;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=855</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=855"/>
		<updated>2026-09-19T19:58:28Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo {&lt;br /&gt;
    gap: 0px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-icon {&lt;br /&gt;
    width: 50px;&lt;br /&gt;
    height: 50px;&lt;br /&gt;
    padding: 4px;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-wordmark {&lt;br /&gt;
    width: 200px !important;&lt;br /&gt;
    height: auto !important;&lt;br /&gt;
    max-width: none !important;&lt;br /&gt;
    max-height: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hatnote {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    padding-left: 1.6em;&lt;br /&gt;
    margin-bottom: 0.5em;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=854</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=854"/>
		<updated>2026-09-19T19:58:12Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo {&lt;br /&gt;
    gap: 0px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-icon {&lt;br /&gt;
    width: 50px;&lt;br /&gt;
    height: 50px;&lt;br /&gt;
    padding: 4px;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-wordmark {&lt;br /&gt;
    width: 170px !important;&lt;br /&gt;
    height: auto !important;&lt;br /&gt;
    max-width: none !important;&lt;br /&gt;
    max-height: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hatnote {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    padding-left: 1.6em;&lt;br /&gt;
    margin-bottom: 0.5em;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=853</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=853"/>
		<updated>2026-09-19T19:57:43Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo {&lt;br /&gt;
    gap: 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-icon {&lt;br /&gt;
    width: 50px;&lt;br /&gt;
    height: 50px;&lt;br /&gt;
    padding: 4px;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-wordmark {&lt;br /&gt;
    width: 170px !important;&lt;br /&gt;
    height: auto !important;&lt;br /&gt;
    max-width: none !important;&lt;br /&gt;
    max-height: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hatnote {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    padding-left: 1.6em;&lt;br /&gt;
    margin-bottom: 0.5em;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=852</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=852"/>
		<updated>2026-09-19T19:57:24Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo {&lt;br /&gt;
    gap: 24px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-icon {&lt;br /&gt;
    width: 50px;&lt;br /&gt;
    height: 50px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-wordmark {&lt;br /&gt;
    width: 170px !important;&lt;br /&gt;
    height: auto !important;&lt;br /&gt;
    max-width: none !important;&lt;br /&gt;
    max-height: none !important;&lt;br /&gt;
}&lt;br /&gt;
.hatnote {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    padding-left: 1.6em;&lt;br /&gt;
    margin-bottom: 0.5em;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=851</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=851"/>
		<updated>2026-09-19T19:56:28Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo {&lt;br /&gt;
    gap: 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-icon {&lt;br /&gt;
    width: 50px;&lt;br /&gt;
    height: 50px;&lt;br /&gt;
    padding: 4px;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-wordmark {&lt;br /&gt;
    width: 170px !important;&lt;br /&gt;
    height: auto !important;&lt;br /&gt;
    max-width: none !important;&lt;br /&gt;
    max-height: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hatnote {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    padding-left: 1.6em;&lt;br /&gt;
    margin-bottom: 0.5em;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=850</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=850"/>
		<updated>2026-09-19T19:55:48Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo {&lt;br /&gt;
    gap: 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-icon {&lt;br /&gt;
    width: 50px;&lt;br /&gt;
    height: 50px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-wordmark {&lt;br /&gt;
    width: 170px !important;&lt;br /&gt;
    height: auto !important;&lt;br /&gt;
    max-width: none !important;&lt;br /&gt;
    max-height: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hatnote {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    padding-left: 1.6em;&lt;br /&gt;
    margin-bottom: 0.5em;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=849</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=849"/>
		<updated>2026-09-19T19:55:00Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo {&lt;br /&gt;
    gap: 12px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-icon {&lt;br /&gt;
    width: 50px;&lt;br /&gt;
    height: 50px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-wordmark {&lt;br /&gt;
    width: 300px !important;&lt;br /&gt;
    height: auto !important;&lt;br /&gt;
    max-width: none !important;&lt;br /&gt;
    max-height: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hatnote {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    padding-left: 1.6em;&lt;br /&gt;
    margin-bottom: 0.5em;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=848</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=848"/>
		<updated>2026-09-19T19:54:19Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
/* Austenasia logo — Vector 2022 */&lt;br /&gt;
.skin-vector-2022 .mw-logo {&lt;br /&gt;
    gap: 12px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-icon {&lt;br /&gt;
    width: 50px;&lt;br /&gt;
    height: 50px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-vector-2022 .mw-logo-wordmark {&lt;br /&gt;
    width: 124px !important;&lt;br /&gt;
    height: 32px !important;&lt;br /&gt;
    max-width: none;&lt;br /&gt;
    max-height: none;&lt;br /&gt;
    object-fit: contain;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hatnote {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    padding-left: 1.6em;&lt;br /&gt;
    margin-bottom: 0.5em;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=847</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=MediaWiki:Common.css&amp;diff=847"/>
		<updated>2026-09-19T19:53:40Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
.mw-logo {&lt;br /&gt;
    gap: 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-logo-wordmark {&lt;br /&gt;
    width: 124px;&lt;br /&gt;
    height: auto;&lt;br /&gt;
    max-height: 32px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hatnote {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    padding-left: 1.6em;&lt;br /&gt;
    margin-bottom: 0.5em;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=Module:Deprecated&amp;diff=846</id>
		<title>Module:Deprecated</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=Module:Deprecated&amp;diff=846"/>
		<updated>2026-09-18T17:39:12Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--- Marks items as deprecated, and provides a warning when they are called.&lt;br /&gt;
--&lt;br /&gt;
-- ## Limitations ##&lt;br /&gt;
-- This module will not provide a warning if a deprecated item is called from&lt;br /&gt;
-- within the same module that this module is used.&lt;br /&gt;
--&lt;br /&gt;
-- @release alpha&lt;br /&gt;
-- @author [[User:Awesome_Aasim|Awesome Aasim]]&lt;br /&gt;
-- @function deprecated&lt;br /&gt;
-- @param {table} p package frame&lt;br /&gt;
-- @param deprecatedTable &lt;br /&gt;
-- @return package&lt;br /&gt;
&lt;br /&gt;
return function(p, deprecatedTable, replacement)&lt;br /&gt;
	local pckg = {}&lt;br /&gt;
	--- Warn&lt;br /&gt;
	-- @param {string} text warning text&lt;br /&gt;
	function warn(text)&lt;br /&gt;
		local tb = debug.traceback()&lt;br /&gt;
		mw.log(text .. &#039;\n&#039; .. tb)&lt;br /&gt;
		mw.addWarning(text .. tb:gsub(&amp;quot;\n&amp;quot;, &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;):gsub(&amp;quot;\t&amp;quot;, &amp;quot;&amp;amp;emsp;&amp;quot;))&lt;br /&gt;
	end&lt;br /&gt;
	if deprecatedTable == nil or deprecatedTable == true then&lt;br /&gt;
		deprecatedTable = {}&lt;br /&gt;
		for k,_ in pairs(p) do&lt;br /&gt;
			deprecatedTable[k] = {&lt;br /&gt;
				deprecated = true,&lt;br /&gt;
				replacement = replacement or &amp;quot;&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	setmetatable(pckg, {&lt;br /&gt;
		__index = function(t, index)&lt;br /&gt;
			if deprecatedTable[index] and deprecatedTable[index][&amp;quot;deprecated&amp;quot;] then&lt;br /&gt;
				warn(&lt;br /&gt;
					mw.ustring.format(&lt;br /&gt;
						&amp;quot;Deprecated member &amp;lt;code&amp;gt;%s&amp;lt;/code&amp;gt; called. &amp;quot;, index&lt;br /&gt;
					) .. (&lt;br /&gt;
						deprecatedTable[index][&amp;quot;replacement&amp;quot;]&lt;br /&gt;
						and mw.ustring.format(&amp;quot;Please %s instead.&amp;quot;, deprecatedTable[index][&amp;quot;replacement&amp;quot;])&lt;br /&gt;
						or &#039;&#039;&lt;br /&gt;
					)&lt;br /&gt;
				)&lt;br /&gt;
			end&lt;br /&gt;
			return p[index]&lt;br /&gt;
		end&lt;br /&gt;
	})&lt;br /&gt;
	return pckg&lt;br /&gt;
end&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=Module:Docbunto/infobox&amp;diff=844</id>
		<title>Module:Docbunto/infobox</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=Module:Docbunto/infobox&amp;diff=844"/>
		<updated>2026-09-18T17:39:12Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--- Infobox for Lua modules.&lt;br /&gt;
--  @script			 infobox&lt;br /&gt;
--  @param			 {table} data Taglet documentation data.&lt;br /&gt;
--  @param			 {string} codepage Code page name.&lt;br /&gt;
--  @param			 {table} frame Template invocation frame.&lt;br /&gt;
--  @param			 {table} options Docbunto configuration options.&lt;br /&gt;
--  @return			 {string} Infobox wikitext.&lt;br /&gt;
return function(data, codepage, frame, options, title, maybe_md)&lt;br /&gt;
	local module_rating_box = {}&lt;br /&gt;
	if data.info and data.info[&#039;release&#039;] then&lt;br /&gt;
		module_rating_box.title = &#039;Module rating&#039;&lt;br /&gt;
		module_rating_box.args = {}&lt;br /&gt;
		module_rating_box.args[1] = data.info[&#039;release&#039;]&lt;br /&gt;
	end&lt;br /&gt;
	local statusHeader = &#039;&#039;&lt;br /&gt;
	if module_rating_box.title then&lt;br /&gt;
		statusHeader = data.info and data.info[&#039;release&#039;]&lt;br /&gt;
			and frame:expandTemplate{&lt;br /&gt;
				title = module_rating_box.title,&lt;br /&gt;
				args = module_rating_box.args&lt;br /&gt;
			} or &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local modules = data.info and data.info[&#039;require&#039;] and mw.text.split(data.info[&#039;require&#039;]&lt;br /&gt;
			:gsub(&#039;^[^[%s]+$&#039;, &#039;%1&#039;)&lt;br /&gt;
			:gsub(&#039;%* ([^[%s]+)&#039;, &#039;%1&#039;), &#039;\n&#039;) or {}&lt;br /&gt;
	for k,v in ipairs(modules) do&lt;br /&gt;
		modules[k] = v&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local dependencies = &#039;&#039;&lt;br /&gt;
	if #modules ~= 0 then&lt;br /&gt;
		dependencies = require(&amp;quot;Module:Lua banner&amp;quot;).renderBox(modules)&lt;br /&gt;
	end&lt;br /&gt;
	if not options.autodoc then&lt;br /&gt;
		dependencies = &#039;&#039;&lt;br /&gt;
		statusHeader = &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local infobox = {}&lt;br /&gt;
	infobox.title = &#039;Infobox Lua&#039;&lt;br /&gt;
	infobox.args = {}&lt;br /&gt;
	if codepage ~= mw.text.split(title.text, &#039;/&#039;)[2] then&lt;br /&gt;
		infobox.args[&#039;title&#039;] = codepage&lt;br /&gt;
		infobox.args[&#039;code&#039;] = codepage&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if options.image or ( data.info and data.info[&#039;image&#039;] ) then&lt;br /&gt;
		infobox.args[&#039;image file&#039;] = data.info[&#039;image&#039;]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if options.caption or ( data.info and data.info[&#039;caption&#039;] ) then&lt;br /&gt;
		infobox.args[&#039;image caption&#039;] = frame:preprocess(maybe_md(&lt;br /&gt;
			options.caption or data.info[&#039;caption&#039;]&lt;br /&gt;
		))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	infobox.args[&#039;type&#039;] = data.type == &#039;module&#039; and &#039;invocable&#039; or &#039;meta&#039;&lt;br /&gt;
&lt;br /&gt;
	if data.info and data.info[&#039;release&#039;] then&lt;br /&gt;
		infobox.args[&#039;status&#039;] = data.info and data.info[&#039;release&#039;]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if data.summary then&lt;br /&gt;
		local description = data.summary&lt;br /&gt;
		if description:find(&#039;^(&#039; .. codepage .. &#039;)&#039;) then&lt;br /&gt;
			description = description:gsub(&#039;^&#039; .. codepage .. &#039;%s(%w)&#039;, mw.ustring.upper)&lt;br /&gt;
		end&lt;br /&gt;
		infobox.args[&#039;description&#039;] = frame:preprocess(maybe_md(description))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if data.info and data.info[&#039;author&#039;] then&lt;br /&gt;
		infobox.args[&#039;author&#039;] = frame:preprocess(maybe_md(data.info[&#039;author&#039;]))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if data.info and data.info[&#039;attribution&#039;] then&lt;br /&gt;
		infobox.args[&#039;using code by&#039;] = frame:preprocess(maybe_md(data.info[&#039;attribution&#039;]))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if data.info and data.info[&#039;credit&#039;] then&lt;br /&gt;
		infobox.args[&#039;other attribution&#039;] = frame:preprocess(maybe_md(data.info[&#039;credit&#039;]))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if data.info and data.info[&#039;license&#039;] then&lt;br /&gt;
		infobox.args[&#039;license&#039;] = frame:preprocess(maybe_md(data.info[&#039;license&#039;]))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if data.info and data.info[&#039;require&#039;] then&lt;br /&gt;
		local req = data.info[&#039;require&#039;]&lt;br /&gt;
			:gsub(&#039;^[^[%s]+$&#039;, &#039;[[%1]]&#039;)&lt;br /&gt;
			:gsub(&#039;%* ([^[%s]+)&#039;, &#039;* [[%1]]&#039;)&lt;br /&gt;
		infobox.args[&#039;dependencies&#039;] = frame:preprocess(maybe_md(req))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if codepage ~= &#039;I18n&#039; and data.code:find(&#039;[\&#039;&amp;quot;]Module:I18n[\&#039;&amp;quot;]&#039;) then&lt;br /&gt;
		infobox.args[&#039;languages&#039;] = &#039;auto&#039;&lt;br /&gt;
	elseif data.code:find(&#039;mw%.message%.new&#039;) then&lt;br /&gt;
		infobox.args[&#039;languages&#039;] = &#039;mw&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if data.info and data.info[&#039;demo&#039;] then&lt;br /&gt;
		infobox.args[&#039;examples&#039;] = frame:preprocess(maybe_md(data.info[&#039;demo&#039;]))&lt;br /&gt;
	end&lt;br /&gt;
	return statusHeader .. dependencies .. frame:expandTemplate(infobox)&lt;br /&gt;
end&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=Template:Lua_autodoc&amp;diff=842</id>
		<title>Template:Lua autodoc</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=Template:Lua_autodoc&amp;diff=842"/>
		<updated>2026-09-18T17:39:12Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#invoke:Docbunto|main}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=Template:Infobox_Lua&amp;diff=840</id>
		<title>Template:Infobox Lua</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=Template:Infobox_Lua&amp;diff=840"/>
		<updated>2026-09-18T17:39:12Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox &lt;br /&gt;
 | bodyclass    = infobox-lua&lt;br /&gt;
 | bodystyle    = {{#ifeq: {{{styled|}}} | yes | border: 2px ridge #CAE1FF; width: 30em; padding-bottom: 0px; | &amp;lt;!-- nothing --&amp;gt; }} {{{bodystyle|}}}&lt;br /&gt;
 &lt;br /&gt;
 | title        = {{{title|{{PAGENAME}}}}}&lt;br /&gt;
 | above        = {{#ifeq: {{{styled|}}} | yes | {{{name|{{SUBPAGENAME}}}}}  | &amp;lt;!-- nothing --&amp;gt; }}&lt;br /&gt;
&lt;br /&gt;
 | titlestyle   = {{#ifeq: {{{styled|}}} | yes | font-size: 0.95em; padding: 0px; margin: 0px | &amp;lt;!-- nothing --&amp;gt; }}&lt;br /&gt;
 | abovestyle   = {{#ifeq: {{{styled|}}} | yes | background:#83C5DA; padding: 3px 0px | &amp;lt;!-- nothing --&amp;gt; }}&lt;br /&gt;
 | labelstyle   = {{#ifeq: {{{styled|}}} | yes | background:#DFEFFF; padding: 0px 7px; vertical-align: middle | &amp;lt;!-- nothing --&amp;gt; }}&lt;br /&gt;
 | datastyle    = {{#ifeq: {{{styled|}}} | yes | padding: 5px 5px; | &amp;lt;!-- nothing --&amp;gt; }}&lt;br /&gt;
&lt;br /&gt;
 | image        = {{{image|}}}&lt;br /&gt;
 | caption      = {{{caption|}}}&lt;br /&gt;
&lt;br /&gt;
 | label1       = Description&lt;br /&gt;
 | data1        = {{{description|}}}&lt;br /&gt;
&lt;br /&gt;
 | label2       = Author(s)&lt;br /&gt;
 | data2        = {{{author|}}}&lt;br /&gt;
&lt;br /&gt;
 | label3       = Code source&lt;br /&gt;
 | data3        = {{#if:{{{code|}}}|{{#ifeq:{{{code|}}}|{{{title|{{PAGENAME}}}}}||[[Module:{{{code|}}}]]}}}}&lt;br /&gt;
&lt;br /&gt;
 | label4       = Status&lt;br /&gt;
 | data4        = {{#switch: {{lc:{{{status|}}}}}&lt;br /&gt;
   | pre-alpha | prealpha | pa | experimental = &amp;lt;div style=&amp;quot;background-color:orangered;color:white;text-align:center;padding:3px;&amp;quot;&amp;gt;Experimental&amp;lt;/div&amp;gt;&lt;br /&gt;
   | alpha | a                 = &amp;lt;div style=&amp;quot;background-color:orange;color:white;text-align:center;padding:3px;&amp;quot;&amp;gt;Alpha&amp;lt;/div&amp;gt;&lt;br /&gt;
   | beta | b                  = &amp;lt;div style=&amp;quot;background-color:yellow;color:black;text-align:center;padding:3px;&amp;quot;&amp;gt;Beta&amp;lt;/div&amp;gt;&lt;br /&gt;
   | release | r | general | g | stable = &amp;lt;div style=&amp;quot;background-color:green;color:white;text-align:center;padding:3px;&amp;quot;&amp;gt;Release&amp;lt;/div&amp;gt;&lt;br /&gt;
   | broken | br | unstable = &amp;lt;div style=&amp;quot;background-color:red;color:white;text-align:center;padding:3px;&amp;quot;&amp;gt;Broken&amp;lt;/div&amp;gt;&lt;br /&gt;
   | deprecated | d | defunct = &amp;lt;div style=&amp;quot;background-color:darkred;color:white;text-align:center;padding:3px;&amp;quot;&amp;gt;Deprecated&amp;lt;/div&amp;gt;&lt;br /&gt;
   | #default = &amp;lt;div style=&amp;quot;background-color:gray;color:white;text-align:center;padding:3px;&amp;quot;&amp;gt;Unknown&amp;lt;/div&amp;gt;&lt;br /&gt;
  }}&lt;br /&gt;
 | label5       = Testcase Status&lt;br /&gt;
 | data5        = {{#ifexist:Module:{{{source|{{{title|{{PAGENAME}}}}}}}}/testcases|{{#switch:{{#invoke:{{{source|{{{title|{{PAGENAME}}}}}}}}/testcases|run|displayMode=enum}}&lt;br /&gt;
 | fail = &amp;lt;div style=&amp;quot;background-color:red;color:white;text-align:center;padding:3px;&amp;quot;&amp;gt;[[{{TALKPAGENAME:Module:{{{source|{{{title|{{PAGENAME}}}}}}}}/testcases}}|&amp;lt;span style=&amp;quot;background-color:red;color:white;text-align:center;&amp;quot;&amp;gt;Errors&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&lt;br /&gt;
 | skipped = &amp;lt;div style=&amp;quot;background-color:gray;color:black;text-align:center;padding:3px;&amp;quot;&amp;gt;[[{{TALKPAGENAME:Module:{{{source|{{{title|{{PAGENAME}}}}}}}}/testcases}}|&amp;lt;span style=&amp;quot;background-color:gray;color:black;text-align:center;&amp;quot;&amp;gt;Skipped&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&lt;br /&gt;
 | success = &amp;lt;div style=&amp;quot;background-color:green;color:white;text-align:center;padding:3px;&amp;quot;&amp;gt;[[{{TALKPAGENAME:Module:{{{source|{{{title|{{PAGENAME}}}}}}}}/testcases}}|&amp;lt;span style=&amp;quot;background-color:green;color:white;text-align:center;&amp;quot;&amp;gt;Passed&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&lt;br /&gt;
   | #default = &amp;lt;div style=&amp;quot;background-color:gray;color:white;text-align:center;padding:3px;&amp;quot;&amp;gt;Unknown&amp;lt;/div&amp;gt;&lt;br /&gt;
 }}}}&lt;br /&gt;
 | label6       = Version&lt;br /&gt;
 | data6        = {{{version|}}}&lt;br /&gt;
&lt;br /&gt;
 | label7       = Updated&lt;br /&gt;
 | data7        = {{#time:F j, Y|{{{updated|{{REVISIONTIMESTAMP:Module:{{{source|{{{title|{{PAGENAME}}}}}}}}}}}}}}} ({{time ago|1={{{updated|{{REVISIONTIMESTAMP:Module:{{{source|{{{title|{{PAGENAME}}}}}}}}}}}}}}})&lt;br /&gt;
&lt;br /&gt;
 | label8       = Dependencies&lt;br /&gt;
 | data8        = {{{dependencies|}}}&lt;br /&gt;
&lt;br /&gt;
 | label9       = Skins&lt;br /&gt;
 | data9        = {{{skins|}}}&lt;br /&gt;
&lt;br /&gt;
 | label10      = Using code by&lt;br /&gt;
 | data10       = {{{using code by|}}}&lt;br /&gt;
 &lt;br /&gt;
 | label11      = License&lt;br /&gt;
 | data11       = {{{license|}}}&lt;br /&gt;
&lt;br /&gt;
 | label12      = Other attribution&lt;br /&gt;
 | data12       = {{{other attribution|}}}&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=Module:Unindent&amp;diff=838</id>
		<title>Module:Unindent</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=Module:Unindent&amp;diff=838"/>
		<updated>2026-09-18T17:39:12Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--[[&lt;br /&gt;
    Copyright (c) 2013 Enrique García Cota&lt;br /&gt;
    &lt;br /&gt;
    Permission is hereby granted, free of charge, to any person obtaining a&lt;br /&gt;
    copy of this software and associated documentation files (the&lt;br /&gt;
    &amp;quot;Software&amp;quot;), to deal in the Software without restriction, including&lt;br /&gt;
    without limitation the rights to use, copy, modify, merge, publish,&lt;br /&gt;
    distribute, sublicense, and/or sell copies of the Software, and to&lt;br /&gt;
    permit persons to whom the Software is furnished to do so, subject to&lt;br /&gt;
    the following conditions:&lt;br /&gt;
    &lt;br /&gt;
    The above copyright notice and this permission notice shall be included&lt;br /&gt;
    in all copies or substantial portions of the Software.&lt;br /&gt;
    &lt;br /&gt;
    THE SOFTWARE IS PROVIDED &amp;quot;AS IS&amp;quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS&lt;br /&gt;
    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF&lt;br /&gt;
    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.&lt;br /&gt;
    IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY&lt;br /&gt;
    CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,&lt;br /&gt;
    TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE&lt;br /&gt;
    SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.&lt;br /&gt;
--]]&lt;br /&gt;
-- &amp;lt;nowiki&amp;gt;&lt;br /&gt;
--- Unindent resets the indentation level of mulitline strings.&lt;br /&gt;
--  It is useful for multiline strings inside functions and large tables.&lt;br /&gt;
--  This module serves as a utility function for string parsing.&lt;br /&gt;
--  &lt;br /&gt;
--  Lua supports multiline strings in the format `[[\n...\n]]`. In general,&lt;br /&gt;
--  Lua does not outdent indented multiline strings out of the box. Though&lt;br /&gt;
--  Lua supports variable indentation in multiline strings, custom logic is&lt;br /&gt;
--  necessary to reset the string&#039;s indentation. This module adopts a&lt;br /&gt;
--  flexible approach based on string scanning.&lt;br /&gt;
--  &lt;br /&gt;
--  Unlike Penlight&#039;s `pl.text.dedent` behaviour where every line has the&lt;br /&gt;
--  indentation of the first line removed, the line prefixed with the least&lt;br /&gt;
--  non-tab whitespace is reset to zero indentation. Thus, the opening line&lt;br /&gt;
--  of the string may retain some indentation *if* there are lines of less&lt;br /&gt;
--  indentation terminating the string.&lt;br /&gt;
--  &lt;br /&gt;
--  @script             unindent&lt;br /&gt;
--  @license            MIT&lt;br /&gt;
--  @release            stable&lt;br /&gt;
--  @author             [[wikia:dev:User:8nml|8nml]]&lt;br /&gt;
--  @attribution        [https://github.com/kikito @kikito] ([https://github.com/kikito/inspect.lua/blob/master/spec/unindent.lua GitHub])&lt;br /&gt;
--  @param              {string} str Multiline string indented consistently.&lt;br /&gt;
--  @returns            {string} Unindented string.&lt;br /&gt;
return function(str)&lt;br /&gt;
    str = str:gsub(&#039; +$&#039;, &#039;&#039;):gsub(&#039;^ +&#039;, &#039;&#039;) -- remove spaces at start and end&lt;br /&gt;
    local level = math.huge&lt;br /&gt;
    local minPrefix = &#039;&#039;&lt;br /&gt;
    local len&lt;br /&gt;
    for prefix in str:gmatch(&#039;\n( +)&#039;) do&lt;br /&gt;
        len = #prefix&lt;br /&gt;
        if len &amp;lt; level then&lt;br /&gt;
            level = len&lt;br /&gt;
            minPrefix = prefix&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    return (str:gsub(&#039;\n&#039; .. minPrefix, &#039;\n&#039;):gsub(&#039;\n$&#039;, &#039;&#039;))&lt;br /&gt;
end&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=Module:Lua_lexer&amp;diff=836</id>
		<title>Module:Lua lexer</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=Module:Lua_lexer&amp;diff=836"/>
		<updated>2026-09-18T17:39:12Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--- Lexer for Lua source code written in pure Lua.&lt;br /&gt;
--  @script             lexer&lt;br /&gt;
--  @license            [https://github.com/LoganDark/lua-lexer/blob/master/LICENSE MIT]&lt;br /&gt;
--  @author             https://github.com/LoganDark&lt;br /&gt;
--  @param              {string} text Lua source code to lex.&lt;br /&gt;
--  @return             {string} Table of line arrays containing lexemes.&lt;br /&gt;
&lt;br /&gt;
--- Mapper for individual token list string.&lt;br /&gt;
--  @param              {string} src List of characters or keywords to map.&lt;br /&gt;
--  @param[opt]         {table} list Table to extend by reference.&lt;br /&gt;
--  @return             {{char=true,...}}, map &lt;br /&gt;
--  @local&lt;br /&gt;
local function lookupify(src, list)&lt;br /&gt;
	list = list or {}&lt;br /&gt;
&lt;br /&gt;
	if type(src) == &#039;string&#039; then&lt;br /&gt;
		for i = 1, src:len() do&lt;br /&gt;
			list[src:sub(i, i)] = true&lt;br /&gt;
		end&lt;br /&gt;
	elseif type(src) == &#039;table&#039; then&lt;br /&gt;
		for i = 1, #src do&lt;br /&gt;
			list[src[i]] = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return list&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Base identifier character set.&lt;br /&gt;
--  @variable           {string} base_ident&lt;br /&gt;
local base_ident = &#039;abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_&#039;&lt;br /&gt;
&lt;br /&gt;
--- Base identifier character set.&lt;br /&gt;
--  @variable           {string} base_digits&lt;br /&gt;
local base_digits = &#039;0123456789&#039;&lt;br /&gt;
&lt;br /&gt;
--- Base identifier character set.&lt;br /&gt;
--  @variable           {string} base_operators&lt;br /&gt;
local base_operators = &#039;+-*/^%#&#039;&lt;br /&gt;
&lt;br /&gt;
--- Map of Lua character patterns.&lt;br /&gt;
--  @table              chars&lt;br /&gt;
--  @field              {table} whitespace Boolean map of whitespace&lt;br /&gt;
--                      tokens.&lt;br /&gt;
--  @field              {table} validEscapes Boolean map of valid escape&lt;br /&gt;
--                      characters.&lt;br /&gt;
--  @field              {table} ident Boolean map of valid identifier&lt;br /&gt;
--                      characters.&lt;br /&gt;
--  @field              {table} symbols Boolean map of valid symbol and&lt;br /&gt;
--                      operator characters.&lt;br /&gt;
--  @local&lt;br /&gt;
local chars = {&lt;br /&gt;
	whitespace = lookupify(&#039; \n\t\r&#039;),&lt;br /&gt;
	validEscapes = lookupify(&#039;abfnrtv&amp;quot;\&#039;\\&#039;),&lt;br /&gt;
	ident = lookupify(&lt;br /&gt;
		base_ident .. base_digits,&lt;br /&gt;
		{&lt;br /&gt;
			start = lookupify(base_ident),&lt;br /&gt;
		}&lt;br /&gt;
	),&lt;br /&gt;
&lt;br /&gt;
	digits = lookupify(&lt;br /&gt;
		base_digits,&lt;br /&gt;
		{&lt;br /&gt;
			hex = lookupify(base_digits .. &#039;abcdefABCDEF&#039;)&lt;br /&gt;
		}&lt;br /&gt;
	),&lt;br /&gt;
&lt;br /&gt;
	symbols = lookupify(&lt;br /&gt;
		base_operators .. &#039;,{}[]();.:&#039;, {&lt;br /&gt;
			equality = lookupify(&#039;~=&amp;gt;&amp;lt;&#039;),&lt;br /&gt;
			operators = lookupify(base_operators)&lt;br /&gt;
		}&lt;br /&gt;
	)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
--- List of Lua keywords.&lt;br /&gt;
--  @table              keywords&lt;br /&gt;
--  @field              structure Boolean map of structure keywords.&lt;br /&gt;
--  @field              values Boolean map of primitive keywords.&lt;br /&gt;
local keywords = {&lt;br /&gt;
	structure = lookupify({&lt;br /&gt;
		&#039;and&#039;, &#039;break&#039;, &#039;do&#039;, &#039;else&#039;, &#039;elseif&#039;, &#039;end&#039;, &#039;for&#039;, &#039;function&#039;,&lt;br /&gt;
		&#039;goto&#039;, &#039;if&#039;, &#039;in&#039;, &#039;local&#039;, &#039;not&#039;, &#039;or&#039;, &#039;repeat&#039;, &#039;return&#039;, &#039;then&#039;,&lt;br /&gt;
		&#039;until&#039;, &#039;while&#039;&lt;br /&gt;
	}),&lt;br /&gt;
&lt;br /&gt;
	values = lookupify({&lt;br /&gt;
		&#039;true&#039;, &#039;false&#039;, &#039;nil&#039;&lt;br /&gt;
	})&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
--  Lexer function export.&lt;br /&gt;
return function(text)&lt;br /&gt;
	local pos = 1&lt;br /&gt;
	local start = 1&lt;br /&gt;
	local buffer = {}&lt;br /&gt;
	local lines = {}&lt;br /&gt;
&lt;br /&gt;
	local function look(delta)&lt;br /&gt;
		delta = pos + (delta or 0)&lt;br /&gt;
&lt;br /&gt;
		return text:sub(delta, delta)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function get()&lt;br /&gt;
		pos = pos + 1&lt;br /&gt;
&lt;br /&gt;
		return look(-1)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function getDataLevel()&lt;br /&gt;
		local num = 0&lt;br /&gt;
&lt;br /&gt;
		while look(num) == &#039;=&#039; do&lt;br /&gt;
			num = num + 1&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if look(num) == &#039;[&#039; then&lt;br /&gt;
			pos = pos + num + 1&lt;br /&gt;
&lt;br /&gt;
			return num&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function getCurrentTokenText()&lt;br /&gt;
		return text:sub(start, pos - 1)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local currentLineLength = 0&lt;br /&gt;
	local lineoffset = 0&lt;br /&gt;
&lt;br /&gt;
	local function pushToken(type, text)&lt;br /&gt;
		text = text or getCurrentTokenText()&lt;br /&gt;
&lt;br /&gt;
		local tk = buffer[#buffer]&lt;br /&gt;
&lt;br /&gt;
		if not tk or tk.type ~= type then&lt;br /&gt;
			tk = {&lt;br /&gt;
				type = type,&lt;br /&gt;
				data = text,&lt;br /&gt;
				posFirst = start - lineoffset,&lt;br /&gt;
				posLast = pos - 1 - lineoffset&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			if tk.data ~= &#039;&#039; then&lt;br /&gt;
				buffer[#buffer + 1] = tk&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			tk.data = tk.data .. text&lt;br /&gt;
			tk.posLast = tk.posLast + text:len()&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		currentLineLength = currentLineLength + text:len()&lt;br /&gt;
		start = pos&lt;br /&gt;
&lt;br /&gt;
		return tk&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function newline()&lt;br /&gt;
		lines[#lines + 1] = buffer&lt;br /&gt;
		buffer = {}&lt;br /&gt;
&lt;br /&gt;
		get()&lt;br /&gt;
		pushToken(&#039;newline&#039;)&lt;br /&gt;
		buffer[1] = nil&lt;br /&gt;
&lt;br /&gt;
		lineoffset = lineoffset + currentLineLength&lt;br /&gt;
		currentLineLength = 0&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function getData(level, type)&lt;br /&gt;
		while true do&lt;br /&gt;
			local char = get()&lt;br /&gt;
&lt;br /&gt;
			if char == &#039;&#039; then&lt;br /&gt;
				return&lt;br /&gt;
			elseif char == &#039;\n&#039; then&lt;br /&gt;
				pos = pos - 1&lt;br /&gt;
				pushToken(type)&lt;br /&gt;
				newline()&lt;br /&gt;
			elseif char == &#039;]&#039; then&lt;br /&gt;
				local valid = true&lt;br /&gt;
&lt;br /&gt;
				for i = 1, level do&lt;br /&gt;
					if look() == &#039;=&#039; then&lt;br /&gt;
						pos = pos + 1&lt;br /&gt;
					else&lt;br /&gt;
						valid = false&lt;br /&gt;
						break&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				if valid and look() == &#039;]&#039; then&lt;br /&gt;
					pos = pos - level - 1&lt;br /&gt;
&lt;br /&gt;
					return&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function chompWhitespace()&lt;br /&gt;
		while true do&lt;br /&gt;
			local char = look()&lt;br /&gt;
&lt;br /&gt;
			if char == &#039;\n&#039; then&lt;br /&gt;
				pushToken(&#039;whitespace&#039;)&lt;br /&gt;
				newline()&lt;br /&gt;
			elseif chars.whitespace[char] then&lt;br /&gt;
				pos = pos + 1&lt;br /&gt;
			else&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		pushToken(&#039;whitespace&#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	while true do&lt;br /&gt;
		chompWhitespace()&lt;br /&gt;
&lt;br /&gt;
		local char = get()&lt;br /&gt;
&lt;br /&gt;
		if char == &#039;&#039; then&lt;br /&gt;
			break&lt;br /&gt;
		elseif char == &#039;-&#039; and look() == &#039;-&#039; then&lt;br /&gt;
			pos = pos + 1&lt;br /&gt;
&lt;br /&gt;
			if look() == &#039;[&#039; then&lt;br /&gt;
				pos = pos + 1&lt;br /&gt;
&lt;br /&gt;
				local level = getDataLevel()&lt;br /&gt;
&lt;br /&gt;
				if level then&lt;br /&gt;
					getData(level, &#039;comment&#039;)&lt;br /&gt;
&lt;br /&gt;
					pos = pos + level + 2&lt;br /&gt;
					pushToken(&#039;comment&#039;)&lt;br /&gt;
				else&lt;br /&gt;
					while true do&lt;br /&gt;
						local char2 = get()&lt;br /&gt;
&lt;br /&gt;
						if char2 == &#039;&#039; or char2 == &#039;\n&#039; then&lt;br /&gt;
							pos = pos - 1&lt;br /&gt;
							pushToken(&#039;comment&#039;)&lt;br /&gt;
&lt;br /&gt;
							if char2 == &#039;\n&#039; then&lt;br /&gt;
								newline()&lt;br /&gt;
							end&lt;br /&gt;
&lt;br /&gt;
							break&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				while true do&lt;br /&gt;
					local char2 = get()&lt;br /&gt;
&lt;br /&gt;
					if char2 == &#039;&#039; or char2 == &#039;\n&#039; then&lt;br /&gt;
						pos = pos - 1&lt;br /&gt;
						pushToken(&#039;comment&#039;)&lt;br /&gt;
&lt;br /&gt;
						if char2 == &#039;\n&#039; then&lt;br /&gt;
							newline()&lt;br /&gt;
						end&lt;br /&gt;
&lt;br /&gt;
						break&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			pushToken(&#039;comment&#039;)&lt;br /&gt;
		elseif char == &#039;\&#039;&#039; or char == &#039;&amp;quot;&#039; then&lt;br /&gt;
			pushToken(&#039;string_start&#039;)&lt;br /&gt;
&lt;br /&gt;
			while true do&lt;br /&gt;
				local char2 = get()&lt;br /&gt;
&lt;br /&gt;
				if char2 == &#039;\\&#039; then&lt;br /&gt;
					pos = pos - 1&lt;br /&gt;
					pushToken(&#039;string&#039;)&lt;br /&gt;
					get()&lt;br /&gt;
&lt;br /&gt;
					local char3 = get()&lt;br /&gt;
&lt;br /&gt;
					if chars.digits[char3] then&lt;br /&gt;
						for i = 1, 2 do&lt;br /&gt;
							if chars.digits[look()] then&lt;br /&gt;
								pos = pos + 1&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
					elseif char3 == &#039;x&#039; then&lt;br /&gt;
						if chars.digits.hex[look()] and chars.digits.hex[look(1)] then&lt;br /&gt;
							pos = pos + 2&lt;br /&gt;
						else&lt;br /&gt;
							pushToken(&#039;unidentified&#039;)&lt;br /&gt;
						end&lt;br /&gt;
					elseif char3 == &#039;\n&#039; then&lt;br /&gt;
						pos = pos - 1&lt;br /&gt;
						pushToken(&#039;escape&#039;)&lt;br /&gt;
						newline()&lt;br /&gt;
					elseif not chars.validEscapes[char3] then&lt;br /&gt;
						pushToken(&#039;unidentified&#039;)&lt;br /&gt;
					end&lt;br /&gt;
&lt;br /&gt;
					pushToken(&#039;escape&#039;)&lt;br /&gt;
				elseif char2 == &#039;\n&#039; then&lt;br /&gt;
					pos = pos - 1&lt;br /&gt;
					pushToken(&#039;string&#039;)&lt;br /&gt;
					newline()&lt;br /&gt;
&lt;br /&gt;
					break&lt;br /&gt;
				elseif char2 == char or char2 == &#039;&#039; then&lt;br /&gt;
					pos = pos - 1&lt;br /&gt;
					pushToken(&#039;string&#039;)&lt;br /&gt;
					get()&lt;br /&gt;
&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			pushToken(&#039;string_end&#039;)&lt;br /&gt;
		elseif chars.ident.start[char] then&lt;br /&gt;
			while chars.ident[look()] do&lt;br /&gt;
				pos = pos + 1&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			local word = getCurrentTokenText()&lt;br /&gt;
&lt;br /&gt;
			if keywords.structure[word] then&lt;br /&gt;
				pushToken(&#039;keyword&#039;)&lt;br /&gt;
			elseif keywords.values[word] then&lt;br /&gt;
				pushToken(&#039;value&#039;)&lt;br /&gt;
			else&lt;br /&gt;
				pushToken(&#039;ident&#039;)&lt;br /&gt;
			end&lt;br /&gt;
		elseif chars.digits[char] or (char == &#039;.&#039; and chars.digits[look()]) then&lt;br /&gt;
			if char == &#039;0&#039; and look() == &#039;x&#039; then&lt;br /&gt;
				pos = pos + 1&lt;br /&gt;
&lt;br /&gt;
				while chars.digits.hex[look()] do&lt;br /&gt;
					pos = pos + 1&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				while chars.digits[look()] do&lt;br /&gt;
					pos = pos + 1&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				if look() == &#039;.&#039; then&lt;br /&gt;
					pos = pos + 1&lt;br /&gt;
&lt;br /&gt;
					while chars.digits[look()] do&lt;br /&gt;
						pos = pos + 1&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				if look():lower() == &#039;e&#039; then&lt;br /&gt;
					pos = pos + 1&lt;br /&gt;
&lt;br /&gt;
					if look() == &#039;-&#039; then&lt;br /&gt;
						pos = pos + 1&lt;br /&gt;
					end&lt;br /&gt;
&lt;br /&gt;
					while chars.digits[look()] do&lt;br /&gt;
						pos = pos + 1&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			pushToken(&#039;number&#039;)&lt;br /&gt;
		elseif char == &#039;[&#039; then&lt;br /&gt;
			local level = getDataLevel()&lt;br /&gt;
&lt;br /&gt;
			if level then&lt;br /&gt;
				pushToken(&#039;string_start&#039;)&lt;br /&gt;
&lt;br /&gt;
				getData(level, &#039;string&#039;)&lt;br /&gt;
				pushToken(&#039;string&#039;)&lt;br /&gt;
&lt;br /&gt;
				pos = pos + level + 2&lt;br /&gt;
				pushToken(&#039;string_end&#039;)&lt;br /&gt;
			else&lt;br /&gt;
				pushToken(&#039;symbol&#039;)&lt;br /&gt;
			end&lt;br /&gt;
		elseif char == &#039;.&#039; then&lt;br /&gt;
			if look() == &#039;.&#039; then&lt;br /&gt;
				pos = pos + 1&lt;br /&gt;
&lt;br /&gt;
				if look() == &#039;.&#039; then&lt;br /&gt;
					pos = pos + 1&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if getCurrentTokenText():len() == 3 then&lt;br /&gt;
				pushToken(&#039;vararg&#039;)&lt;br /&gt;
			else&lt;br /&gt;
				pushToken(&#039;symbol&#039;)&lt;br /&gt;
			end&lt;br /&gt;
		elseif char == &#039;:&#039; and look() == &#039;:&#039; then&lt;br /&gt;
			get()&lt;br /&gt;
&lt;br /&gt;
			pushToken(&#039;label_start&#039;)&lt;br /&gt;
&lt;br /&gt;
			chompWhitespace()&lt;br /&gt;
&lt;br /&gt;
			if chars.ident.start[look()] then&lt;br /&gt;
				get()&lt;br /&gt;
&lt;br /&gt;
				while chars.ident[look()] do&lt;br /&gt;
					get()&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				pushToken(&#039;label&#039;)&lt;br /&gt;
&lt;br /&gt;
				chompWhitespace()&lt;br /&gt;
&lt;br /&gt;
				if look() == &#039;:&#039; and look(1) == &#039;:&#039; then&lt;br /&gt;
					get()&lt;br /&gt;
					get()&lt;br /&gt;
&lt;br /&gt;
					pushToken(&#039;label_end&#039;)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		elseif chars.symbols.equality[char] then&lt;br /&gt;
			if look() == &#039;=&#039; then&lt;br /&gt;
				pos = pos + 1&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			pushToken(&#039;operator&#039;)&lt;br /&gt;
		elseif chars.symbols[char] then&lt;br /&gt;
			if chars.symbols.operators[char] then&lt;br /&gt;
				pushToken(&#039;operator&#039;)&lt;br /&gt;
			else&lt;br /&gt;
				pushToken(&#039;symbol&#039;)&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			pushToken(&#039;unidentified&#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	lines[#lines + 1] = buffer&lt;br /&gt;
&lt;br /&gt;
	return lines&lt;br /&gt;
end&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=Module:Docbunto/references&amp;diff=834</id>
		<title>Module:Docbunto/references</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=Module:Docbunto/references&amp;diff=834"/>
		<updated>2026-09-18T17:39:12Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--- Reference table for Docbunto reference links.&lt;br /&gt;
--  List of global functions and tables available in Scribunto.&lt;br /&gt;
--  @file               docbunto_references&lt;br /&gt;
&lt;br /&gt;
--- Reference data map for types.&lt;br /&gt;
--  @property           {table} docbunto_references.types&lt;br /&gt;
&lt;br /&gt;
--- Reference link map for global items.&lt;br /&gt;
--  @property           {table} docbunto_references.items&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
    types = {&lt;br /&gt;
        -- Lua types available to Scribunto.&lt;br /&gt;
        [&amp;quot;nil&amp;quot;]         = { link = &amp;quot;mw:Extension:Scribunto/Lua reference manual#nil&amp;quot;, name = &amp;quot;nil&amp;quot; },&lt;br /&gt;
        [&amp;quot;bool&amp;quot;]        = { link = &amp;quot;mw:Extension:Scribunto/Lua reference manual#boolean&amp;quot;, name = &amp;quot;boolean&amp;quot; },&lt;br /&gt;
        [&amp;quot;boolean&amp;quot;]     = { link = &amp;quot;mw:Extension:Scribunto/Lua reference manual#boolean&amp;quot;, name = &amp;quot;boolean&amp;quot; },&lt;br /&gt;
        [&amp;quot;string&amp;quot;]      = { link = &amp;quot;mw:Extension:Scribunto/Lua reference manual#string&amp;quot;, name = &amp;quot;string&amp;quot; },&lt;br /&gt;
        [&amp;quot;int&amp;quot;]         = { link = &amp;quot;mw:Extension:Scribunto/Lua reference manual#number&amp;quot;, name = &amp;quot;number&amp;quot; },&lt;br /&gt;
        [&amp;quot;number&amp;quot;]      = { link = &amp;quot;mw:Extension:Scribunto/Lua reference manual#number&amp;quot;, name = &amp;quot;number&amp;quot; },&lt;br /&gt;
        [&amp;quot;tab&amp;quot;]         = { link = &amp;quot;mw:Extension:Scribunto/Lua reference manual#table&amp;quot;, name = &amp;quot;table&amp;quot; },&lt;br /&gt;
        [&amp;quot;table&amp;quot;]       = { link = &amp;quot;mw:Extension:Scribunto/Lua reference manual#table&amp;quot;, name = &amp;quot;table&amp;quot; },&lt;br /&gt;
        [&amp;quot;sequence&amp;quot;]    = { link = &amp;quot;mw:Extension:Scribunto/Lua reference manual#sequence&amp;quot;, name = &amp;quot;sequence&amp;quot; },&lt;br /&gt;
        [&amp;quot;func&amp;quot;]        = { link = &amp;quot;mw:Extension:Scribunto/Lua reference manual#function&amp;quot;, name = &amp;quot;function&amp;quot; },&lt;br /&gt;
        [&amp;quot;function&amp;quot;]    = { link = &amp;quot;mw:Extension:Scribunto/Lua reference manual#function&amp;quot;, name = &amp;quot;function&amp;quot; },&lt;br /&gt;
        -- Scribunto library objects.&lt;br /&gt;
        [&amp;quot;mw.loadData&amp;quot;] = { link = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.loadData&amp;quot;, name = &amp;quot;DataWrapper&amp;quot; },&lt;br /&gt;
        [&amp;quot;DataWrapper&amp;quot;] = { link = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.loadData&amp;quot;, name = &amp;quot;DataWrapper&amp;quot; },&lt;br /&gt;
        [&amp;quot;Frame&amp;quot;]       = { link = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Frame object&amp;quot;, name = &amp;quot;Frame&amp;quot; },&lt;br /&gt;
        [&amp;quot;mw.language&amp;quot;] = { link = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Language object&amp;quot;, name = &amp;quot;Lang&amp;quot; },&lt;br /&gt;
        [&amp;quot;Lang&amp;quot;]        = { link = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Language object&amp;quot;, name = &amp;quot;Lang&amp;quot; },&lt;br /&gt;
        [&amp;quot;mw.uri&amp;quot;]      = { link = &amp;quot;mw:Extension:Scribunto/Lua reference manual#URI object&amp;quot;, name = &amp;quot;Uri&amp;quot; },&lt;br /&gt;
        [&amp;quot;Uri&amp;quot;]         = { link = &amp;quot;mw:Extension:Scribunto/Lua reference manual#URI object&amp;quot;, name = &amp;quot;Uri&amp;quot; },&lt;br /&gt;
        [&amp;quot;mw.html&amp;quot;]     = { link = &amp;quot;mw:Extension:Scribunto/Lua reference manual#HTML object&amp;quot;, name = &amp;quot;HTMLBuilder&amp;quot; },&lt;br /&gt;
        [&amp;quot;HTMLBuilder&amp;quot;] = { link = &amp;quot;mw:Extension:Scribunto/Lua reference manual#HTML object&amp;quot;, name = &amp;quot;HTMLBuilder&amp;quot; },&lt;br /&gt;
        [&amp;quot;mw.title&amp;quot;]    = { link = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;, name = &amp;quot;Title&amp;quot; },&lt;br /&gt;
        [&amp;quot;Title&amp;quot;]       = { link = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;, name = &amp;quot;Title&amp;quot; },&lt;br /&gt;
        [&amp;quot;mw.message&amp;quot;]  = { link = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Message object&amp;quot;, name = &amp;quot;Msg&amp;quot; },&lt;br /&gt;
        [&amp;quot;Msg&amp;quot;]         = { link = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Message object&amp;quot;, name = &amp;quot;Msg&amp;quot; },&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    items = {&lt;br /&gt;
        -- Types and primitives.&lt;br /&gt;
        [&amp;quot;...&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#varargs&amp;quot;,&lt;br /&gt;
        [&amp;quot;nil&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#nil&amp;quot;,&lt;br /&gt;
        [&amp;quot;boolean&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#boolean&amp;quot;,&lt;br /&gt;
        [&amp;quot;number&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#number&amp;quot;,&lt;br /&gt;
        [&amp;quot;sequence&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#sequence&amp;quot;,&lt;br /&gt;
        [&amp;quot;function&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#function&amp;quot;,&lt;br /&gt;
        -- Global variables and functions.&lt;br /&gt;
        [&amp;quot;_G&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#_G&amp;quot;,&lt;br /&gt;
        [&amp;quot;_VERSION&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#_VERSION&amp;quot;,&lt;br /&gt;
        [&amp;quot;assert&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#assert&amp;quot;,&lt;br /&gt;
        [&amp;quot;error&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#error&amp;quot;,&lt;br /&gt;
        [&amp;quot;getmetatable&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#getmetatable&amp;quot;,&lt;br /&gt;
        [&amp;quot;setmetatable&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#setmetatable&amp;quot;,&lt;br /&gt;
        [&amp;quot;ipairs&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#ipairs&amp;quot;,&lt;br /&gt;
        [&amp;quot;next&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#next&amp;quot;,&lt;br /&gt;
        [&amp;quot;pairs&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#pairs&amp;quot;,&lt;br /&gt;
        [&amp;quot;pcall&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#pcall&amp;quot;,&lt;br /&gt;
        [&amp;quot;xpcall&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#xpcall&amp;quot;,&lt;br /&gt;
        [&amp;quot;rawequal&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#rawequal&amp;quot;,&lt;br /&gt;
        [&amp;quot;rawget&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#rawget&amp;quot;,&lt;br /&gt;
        [&amp;quot;rawset&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#rawset&amp;quot;,&lt;br /&gt;
        [&amp;quot;require&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#require&amp;quot;,&lt;br /&gt;
        [&amp;quot;select&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#select&amp;quot;,&lt;br /&gt;
        [&amp;quot;tonumber&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#tonumber&amp;quot;,&lt;br /&gt;
        [&amp;quot;tostring&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#tostring&amp;quot;,&lt;br /&gt;
        [&amp;quot;type&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#type&amp;quot;,&lt;br /&gt;
        [&amp;quot;unpack&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#unpack&amp;quot;,&lt;br /&gt;
        -- Lua debug library.&lt;br /&gt;
        [&amp;quot;debug&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Debug library&amp;quot;,&lt;br /&gt;
        [&amp;quot;debug.traceback&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#debug.traceback&amp;quot;,&lt;br /&gt;
        -- Lua math library.&lt;br /&gt;
        [&amp;quot;math&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Math library&amp;quot;,&lt;br /&gt;
        [&amp;quot;math.abs&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#math.abs&amp;quot;,&lt;br /&gt;
        [&amp;quot;math.acos&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#math.acos&amp;quot;,&lt;br /&gt;
        [&amp;quot;math.asin&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#math.asin&amp;quot;,&lt;br /&gt;
        [&amp;quot;math.atan&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#math.atan&amp;quot;,&lt;br /&gt;
        [&amp;quot;math.atan2&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#math.atan2&amp;quot;,&lt;br /&gt;
        [&amp;quot;math.ceil&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#math.ceil&amp;quot;,&lt;br /&gt;
        [&amp;quot;math.cos&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#math.cos&amp;quot;,&lt;br /&gt;
        [&amp;quot;math.cosh&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#math.cosh&amp;quot;,&lt;br /&gt;
        [&amp;quot;math.deg&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#math.deg&amp;quot;,&lt;br /&gt;
        [&amp;quot;math.exp&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#math.exp&amp;quot;,&lt;br /&gt;
        [&amp;quot;math.floor&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#math.floor&amp;quot;,&lt;br /&gt;
        [&amp;quot;math.fmod&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#math.fmod&amp;quot;,&lt;br /&gt;
        [&amp;quot;math.frexp&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#math.frexp&amp;quot;,&lt;br /&gt;
        [&amp;quot;math.huge&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#math.huge&amp;quot;,&lt;br /&gt;
        [&amp;quot;math.ldexp&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#math.ldexp&amp;quot;,&lt;br /&gt;
        [&amp;quot;math.log&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#math.log&amp;quot;,&lt;br /&gt;
        [&amp;quot;math.log10&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#math.log10&amp;quot;,&lt;br /&gt;
        [&amp;quot;math.max&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#math.max&amp;quot;,&lt;br /&gt;
        [&amp;quot;math.min&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#math.min&amp;quot;,&lt;br /&gt;
        [&amp;quot;math.modf&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#math.modf&amp;quot;,&lt;br /&gt;
        [&amp;quot;math.pi&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#math.pi&amp;quot;,&lt;br /&gt;
        [&amp;quot;math.pow&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#math.pow&amp;quot;,&lt;br /&gt;
        [&amp;quot;math.rad&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#math.rad&amp;quot;,&lt;br /&gt;
        [&amp;quot;math.random&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#math.random&amp;quot;,&lt;br /&gt;
        [&amp;quot;math.randomseed&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#math.randomseed&amp;quot;,&lt;br /&gt;
        [&amp;quot;math.sin&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#math.sin&amp;quot;,&lt;br /&gt;
        [&amp;quot;math.sinh&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#math.sinh&amp;quot;,&lt;br /&gt;
        [&amp;quot;math.sqrt&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#math.sqrt&amp;quot;,&lt;br /&gt;
        [&amp;quot;math.tan&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#math.tan&amp;quot;,&lt;br /&gt;
        [&amp;quot;math.tanh&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#math.tanh&amp;quot;,&lt;br /&gt;
        -- Operating system library.&lt;br /&gt;
        [&amp;quot;os&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Operating system library&amp;quot;,&lt;br /&gt;
        [&amp;quot;os.clock&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#os.clock&amp;quot;,&lt;br /&gt;
        [&amp;quot;os.date&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#os.date&amp;quot;,&lt;br /&gt;
        [&amp;quot;os.difftime&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#os.difftime&amp;quot;,&lt;br /&gt;
        [&amp;quot;os.time&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#os.time&amp;quot;,&lt;br /&gt;
        -- Package library.&lt;br /&gt;
        [&amp;quot;package&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Package library&amp;quot;,&lt;br /&gt;
        [&amp;quot;package.loaded&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#package.loaded&amp;quot;,&lt;br /&gt;
        [&amp;quot;package.loaders&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#package.loaders&amp;quot;,&lt;br /&gt;
        [&amp;quot;package.preload&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#package.preload&amp;quot;,&lt;br /&gt;
        [&amp;quot;package.seeall&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#package.seeall&amp;quot;,&lt;br /&gt;
        -- Lua string library.&lt;br /&gt;
        [&amp;quot;string&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#String library&amp;quot;,&lt;br /&gt;
        [&amp;quot;string.byte&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#string.byte&amp;quot;,&lt;br /&gt;
        [&amp;quot;string.char&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#string.char&amp;quot;,&lt;br /&gt;
        [&amp;quot;string.find&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#string.find&amp;quot;,&lt;br /&gt;
        [&amp;quot;string.format&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#string.format&amp;quot;,&lt;br /&gt;
        [&amp;quot;string.gmatch&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#string.gmatch&amp;quot;,&lt;br /&gt;
        [&amp;quot;string.gsub&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#string.gsub&amp;quot;,&lt;br /&gt;
        [&amp;quot;string.len&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#string.len&amp;quot;,&lt;br /&gt;
        [&amp;quot;string.lower&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#string.lower&amp;quot;,&lt;br /&gt;
        [&amp;quot;string.match&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#string.match&amp;quot;,&lt;br /&gt;
        [&amp;quot;string.rep&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#string.rep&amp;quot;,&lt;br /&gt;
        [&amp;quot;string.reverse&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#string.reverse&amp;quot;,&lt;br /&gt;
        [&amp;quot;string.sub&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#string.sub&amp;quot;,&lt;br /&gt;
        [&amp;quot;string.upper&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#string.upper&amp;quot;,&lt;br /&gt;
        -- Lua table library.&lt;br /&gt;
        [&amp;quot;table&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Table library&amp;quot;,&lt;br /&gt;
        [&amp;quot;table.concat&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#table.concat&amp;quot;,&lt;br /&gt;
        [&amp;quot;table.insert&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#table.insert&amp;quot;,&lt;br /&gt;
        [&amp;quot;table.maxn&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#table.maxn&amp;quot;,&lt;br /&gt;
        [&amp;quot;table.remove&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#table.remove&amp;quot;,&lt;br /&gt;
        [&amp;quot;table.sort&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#table.sort&amp;quot;,&lt;br /&gt;
        -- MediaWiki Scribunto library.&lt;br /&gt;
        [&amp;quot;mw&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.allToString&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.allToString&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.clearLogBuffer&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.clearLogBuffer&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.clone&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.clone&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.executeFunction&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.executeFunction&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.executeModule&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.executeModule&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.getCurrentFrame&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.getCurrentFrame&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.getLogBuffer&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.getLogBuffer&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.incrementExpensiveFunctionCount&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.incrementExpensiveFunctionCount&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.loadData&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.loadData&amp;quot;,&lt;br /&gt;
        [&amp;quot;DataWrapper&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.loadData&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.log&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.log&amp;quot;,&lt;br /&gt;
        [&amp;quot;print&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.log&amp;quot;,&lt;br /&gt;
        -- Scribunto frame object.&lt;br /&gt;
        [&amp;quot;frame&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Frame object&amp;quot;,&lt;br /&gt;
        [&amp;quot;frame.args&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#frame.args&amp;quot;,&lt;br /&gt;
        [&amp;quot;frame:getParent&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#frame:getParent&amp;quot;,&lt;br /&gt;
        [&amp;quot;frame:expandTemplate&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#frame:expandTemplate&amp;quot;,&lt;br /&gt;
        [&amp;quot;frame:preprocess&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#frame:preprocess&amp;quot;,&lt;br /&gt;
        [&amp;quot;frame:getArgument&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#frame:getArgument&amp;quot;,&lt;br /&gt;
        [&amp;quot;frame:newParserValue&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#frame:newParserValue&amp;quot;,&lt;br /&gt;
        [&amp;quot;frame:newTemplateParserValue&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#frame:newTemplateParserValue&amp;quot;,&lt;br /&gt;
        [&amp;quot;frame:argumentPairs&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#frame:argumentPairs&amp;quot;,&lt;br /&gt;
        [&amp;quot;frame:getTitle&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#frame:getTitle&amp;quot;,&lt;br /&gt;
        -- Scribunto frame object as `Frame` class.&lt;br /&gt;
        [&amp;quot;Frame&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Frame object&amp;quot;,&lt;br /&gt;
        [&amp;quot;Frame.args&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#frame.args&amp;quot;,&lt;br /&gt;
        [&amp;quot;Frame:getParent&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#frame:getParent&amp;quot;,&lt;br /&gt;
        [&amp;quot;Frame:expandTemplate&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#frame:expandTemplate&amp;quot;,&lt;br /&gt;
        [&amp;quot;Frame:preprocess&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#frame:preprocess&amp;quot;,&lt;br /&gt;
        [&amp;quot;Frame:getArgument&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#frame:getArgument&amp;quot;,&lt;br /&gt;
        [&amp;quot;Frame:newParserValue&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#frame:newParserValue&amp;quot;,&lt;br /&gt;
        [&amp;quot;Frame:newTemplateParserValue&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#frame:newTemplateParserValue&amp;quot;,&lt;br /&gt;
        [&amp;quot;Frame:argumentPairs&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#frame:argumentPairs&amp;quot;,&lt;br /&gt;
        [&amp;quot;Frame:getTitle&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#frame:getTitle&amp;quot;,&lt;br /&gt;
        -- Scribunto language library.&lt;br /&gt;
        [&amp;quot;mw.language&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Language library&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.language.fetchLanguageName&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.language.fetchLanguageName&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.language.getContentLanguage&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.language.getContentLanguage&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.language.isValidBuiltInCode&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.language.isValidBuiltInCode&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.language.isValidCode&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.language.isValidCode&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.language.new&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.language.new&amp;quot;,&lt;br /&gt;
        -- Scribunto language object.&lt;br /&gt;
        [&amp;quot;lang&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Language object&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.language:getCode&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.language:getCode&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.language:isRTL&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.language:isRTL&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.language:lc&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.language:lc&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.language:lcfirst&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.language:lcfirst&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.language:uc&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.language:uc&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.language:ucfirst&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.language:ucfirst&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.language:caseFold&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.language:caseFold&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.language:formatNum&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.language:formatNum&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.language:formatDate&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.language:formatDate&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.language:parseFormattedNumber&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.language:parseFormattedNumber&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.language:convertPlural&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.language:convertPlural&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.language:convertGrammar&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.language:convertGrammar&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.language:gender&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.language:gender&amp;quot;,&lt;br /&gt;
        -- Scribunto language object as `Lang` class.&lt;br /&gt;
        [&amp;quot;Lang&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Language object&amp;quot;,&lt;br /&gt;
        [&amp;quot;Lang:getCode&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.language:getCode&amp;quot;,&lt;br /&gt;
        [&amp;quot;Lang:isRTL&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.language:isRTL&amp;quot;,&lt;br /&gt;
        [&amp;quot;Lang:lc&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.language:lc&amp;quot;,&lt;br /&gt;
        [&amp;quot;Lang:lcfirst&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.language:lcfirst&amp;quot;,&lt;br /&gt;
        [&amp;quot;Lang:uc&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.language:uc&amp;quot;,&lt;br /&gt;
        [&amp;quot;Lang:ucfirst&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.language:ucfirst&amp;quot;,&lt;br /&gt;
        [&amp;quot;Lang:caseFold&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.language:caseFold&amp;quot;,&lt;br /&gt;
        [&amp;quot;Lang:formatNum&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.language:formatNum&amp;quot;,&lt;br /&gt;
        [&amp;quot;Lang:formatDate&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.language:formatDate&amp;quot;,&lt;br /&gt;
        [&amp;quot;Lang:parseFormattedNumber&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.language:parseFormattedNumber&amp;quot;,&lt;br /&gt;
        [&amp;quot;Lang:convertPlural&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.language:convertPlural&amp;quot;,&lt;br /&gt;
        [&amp;quot;Lang:convertGrammar&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.language:convertGrammar&amp;quot;,&lt;br /&gt;
        [&amp;quot;Lang:gender&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.language:gender&amp;quot;,&lt;br /&gt;
        -- Scribunto site library.&lt;br /&gt;
        [&amp;quot;mw.site&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Site library&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.site.currentVersion&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.site.currentVersion&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.site.scriptPath&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.site.scriptPath&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.site.server&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.site.server&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.site.siteName&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.site.siteName&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.site.stylePath&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.site.stylePath&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.site.namespaces&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.site.namespaces&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.site.contentNamespaces&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.site.contentNamespaces&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.site.subjectNamespaces&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.site.subjectNamespaces&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.site.talkNamespaces&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.site.talkNamespaces&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.site.sassParams&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.site.sassParams&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.site.stats&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.site.stats&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.site.stats.pagesInCategory&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.site.stats.pagesInCategory&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.site.stats.pagesInNamespace&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.site.stats.pagesInNamespace&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.site.stats.usersInGroup&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.site.stats.usersInGroup&amp;quot;,&lt;br /&gt;
        -- Scribunto URI library.&lt;br /&gt;
        [&amp;quot;mw.uri&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Uri library&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.uri.encode&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.uri.encode&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.uri.decode&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.uri.decode&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.uri.anchorEncode&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.uri.anchorEncode&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.uri.buildQueryString&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.uri.buildQueryString&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.uri.parseQueryString&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.uri.parseQueryString&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.uri.canonicalUrl&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.uri.canonicalUrl&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.uri.fullUrl&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.uri.fullUrl&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.uri.localUrl&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.uri.localUrl&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.uri.new&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.uri.new&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.uri.validate&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.uri.validate&amp;quot;,&lt;br /&gt;
        -- Scribunto URI object.&lt;br /&gt;
        [&amp;quot;uri&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#URI object&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.uri:parse&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.uri:parse&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.uri:clone&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.uri:clone&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.uri:extend&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.uri:extend&amp;quot;,&lt;br /&gt;
        -- Scribunto URI object as `Uri` class.&lt;br /&gt;
        [&amp;quot;Uri&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#URI object&amp;quot;,&lt;br /&gt;
        [&amp;quot;Uri:parse&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.uri:parse&amp;quot;,&lt;br /&gt;
        [&amp;quot;Uri:parse&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.uri:parse&amp;quot;,&lt;br /&gt;
        [&amp;quot;Uri:clone&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.uri:clone&amp;quot;,&lt;br /&gt;
        [&amp;quot;Uri:extend&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.uri:extend&amp;quot;,&lt;br /&gt;
        -- Scribunto UTF8-safe string library.&lt;br /&gt;
        [&amp;quot;mw.ustring&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Ustring library&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.ustring.maxPatternLength&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.ustring.maxPatternLength&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.ustring.maxStringLength&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.ustring.maxStringLength&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.ustring.byte&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.ustring.byte&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.ustring.byteoffset&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.ustring.byteoffset&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.ustring.char&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.ustring.char&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.ustring.codepoint&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.ustring.codepoint&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.ustring.find&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.ustring.find&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.ustring.format&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.ustring.format&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.ustring.gcodepoint&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.ustring.gcodepoint&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.ustring.gmatch&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.ustring.gmatch&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.ustring.gsub&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.ustring.gsub&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.ustring.isutf8&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.ustring.isutf8&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.ustring.len&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.ustring.len&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.ustring.lower&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.ustring.lower&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.ustring.match&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.ustring.match&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.ustring.rep&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.ustring.rep&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.ustring.sub&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.ustring.sub&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.ustring.toNFC&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.ustring.toNFC&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.ustring.toNFD&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.ustring.toNFD&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.ustring.upper&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.ustring.upper&amp;quot;,&lt;br /&gt;
        -- Scribunto HTML library.&lt;br /&gt;
        [&amp;quot;mw.html&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#HTML library&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.html.create&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.html.create&amp;quot;,&lt;br /&gt;
        -- Scribunto HTML object.&lt;br /&gt;
        [&amp;quot;html&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#HTML object&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.html:node&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.html:node&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.html:wikitext&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.html:wikitext&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.html:newline&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.html:newline&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.html:tag&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.html:tag&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.html:attr&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.html:attr&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.html:getAttr&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.html:getAttr&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.html:addClass&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.html:addClass&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.html:css&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.html:css&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.html:cssText&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.html:cssText&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.html:done&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.html:done&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.html:allDone&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.html:allDone&amp;quot;,&lt;br /&gt;
        -- Scribunto HTML object as `HTMLBuilder` class.&lt;br /&gt;
        [&amp;quot;HTMLBuilder&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#HTML object&amp;quot;,&lt;br /&gt;
        [&amp;quot;HTMLBuilder:node&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.html:node&amp;quot;,&lt;br /&gt;
        [&amp;quot;HTMLBuilder:wikitext&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.html:wikitext&amp;quot;,&lt;br /&gt;
        [&amp;quot;HTMLBuilder:newline&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.html:newline&amp;quot;,&lt;br /&gt;
        [&amp;quot;HTMLBuilder:tag&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.html:tag&amp;quot;,&lt;br /&gt;
        [&amp;quot;HTMLBuilder:attr&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.html:attr&amp;quot;,&lt;br /&gt;
        [&amp;quot;HTMLBuilder:getAttr&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.html:getAttr&amp;quot;,&lt;br /&gt;
        [&amp;quot;HTMLBuilder:addClass&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.html:addClass&amp;quot;,&lt;br /&gt;
        [&amp;quot;HTMLBuilder:css&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.html:css&amp;quot;,&lt;br /&gt;
        [&amp;quot;HTMLBuilder:cssText&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.html:cssText&amp;quot;,&lt;br /&gt;
        [&amp;quot;HTMLBuilder:done&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.html:done&amp;quot;,&lt;br /&gt;
        [&amp;quot;HTMLBuilder:allDone&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.html:allDone&amp;quot;,&lt;br /&gt;
        -- Scribunto text library.&lt;br /&gt;
        [&amp;quot;mw.text&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Text library&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.text.decode&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.text.decode&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.text.encode&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.text.encode&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.text.listToText&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.text.listToText&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.text.nowiki&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.text.nowiki&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.text.split&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.text.split&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.text.gsplit&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.text.gsplit&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.text.tag&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.text.tag&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.text.trim&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.text.trim&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.text.truncate&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.text.truncate&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.text.unstrip&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.text.unstrip&amp;quot;,&lt;br /&gt;
        -- Scribunto title library.&lt;br /&gt;
        [&amp;quot;mw.title&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title library&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.title.equals&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.title.equals&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.title.compare&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.title.compare&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.title.getCurrentTitle&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.title.getCurrentTile&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.title.new&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.title.new&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.title.makeTitle&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.title.makeTitle&amp;quot;,&lt;br /&gt;
        -- Scribunto title object.&lt;br /&gt;
        [&amp;quot;mw.title.id&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.title.interwiki&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.title.namespace&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.title.fragment&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.title.nsText&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.title.subjectNsText&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.title.text&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.title.prefixedText&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.title.fullText&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.title.rootText&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.title.baseText&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.title.subpageText&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.title.canTalk&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.title.exists&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.title.fileExists&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.title.isContentPage&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.title.isExternal&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.title.isLocal&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.title.isRedirect&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.title.isSpecialPage&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.title.isSubpage&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.title.isTalkPage&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.title:isSubpageOf&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.title:inNamespace&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.title:inNamespaces&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.title:hasSubjectNamespace&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.title.basePageTitle&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.title.rootPageTitle&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.title.talkPageTitle&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.title.subjectPageTitle&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.title.protectionLevels&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.title:subPageTitle&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.title:partialUrl&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.title:fullUrl&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.title:localUrl&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.title:canonicalUrl&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.title:getContent&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        -- Scribunto title object as `Title` class.&lt;br /&gt;
        [&amp;quot;Title&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;Title.id&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;Title.interwiki&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;Title.namespace&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;Title.fragment&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;Title.nsText&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;Title.subjectNsText&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;Title.text&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;Title.prefixedText&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;Title.fullText&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;Title.rootText&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;Title.baseText&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;Title.subpageText&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;Title.canTalk&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;Title.exists&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;Title.fileExists&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;Title.isContentPage&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;Title.isExternal&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;Title.isLocal&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;Title.isRedirect&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;Title.isSpecialPage&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;Title.isSubpage&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;Title.isTalkPage&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;Title:isSubpageOf&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;Title:inNamespace&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;Title:inNamespaces&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;Title:hasSubjectNamespace&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;Title.basePageTitle&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;Title.rootPageTitle&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;Title.talkPageTitle&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;Title.subjectPageTitle&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;Title.protectionLevels&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;Title:subPageTitle&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;Title:partialUrl&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;Title:fullUrl&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;Title:localUrl&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;Title:canonicalUrl&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        [&amp;quot;Title:getContent&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Title objects&amp;quot;,&lt;br /&gt;
        -- Scribunto message library.&lt;br /&gt;
        [&amp;quot;mw.message&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Message library&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.message.new&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.message.new&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.message.newFallbackSequence&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.message.newFallbackSequence&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.message.rawParam&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.message.rawParam&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.message.numParam&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.message.numParam&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.message.getDefaultLanguage&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.message.getDefaultLanguage&amp;quot;,&lt;br /&gt;
        -- Scribunto message object.&lt;br /&gt;
        [&amp;quot;msg&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Message object&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.message:params&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.message:params&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.message:rawParams&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.message:rawParams&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.message:numParams&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.message:numParams&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.message:inLanguage&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.message:inLanguage&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.message:useDatabase&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.message:useDatabase&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.message:plain&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.message:plain&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.message:exists&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.message:exists&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.message:isBlank&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.message:isBlank&amp;quot;,&lt;br /&gt;
        [&amp;quot;mw.message:isDisabled&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.message:isDisabled&amp;quot;,&lt;br /&gt;
        -- Scribunto message object as `Msg` class.&lt;br /&gt;
        [&amp;quot;Msg&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#Message object&amp;quot;,&lt;br /&gt;
        [&amp;quot;Msg:params&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.message:params&amp;quot;,&lt;br /&gt;
        [&amp;quot;Msg:rawParams&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.message:rawParams&amp;quot;,&lt;br /&gt;
        [&amp;quot;Msg:numParams&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.message:numParams&amp;quot;,&lt;br /&gt;
        [&amp;quot;Msg:inLanguage&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.message:inLanguage&amp;quot;,&lt;br /&gt;
        [&amp;quot;Msg:useDatabase&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.message:useDatabase&amp;quot;,&lt;br /&gt;
        [&amp;quot;Msg:plain&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.message:plain&amp;quot;,&lt;br /&gt;
        [&amp;quot;Msg:exists&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.message:exists&amp;quot;,&lt;br /&gt;
        [&amp;quot;Msg:isBlank&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.message:isBlank&amp;quot;,&lt;br /&gt;
        [&amp;quot;Msg:isDisabled&amp;quot;] = &amp;quot;mw:Extension:Scribunto/Lua reference manual#mw.message:isDisabled&amp;quot;,&lt;br /&gt;
    }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=Module:Docbunto/i18n&amp;diff=832</id>
		<title>Module:Docbunto/i18n</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=Module:Docbunto/i18n&amp;diff=832"/>
		<updated>2026-09-18T17:39:12Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- &amp;lt;nowiki&amp;gt;&lt;br /&gt;
return {&lt;br /&gt;
    [&amp;quot;_metadata&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;order&amp;quot;] = {&lt;br /&gt;
            &amp;quot;endmatter-caption&amp;quot;,&lt;br /&gt;
            &amp;quot;endmatter-image&amp;quot;,&lt;br /&gt;
            &amp;quot;line-no&amp;quot;,&lt;br /&gt;
            &amp;quot;header-class&amp;quot;,&lt;br /&gt;
            &amp;quot;header-documentation&amp;quot;,&lt;br /&gt;
            &amp;quot;header-function&amp;quot;,&lt;br /&gt;
            &amp;quot;header-items&amp;quot;,&lt;br /&gt;
            &amp;quot;header-other&amp;quot;,&lt;br /&gt;
            &amp;quot;header-private&amp;quot;,&lt;br /&gt;
            &amp;quot;message-autogeneration&amp;quot;,&lt;br /&gt;
            &amp;quot;no-content&amp;quot;,&lt;br /&gt;
            &amp;quot;no-markup&amp;quot;,&lt;br /&gt;
            &amp;quot;optional&amp;quot;,&lt;br /&gt;
            &amp;quot;parentheses&amp;quot;,&lt;br /&gt;
            &amp;quot;separator-colon&amp;quot;,&lt;br /&gt;
            &amp;quot;separator-dot&amp;quot;,&lt;br /&gt;
            &amp;quot;separator-semicolon&amp;quot;,&lt;br /&gt;
            &amp;quot;tag-error&amp;quot;,&lt;br /&gt;
            &amp;quot;tag-field&amp;quot;,&lt;br /&gt;
            &amp;quot;tag-fixme&amp;quot;,&lt;br /&gt;
            &amp;quot;tag-note&amp;quot;,&lt;br /&gt;
            &amp;quot;tag-param&amp;quot;,&lt;br /&gt;
            &amp;quot;tag-return&amp;quot;,&lt;br /&gt;
            &amp;quot;tag-see&amp;quot;,&lt;br /&gt;
            &amp;quot;tag-todo&amp;quot;,&lt;br /&gt;
            &amp;quot;tag-usage&amp;quot;,&lt;br /&gt;
            &amp;quot;tag-warning&amp;quot;,&lt;br /&gt;
            &amp;quot;todo&amp;quot;,&lt;br /&gt;
            &amp;quot;type-boolean&amp;quot;,&lt;br /&gt;
            &amp;quot;type-function&amp;quot;,&lt;br /&gt;
            &amp;quot;type-member&amp;quot;,&lt;br /&gt;
            &amp;quot;type-nil&amp;quot;,&lt;br /&gt;
            &amp;quot;type-number&amp;quot;,&lt;br /&gt;
            &amp;quot;type-sequence&amp;quot;,&lt;br /&gt;
            &amp;quot;type-string&amp;quot;,&lt;br /&gt;
            &amp;quot;type-table&amp;quot;,&lt;br /&gt;
            &amp;quot;type-variable&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;en&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;endmatter-caption&amp;quot;] = &amp;quot;Caption&amp;quot;,&lt;br /&gt;
        [&amp;quot;endmatter-image&amp;quot;] = &amp;quot;Image&amp;quot;,&lt;br /&gt;
        [&amp;quot;line-no&amp;quot;] = &amp;quot;line $1&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-class&amp;quot;] = &amp;quot;Package class&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-documentation&amp;quot;] = &amp;quot;Documentation&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-function&amp;quot;] = &amp;quot;Package function&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-items&amp;quot;] = &amp;quot;Package items&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-other&amp;quot;] = &amp;quot;Other items&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-private&amp;quot;] = &amp;quot;Private items&amp;quot;,&lt;br /&gt;
        [&amp;quot;message-autogeneration&amp;quot;] = &amp;quot;Documentation above is auto generated&amp;quot;,&lt;br /&gt;
        [&amp;quot;no-content&amp;quot;] = &amp;quot;Lua source code not found in $1&amp;quot;,&lt;br /&gt;
        [&amp;quot;no-markup&amp;quot;] = &amp;quot;documentation markup for Docbunto not found in $1&amp;quot;,&lt;br /&gt;
        [&amp;quot;optional&amp;quot;] = &amp;quot;optional&amp;quot;,&lt;br /&gt;
        [&amp;quot;parentheses&amp;quot;] = &amp;quot; ($1)&amp;quot;,&lt;br /&gt;
        [&amp;quot;separator-colon&amp;quot;] = &amp;quot;; &amp;quot;,&lt;br /&gt;
        [&amp;quot;separator-dot&amp;quot;] = &amp;quot;&amp;amp;nbsp;• &amp;quot;,&lt;br /&gt;
        [&amp;quot;separator-semicolon&amp;quot;] = &amp;quot;: &amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-error&amp;quot;] = &amp;quot;{{plural:$1|Error|Errors}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-field&amp;quot;] = &amp;quot;{{plural:$1|Field|Fields}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-fixme&amp;quot;] = &amp;quot;{{plural:$1|Bug|Bugs}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-note&amp;quot;] = &amp;quot;{{plural:$1|Note|Notes}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-param&amp;quot;] = &amp;quot;{{plural:$1|Parameter|Parameters}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-return&amp;quot;] = &amp;quot;Returns&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-see&amp;quot;] = &amp;quot;See also&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-todo&amp;quot;] = &amp;quot;TODO&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-usage&amp;quot;] = &amp;quot;Usage&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-warning&amp;quot;] = &amp;quot;{{plural:$1|Warning|Warnings}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;todo&amp;quot;] = &amp;quot;Modules with TODO items&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-boolean&amp;quot;] = &amp;quot;boolean&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-function&amp;quot;] = &amp;quot;function&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-member&amp;quot;] = &amp;quot;member&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-nil&amp;quot;] = &amp;quot;nil&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-number&amp;quot;] = &amp;quot;number&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-sequence&amp;quot;] = &amp;quot;sequence&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-string&amp;quot;] = &amp;quot;string&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-table&amp;quot;] = &amp;quot;table&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-variable&amp;quot;] = &amp;quot;variable&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;qqq&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;endmatter-caption&amp;quot;] = &amp;quot;Text of the caption key in the module data, rendered within the endmatter card.&amp;quot;,&lt;br /&gt;
        [&amp;quot;endmatter-image&amp;quot;] = &amp;quot;Text of the image key in the module data, rendered within the endmatter card.&amp;quot;,&lt;br /&gt;
        [&amp;quot;line-no&amp;quot;] = &amp;quot;The line number of the call. $1 is the line number filled in from this.&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-class&amp;quot;] = &amp;quot;Header for modules that export a class&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-documentation&amp;quot;] = &amp;quot;Header for documentation section&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-function&amp;quot;] = &amp;quot;Header for modules that export a function&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-items&amp;quot;] = &amp;quot;Header for modules that export a static table&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-other&amp;quot;] = &amp;quot;Subheading for public items that aren&#039;t package members (e.g. return tables)&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-private&amp;quot;] = &amp;quot;Subheading for private items that are local to a module&amp;quot;,&lt;br /&gt;
        [&amp;quot;message-autogeneration&amp;quot;] = &amp;quot;Footer text for the code documentation in the output, showing that it is Lua-generated content.&amp;quot;,&lt;br /&gt;
        [&amp;quot;no-content&amp;quot;] = &amp;quot;Lua error when queried module is non-existent&amp;quot;,&lt;br /&gt;
        [&amp;quot;no-markup&amp;quot;] = &amp;quot;Lua error when queried module contains no documentation markup&amp;quot;,&lt;br /&gt;
        [&amp;quot;optional&amp;quot;] = &amp;quot;Optional tag documentation entry&amp;quot;,&lt;br /&gt;
        [&amp;quot;parentheses&amp;quot;] = &amp;quot;Used to wrap item types and tag entry types. {{optional}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;separator-colon&amp;quot;] = &amp;quot;Used to separate tag entry labels from the entry documentation. {{optional}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;separator-dot&amp;quot;] = &amp;quot;Used to separate horizontal lists such as item flags&amp;quot;,&lt;br /&gt;
        [&amp;quot;separator-semicolon&amp;quot;] = &amp;quot;Used to separate item or tag types. {{optional}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-error&amp;quot;] = &amp;quot;Tag entry label for a function&#039;s @error tags. $1 is the number of @error tags present for the item&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-field&amp;quot;] = &amp;quot;Tag entry label for a table&#039;s @field tags. $1 is the number of @field tags present for the item&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-fixme&amp;quot;] = &amp;quot;Tag entry label for an item&#039;s documented bugs. $1 is the number of @fixme tags present for the item&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-note&amp;quot;] = &amp;quot;Tag entry label for an item&#039;s developer notes. $1 is the number of @note tags present for the item&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-param&amp;quot;] = &amp;quot;{{PLURAL:$1|Parameter|Parameters}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-return&amp;quot;] = &amp;quot;Tag entry label for a function&#039;s @return tags&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-see&amp;quot;] = &amp;quot;Tag entry label for an item&#039;s @see tags&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-todo&amp;quot;] = &amp;quot;Tag entry label for an item&#039;s @todo tags&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-usage&amp;quot;] = &amp;quot;Tag entry label for an item&#039;s @usage tags&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-warning&amp;quot;] = &amp;quot;Tag entry label for an item&#039;s warning notes. $1 is the number of @warning tags present for the item&amp;quot;,&lt;br /&gt;
        [&amp;quot;todo&amp;quot;] = &amp;quot;Category to populate if a TODO tag is present in the module source.&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-boolean&amp;quot;] = &amp;quot;Lua&#039;s boolean type for items or tags&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-function&amp;quot;] = &amp;quot;Lua&#039;s function type for items or tags&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-member&amp;quot;] = &amp;quot;Custom type for class members that are primitives (boolean, number or string)&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-nil&amp;quot;] = &amp;quot;Lua&#039;s nil type for items or tags&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-number&amp;quot;] = &amp;quot;Lua&#039;s number type for items or tags&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-sequence&amp;quot;] = &amp;quot;Lua&#039;s table type for items or tags that are a sequence&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-string&amp;quot;] = &amp;quot;Lua&#039;s string type for items or tags&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-table&amp;quot;] = &amp;quot;Lua&#039;s table type for items or tags&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-variable&amp;quot;] = &amp;quot;Custom type for private items that are primitives (boolean, number or string) and local to a module&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;bn&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;header-class&amp;quot;] = &amp;quot;প্যাকেজ ক্লাস&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-documentation&amp;quot;] = &amp;quot;ডকুমেন্টেশন&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-function&amp;quot;] = &amp;quot;প্যাকেজ ফাঙ্কশন&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-items&amp;quot;] = &amp;quot;প্যাকেজ আইটেম&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-other&amp;quot;] = &amp;quot;অন্য আইটেম&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-private&amp;quot;] = &amp;quot;ব্যক্তিগত আইটেম&amp;quot;,&lt;br /&gt;
        [&amp;quot;no-content&amp;quot;] = &amp;quot;$1তে লুয়া সোর্স কোড পাওয়া যায়নি&amp;quot;,&lt;br /&gt;
        [&amp;quot;no-markup&amp;quot;] = &amp;quot;ডোকবুনটোর জন্য ডকুমেন্টেশন মার্কআপ $1এ পাওয়া যায়নি&amp;quot;,&lt;br /&gt;
        [&amp;quot;optional&amp;quot;] = &amp;quot;বিকল্পিক&amp;quot;,&lt;br /&gt;
        [&amp;quot;parentheses&amp;quot;] = &amp;quot; ($1)&amp;quot;,&lt;br /&gt;
        [&amp;quot;separator-colon&amp;quot;] = &amp;quot;; &amp;quot;,&lt;br /&gt;
        [&amp;quot;separator-dot&amp;quot;] = &amp;quot;&amp;amp;nbsp;• &amp;quot;,&lt;br /&gt;
        [&amp;quot;separator-semicolon&amp;quot;] = &amp;quot;: &amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-error&amp;quot;] = &amp;quot;{{plural:$1|ত্রূটি|ত্রূটি}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-field&amp;quot;] = &amp;quot;{{plural:$1|ফিল্ড|ফিল্ড}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-fixme&amp;quot;] = &amp;quot;{{plural:$1|বাগ|বাগ}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-note&amp;quot;] = &amp;quot;{{plural:$1|নোট|নোট}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-param&amp;quot;] = &amp;quot;{{plural:$1|প্যারামেটের|প্যারামেটের}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-return&amp;quot;] = &amp;quot;দেয়ে&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-see&amp;quot;] = &amp;quot;আরও দেখেন&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-todo&amp;quot;] = &amp;quot;টুডু&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-usage&amp;quot;] = &amp;quot;প্রয়োগ&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-warning&amp;quot;] = &amp;quot;{{plural:$1|সূচনা|সূচনা}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-boolean&amp;quot;] = &amp;quot;বুলিয়ান&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-function&amp;quot;] = &amp;quot;ফাঙ্কশন&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-member&amp;quot;] = &amp;quot;সদস্য&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-nil&amp;quot;] = &amp;quot;নাই&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-number&amp;quot;] = &amp;quot;সংখ্যা&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-string&amp;quot;] = &amp;quot;স্ট্রিং&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-table&amp;quot;] = &amp;quot;টেবিল&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-variable&amp;quot;] = &amp;quot;ভ্যারিয়েবল&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;de&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;header-class&amp;quot;] = &amp;quot;Paketklassen&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-documentation&amp;quot;] = &amp;quot;Dokumentation&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-function&amp;quot;] = &amp;quot;Paketfunktion&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-items&amp;quot;] = &amp;quot;Paketname&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-other&amp;quot;] = &amp;quot;Andere Werte&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-private&amp;quot;] = &amp;quot;Private Werte&amp;quot;,&lt;br /&gt;
        [&amp;quot;no-content&amp;quot;] = &amp;quot;Lua Quellcode in $1 nicht gefunden&amp;quot;,&lt;br /&gt;
        [&amp;quot;no-markup&amp;quot;] = &amp;quot;Dokumentation-Markup für Docbunto in $1 nicht gefunden&amp;quot;,&lt;br /&gt;
        [&amp;quot;optional&amp;quot;] = &amp;quot;optional&amp;quot;,&lt;br /&gt;
        [&amp;quot;parentheses&amp;quot;] = &amp;quot; ($1)&amp;quot;,&lt;br /&gt;
        [&amp;quot;separator-colon&amp;quot;] = &amp;quot;; &amp;quot;,&lt;br /&gt;
        [&amp;quot;separator-dot&amp;quot;] = &amp;quot;&amp;amp;nbsp;• &amp;quot;,&lt;br /&gt;
        [&amp;quot;separator-semicolon&amp;quot;] = &amp;quot;: &amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-error&amp;quot;] = &amp;quot;Fehler&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-field&amp;quot;] = &amp;quot;{{plural:$1|Feld|Felder}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-fixme&amp;quot;] = &amp;quot;Fehler&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-note&amp;quot;] = &amp;quot;{{plural:$1|Notiz|Notizen}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-param&amp;quot;] = &amp;quot;Parameter&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-return&amp;quot;] = &amp;quot;Ausgabe&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-see&amp;quot;] = &amp;quot;Siehe auch&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-todo&amp;quot;] = &amp;quot;TODO&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-usage&amp;quot;] = &amp;quot;Verwendung&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-warning&amp;quot;] = &amp;quot;{{plural:$1|Warnung|Warnungen}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-boolean&amp;quot;] = &amp;quot;Boolean&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-function&amp;quot;] = &amp;quot;Funktion&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-member&amp;quot;] = &amp;quot;Mitglied&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-nil&amp;quot;] = &amp;quot;null&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-number&amp;quot;] = &amp;quot;Nummer&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-sequence&amp;quot;] = &amp;quot;Sequenz&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-string&amp;quot;] = &amp;quot;String&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-table&amp;quot;] = &amp;quot;Table&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-variable&amp;quot;] = &amp;quot;Variable&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;fr&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;header-class&amp;quot;] = &amp;quot;Classe des paquets&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-documentation&amp;quot;] = &amp;quot;Documentation&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-function&amp;quot;] = &amp;quot;Fonction de paquet&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-items&amp;quot;] = &amp;quot;Objets du paquet&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-other&amp;quot;] = &amp;quot;Autres objets&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-private&amp;quot;] = &amp;quot;Objets privés&amp;quot;,&lt;br /&gt;
        [&amp;quot;no-content&amp;quot;] = &amp;quot;Code source Lua source non trouvée dans $1&amp;quot;,&lt;br /&gt;
        [&amp;quot;no-markup&amp;quot;] = &amp;quot;Documentation markup pour Docbunto introuvable dans $1&amp;quot;,&lt;br /&gt;
        [&amp;quot;optional&amp;quot;] = &amp;quot;optionnel&amp;quot;,&lt;br /&gt;
        [&amp;quot;parentheses&amp;quot;] = &amp;quot; ($1)&amp;quot;,&lt;br /&gt;
        [&amp;quot;separator-colon&amp;quot;] = &amp;quot;; &amp;quot;,&lt;br /&gt;
        [&amp;quot;separator-dot&amp;quot;] = &amp;quot;&amp;amp;nbsp;• &amp;quot;,&lt;br /&gt;
        [&amp;quot;separator-semicolon&amp;quot;] = &amp;quot;: &amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-error&amp;quot;] = &amp;quot;{{plural:$1|Erreur|Erreurs}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-field&amp;quot;] = &amp;quot;{{plural:$1|Champ|Champs}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-fixme&amp;quot;] = &amp;quot;{{plural:$1|Bug|Bugs}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-note&amp;quot;] = &amp;quot;{{plural:$1|Note|Notes}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-param&amp;quot;] = &amp;quot;{{plural:$1|Paramètre|Paramètres}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-return&amp;quot;] = &amp;quot;Retours&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-see&amp;quot;] = &amp;quot;Voir aussi&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-todo&amp;quot;] = &amp;quot;TODO&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-usage&amp;quot;] = &amp;quot;Utilisation&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-warning&amp;quot;] = &amp;quot;{{plural:$1|Avertissement|Avertissements}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-boolean&amp;quot;] = &amp;quot;booléen&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-function&amp;quot;] = &amp;quot;fonction&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-member&amp;quot;] = &amp;quot;membre&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-nil&amp;quot;] = &amp;quot;nil&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-number&amp;quot;] = &amp;quot;nombre&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-sequence&amp;quot;] = &amp;quot;séquence&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-string&amp;quot;] = &amp;quot;chaîne&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-table&amp;quot;] = &amp;quot;tableau&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-variable&amp;quot;] = &amp;quot;variable&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;hi&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;header-class&amp;quot;] = &amp;quot;क्लास को पैकेज करें&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-documentation&amp;quot;] = &amp;quot;प्रलेख&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-function&amp;quot;] = &amp;quot;फंक्शन को पैकेज करें&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-items&amp;quot;] = &amp;quot;पैकेज के आयटम&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-other&amp;quot;] = &amp;quot;दुसरे आयटम&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-private&amp;quot;] = &amp;quot;व्यक्तिगत आयटम्स&amp;quot;,&lt;br /&gt;
        [&amp;quot;no-content&amp;quot;] = &amp;quot;$1 में लुआ स्रोत कोड नहीं मिला&amp;quot;,&lt;br /&gt;
        [&amp;quot;no-markup&amp;quot;] = &amp;quot;Docbunto के लिए प्रलेख मार्कअप $1 में नहीं मिला&amp;quot;,&lt;br /&gt;
        [&amp;quot;optional&amp;quot;] = &amp;quot;वैकल्पिक&amp;quot;,&lt;br /&gt;
        [&amp;quot;parentheses&amp;quot;] = &amp;quot; ($1)&amp;quot;,&lt;br /&gt;
        [&amp;quot;separator-colon&amp;quot;] = &amp;quot;; &amp;quot;,&lt;br /&gt;
        [&amp;quot;separator-dot&amp;quot;] = &amp;quot;&amp;amp;nbsp;• &amp;quot;,&lt;br /&gt;
        [&amp;quot;separator-semicolon&amp;quot;] = &amp;quot;: &amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-error&amp;quot;] = &amp;quot;{{plural:$1|त्रुटि|त्रुटियाँ}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-field&amp;quot;] = &amp;quot;{{plural:$1|फ़ील्ड|फ़ील्ड्स}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-fixme&amp;quot;] = &amp;quot;{{plural:$1|बग|बग्स}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-note&amp;quot;] = &amp;quot;{{plural:$1|नोट|नोट्स}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-param&amp;quot;] = &amp;quot;{{plural:$1|पैरामीटर|पैरामीटर्स}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-return&amp;quot;] = &amp;quot;लौटाता है&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-see&amp;quot;] = &amp;quot;ये भी देखें&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-todo&amp;quot;] = &amp;quot;टू-डू&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-usage&amp;quot;] = &amp;quot;प्रयोग&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-warning&amp;quot;] = &amp;quot;{{plural:$1|चेतावनी|चेतावनियाँ}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-boolean&amp;quot;] = &amp;quot;बूलियन&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-function&amp;quot;] = &amp;quot;फंक्शन&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-member&amp;quot;] = &amp;quot;सदस्य&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-nil&amp;quot;] = &amp;quot;खाली&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-number&amp;quot;] = &amp;quot;संख्या&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-sequence&amp;quot;] = &amp;quot;क्रम&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-string&amp;quot;] = &amp;quot;स्ट्रिंग&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-table&amp;quot;] = &amp;quot;टेबल&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-variable&amp;quot;] = &amp;quot;वेरिएबल&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ja&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;header-class&amp;quot;] = &amp;quot;パッケージクラス&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-documentation&amp;quot;] = &amp;quot;ドキュメンテーション&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-function&amp;quot;] = &amp;quot;パッケージ関数&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-items&amp;quot;] = &amp;quot;パッケージ要素&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-other&amp;quot;] = &amp;quot;ほかアイテム&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-private&amp;quot;] = &amp;quot;プライベート要素&amp;quot;,&lt;br /&gt;
        [&amp;quot;optional&amp;quot;] = &amp;quot;オプションです&amp;quot;,&lt;br /&gt;
        [&amp;quot;parentheses&amp;quot;] = &amp;quot;（$1）&amp;quot;,&lt;br /&gt;
        [&amp;quot;separator-colon&amp;quot;] = &amp;quot;; &amp;quot;,&lt;br /&gt;
        [&amp;quot;separator-dot&amp;quot;] = &amp;quot;・&amp;quot;,&lt;br /&gt;
        [&amp;quot;separator-semicolon&amp;quot;] = &amp;quot;：&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-error&amp;quot;] = &amp;quot;エラー&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-field&amp;quot;] = &amp;quot;フィールド&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-fixme&amp;quot;] = &amp;quot;バグ&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-note&amp;quot;] = &amp;quot;ノート&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-param&amp;quot;] = &amp;quot;パラメータ&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-return&amp;quot;] = &amp;quot;{{plural:$1|戻り値|複数の戻り値}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-see&amp;quot;] = &amp;quot;関連項目&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-todo&amp;quot;] = &amp;quot;タスク&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-usage&amp;quot;] = &amp;quot;使用例&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-warning&amp;quot;] = &amp;quot;警告&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-boolean&amp;quot;] = &amp;quot;ブーリアン&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-function&amp;quot;] = &amp;quot;関数&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-member&amp;quot;] = &amp;quot;メンバ&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-nil&amp;quot;] = &amp;quot;空&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-number&amp;quot;] = &amp;quot;数&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-string&amp;quot;] = &amp;quot;文字列&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-table&amp;quot;] = &amp;quot;テーブル&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-variable&amp;quot;] = &amp;quot;変数&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ko&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;header-documentation&amp;quot;] = &amp;quot;문서&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-items&amp;quot;] = &amp;quot;패키지 아이템&amp;quot;,&lt;br /&gt;
        [&amp;quot;no-markup&amp;quot;] = &amp;quot;$1에서 Docbunto 문서 마크업을 찾지 못했습니다&amp;quot;,&lt;br /&gt;
        [&amp;quot;separator-dot&amp;quot;] = &amp;quot;・&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-param&amp;quot;] = &amp;quot;{{plural:$1|매개변수|매개변수}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-return&amp;quot;] = &amp;quot;반환값&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;pl&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;no-content&amp;quot;] = &amp;quot;Nie odnaleziono kodu źróðłowego Lua w $1&amp;quot;,&lt;br /&gt;
        [&amp;quot;no-markup&amp;quot;] = &amp;quot;Nie odnaleziono znaczników Docbunto w $1&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ru&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;header-class&amp;quot;] = &amp;quot;Класс пакета&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-documentation&amp;quot;] = &amp;quot;Документация&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-function&amp;quot;] = &amp;quot;Функция пакета&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-items&amp;quot;] = &amp;quot;Элементы пакета&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-other&amp;quot;] = &amp;quot;Другие элементы&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-private&amp;quot;] = &amp;quot;Приватные элементы&amp;quot;,&lt;br /&gt;
        [&amp;quot;no-content&amp;quot;] = &amp;quot;На $1 нет исходного кода Lua&amp;quot;,&lt;br /&gt;
        [&amp;quot;no-markup&amp;quot;] = &amp;quot;на $1 нет разметки документации Docbunto&amp;quot;,&lt;br /&gt;
        [&amp;quot;optional&amp;quot;] = &amp;quot;необязательный&amp;quot;,&lt;br /&gt;
        [&amp;quot;parentheses&amp;quot;] = &amp;quot; ($1)&amp;quot;,&lt;br /&gt;
        [&amp;quot;separator-colon&amp;quot;] = &amp;quot;; &amp;quot;,&lt;br /&gt;
        [&amp;quot;separator-dot&amp;quot;] = &amp;quot;&amp;amp;nbsp;• &amp;quot;,&lt;br /&gt;
        [&amp;quot;separator-semicolon&amp;quot;] = &amp;quot;: &amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-error&amp;quot;] = &amp;quot;{{plural:$1|Ошибка|Ошибки}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-field&amp;quot;] = &amp;quot;{{plural:$1|Поле|Поля}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-fixme&amp;quot;] = &amp;quot;{{plural:$1|Недочет|Недочеты}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-note&amp;quot;] = &amp;quot;{{plural:$1|Замечание|Замечания}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-param&amp;quot;] = &amp;quot;{{plural:$1|Аргумент|Аргументы}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-return&amp;quot;] = &amp;quot;Возвращает&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-see&amp;quot;] = &amp;quot;Смотрите также&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-todo&amp;quot;] = &amp;quot;TODO&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-usage&amp;quot;] = &amp;quot;Использование&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-warning&amp;quot;] = &amp;quot;{{plural:$1|Предупреждение|Предупреждения}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-boolean&amp;quot;] = &amp;quot;логический&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-function&amp;quot;] = &amp;quot;функция&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-member&amp;quot;] = &amp;quot;член класса&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-nil&amp;quot;] = &amp;quot;nil&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-number&amp;quot;] = &amp;quot;число&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-sequence&amp;quot;] = &amp;quot;последовательность&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-string&amp;quot;] = &amp;quot;строка&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-table&amp;quot;] = &amp;quot;таблица&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-variable&amp;quot;] = &amp;quot;переменная&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;tl&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;header-items&amp;quot;] = &amp;quot;Mga aytem sa package&amp;quot;,&lt;br /&gt;
        [&amp;quot;no-content&amp;quot;] = &amp;quot;Ang &#039;&#039;Luabsource code&#039;&#039; ay hindi mahanap sa $1&amp;quot;,&lt;br /&gt;
        [&amp;quot;no-markup&amp;quot;] = &amp;quot;Ang &#039;&#039;markup&#039;&#039; sa documentasyon para sa Docbuntu ay hindi mahanap sa $1&amp;quot;,&lt;br /&gt;
        [&amp;quot;optional&amp;quot;] = &amp;quot;opsyonal&amp;quot;,&lt;br /&gt;
        [&amp;quot;parentheses&amp;quot;] = &amp;quot;&amp;quot;,&lt;br /&gt;
        [&amp;quot;separator-dot&amp;quot;] = &amp;quot;&amp;amp;nbsp;• &amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-note&amp;quot;] = &amp;quot;{{plural:$1|Tala|Mga tala}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-todo&amp;quot;] = &amp;quot;MGA GAWAIN&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-usage&amp;quot;] = &amp;quot;Paggamit&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-warning&amp;quot;] = &amp;quot;{{plural:$1|Babala|Mga babala}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-table&amp;quot;] = &amp;quot;talaan&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-variable&amp;quot;] = &amp;quot;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;tr&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;header-class&amp;quot;] = &amp;quot;Paket sınıfı&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-documentation&amp;quot;] = &amp;quot;Belgelendirme&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-function&amp;quot;] = &amp;quot;Paket işlevi&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-items&amp;quot;] = &amp;quot;Paket öğeleri&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-other&amp;quot;] = &amp;quot;Diğer öğeler&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-private&amp;quot;] = &amp;quot;Özel öğeler&amp;quot;,&lt;br /&gt;
        [&amp;quot;no-content&amp;quot;] = &amp;quot;Lua kaynak kodu $1 sorgusunda bulunamadı&amp;quot;,&lt;br /&gt;
        [&amp;quot;no-markup&amp;quot;] = &amp;quot;Docbunto için belge işaretlemesi $1 sayfasında bulunamadı&amp;quot;,&lt;br /&gt;
        [&amp;quot;optional&amp;quot;] = &amp;quot;isteğe bağlı&amp;quot;,&lt;br /&gt;
        [&amp;quot;parentheses&amp;quot;] = &amp;quot; ($1)&amp;quot;,&lt;br /&gt;
        [&amp;quot;separator-colon&amp;quot;] = &amp;quot;; &amp;quot;,&lt;br /&gt;
        [&amp;quot;separator-dot&amp;quot;] = &amp;quot;&amp;amp;nbsp;• &amp;quot;,&lt;br /&gt;
        [&amp;quot;separator-semicolon&amp;quot;] = &amp;quot;: &amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-error&amp;quot;] = &amp;quot;{{plural:$1|Hata|Hatalar}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-field&amp;quot;] = &amp;quot;{{plural:$1|Alan|Alanlar}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-fixme&amp;quot;] = &amp;quot;{{plural:$1|Hata|Hatalar}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-note&amp;quot;] = &amp;quot;{{plural:$1|Not|Notlar}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-param&amp;quot;] = &amp;quot;{{plural:$1|Parametre|Parametreler}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-return&amp;quot;] = &amp;quot;Döndürmeler&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-see&amp;quot;] = &amp;quot;Ayrıca bakınız&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-todo&amp;quot;] = &amp;quot;YAPILACAKLAR&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-usage&amp;quot;] = &amp;quot;Kullanım&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-warning&amp;quot;] = &amp;quot;{{plural:$1|Uyarı|Uyarılar}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-boolean&amp;quot;] = &amp;quot;boole&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-function&amp;quot;] = &amp;quot;işlev&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-member&amp;quot;] = &amp;quot;üye&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-nil&amp;quot;] = &amp;quot;nil&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-number&amp;quot;] = &amp;quot;sayı&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-sequence&amp;quot;] = &amp;quot;sıra&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-string&amp;quot;] = &amp;quot;dize&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-table&amp;quot;] = &amp;quot;tablo&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-variable&amp;quot;] = &amp;quot;değişken&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;vi&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;header-class&amp;quot;] = &amp;quot;Lớp gói&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-documentation&amp;quot;] = &amp;quot;Tài liệu&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-function&amp;quot;] = &amp;quot;Hàm gói&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-items&amp;quot;] = &amp;quot;Mục gói&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-other&amp;quot;] = &amp;quot;Mục khác&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-private&amp;quot;] = &amp;quot;Mục riêng&amp;quot;,&lt;br /&gt;
        [&amp;quot;no-content&amp;quot;] = &amp;quot;Không tìm thấy mã nguồn Lua trong $1&amp;quot;,&lt;br /&gt;
        [&amp;quot;optional&amp;quot;] = &amp;quot;tuỳ chọn&amp;quot;,&lt;br /&gt;
        [&amp;quot;separator-colon&amp;quot;] = &amp;quot;; &amp;quot;,&lt;br /&gt;
        [&amp;quot;separator-dot&amp;quot;] = &amp;quot;&amp;amp;nbsp;• &amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-error&amp;quot;] = &amp;quot;Lỗi&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-field&amp;quot;] = &amp;quot;{{plural:$1|Trường|Các trường}}\n&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-note&amp;quot;] = &amp;quot;Lưu ý&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-param&amp;quot;] = &amp;quot;{{plural:$1|Tham số|Các tham số}}&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-return&amp;quot;] = &amp;quot;Trả về&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-see&amp;quot;] = &amp;quot;Xem thêm&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-usage&amp;quot;] = &amp;quot;Cách dùng&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-warning&amp;quot;] = &amp;quot;Cảnh báo&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-function&amp;quot;] = &amp;quot;hàm&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-member&amp;quot;] = &amp;quot;&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-number&amp;quot;] = &amp;quot;số&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-sequence&amp;quot;] = &amp;quot;chuỗi&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-string&amp;quot;] = &amp;quot;xâu&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-table&amp;quot;] = &amp;quot;bảng&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-variable&amp;quot;] = &amp;quot;biến&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;zh&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;header-class&amp;quot;] = &amp;quot;程序包类&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-documentation&amp;quot;] = &amp;quot;文档&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-function&amp;quot;] = &amp;quot;程序包函数&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-items&amp;quot;] = &amp;quot;程序包项&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-other&amp;quot;] = &amp;quot;其他项&amp;quot;,&lt;br /&gt;
        [&amp;quot;header-private&amp;quot;] = &amp;quot;私有项&amp;quot;,&lt;br /&gt;
        [&amp;quot;no-content&amp;quot;] = &amp;quot;没有在$1中找到Lua源代码&amp;quot;,&lt;br /&gt;
        [&amp;quot;no-markup&amp;quot;] = &amp;quot;没有在$1中找到Docbunto的文档标记&amp;quot;,&lt;br /&gt;
        [&amp;quot;optional&amp;quot;] = &amp;quot;可选&amp;quot;,&lt;br /&gt;
        [&amp;quot;parentheses&amp;quot;] = &amp;quot;（$1）&amp;quot;,&lt;br /&gt;
        [&amp;quot;separator-colon&amp;quot;] = &amp;quot;；&amp;quot;,&lt;br /&gt;
        [&amp;quot;separator-dot&amp;quot;] = &amp;quot;・&amp;quot;,&lt;br /&gt;
        [&amp;quot;separator-semicolon&amp;quot;] = &amp;quot;：&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-error&amp;quot;] = &amp;quot;错误&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-field&amp;quot;] = &amp;quot;字段&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-fixme&amp;quot;] = &amp;quot;漏洞&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-note&amp;quot;] = &amp;quot;注意&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-param&amp;quot;] = &amp;quot;参数&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-return&amp;quot;] = &amp;quot;返回&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-see&amp;quot;] = &amp;quot;另见&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-todo&amp;quot;] = &amp;quot;待办&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-usage&amp;quot;] = &amp;quot;用法&amp;quot;,&lt;br /&gt;
        [&amp;quot;tag-warning&amp;quot;] = &amp;quot;警告&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-boolean&amp;quot;] = &amp;quot;布尔&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-function&amp;quot;] = &amp;quot;函数&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-member&amp;quot;] = &amp;quot;成员&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-nil&amp;quot;] = &amp;quot;nil&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-number&amp;quot;] = &amp;quot;数字&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-sequence&amp;quot;] = &amp;quot;序列&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-string&amp;quot;] = &amp;quot;字符串&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-table&amp;quot;] = &amp;quot;表&amp;quot;,&lt;br /&gt;
        [&amp;quot;type-variable&amp;quot;] = &amp;quot;变量&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
-- &amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=Module:Entrypoint&amp;diff=830</id>
		<title>Module:Entrypoint</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=Module:Entrypoint&amp;diff=830"/>
		<updated>2026-09-18T17:39:11Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--- Entrypoint templating wrapper for Scribunto packages.&lt;br /&gt;
--  The module generates an entrypoint function that can execute Scribunto&lt;br /&gt;
--  package calls in the template context. This allows a package to support&lt;br /&gt;
--  both direct and template invocations.&lt;br /&gt;
--  &lt;br /&gt;
--  @script             entrypoint&lt;br /&gt;
--  @release            beta&lt;br /&gt;
--  @author             [[wikia:dev:User:8nml|8nml]] (Fandom Dev Wiki)&lt;br /&gt;
--  @param              {table} package Scribunto package.&lt;br /&gt;
--  @error[85]          {string} &#039;you must specify a function to call&#039;&lt;br /&gt;
--  @error[91]          {string} &#039;the function you specified did not exist&#039;&lt;br /&gt;
--  @error[opt,95]      {string} &#039;$2 is not a function&#039;&lt;br /&gt;
--  @return             {function} Template entrypoint - @{main}.&lt;br /&gt;
--  @note               Parent frames are not available in Entrypoint&#039;s&lt;br /&gt;
--                      `frame`. This is because recursive (grandparent)&lt;br /&gt;
--                      frame access is impossible in legacy Scribunto&lt;br /&gt;
--                      due to [[mw:Manual:Parser#Empty-argument expansion&lt;br /&gt;
--                      cache|empty-argument expansion cache]] limitations.&lt;br /&gt;
--  @note               As Entrypoint enables template access rather than&lt;br /&gt;
--                      a new extension hook, it does not work with named&lt;br /&gt;
--                      numeric parameters such as `1=` or `2=`. This may&lt;br /&gt;
--                      result in unexpected behaviour such as Entrypoint&lt;br /&gt;
--                      and module errors.&lt;br /&gt;
&lt;br /&gt;
--- Stateless, sequential Lua iterator.&lt;br /&gt;
--  @function           inext&lt;br /&gt;
--  @param              {table} t Invariant state to loop over.&lt;br /&gt;
--  @param              {number} i Control variable (current index).&lt;br /&gt;
--  @return[opt]        {number} Next index.&lt;br /&gt;
--  @return[opt]        {number|string|table|boolean} Next value.&lt;br /&gt;
--  @see                https://github.com/lua/lua/blob/v5.1.1/lbaselib.c#L247&lt;br /&gt;
local inext = select(1, ipairs{})&lt;br /&gt;
&lt;br /&gt;
--- Check for MediaWiki version 1.25.&lt;br /&gt;
--  The concurrent Scribunto release adds a type check for package functions.&lt;br /&gt;
--  @variable           {boolean} func_check&lt;br /&gt;
--  @see                [[mw:MediaWiki 1.24/wmf7#Scribunto]]&lt;br /&gt;
local func_check = tonumber(mw.site.currentVersion:match(&#039;^%d+.%d+&#039;)) &amp;gt;= 1.25&lt;br /&gt;
&lt;br /&gt;
--- MediaWiki error message getter.&lt;br /&gt;
--  Mimics Scribunto error formatting for script errors. &lt;br /&gt;
--  @function           msg&lt;br /&gt;
--  @param              {string} key MediaWiki i18n message key.&lt;br /&gt;
--  @param[opt]         {string} fn_name Name of package function.&lt;br /&gt;
--  @return             {string} Formatted lowercase message.&lt;br /&gt;
--  @local&lt;br /&gt;
local function msg(key, fn_name)&lt;br /&gt;
    return select(1, mw.message.new(key)&lt;br /&gt;
        :plain()&lt;br /&gt;
        :match(&#039;:%s*(.-)[.۔。෴։።]?$&#039;)&lt;br /&gt;
        :gsub(&#039;^.&#039;, mw.ustring.lower)&lt;br /&gt;
        :gsub(&#039;$2&#039;, fn_name or &#039;$2&#039;)&lt;br /&gt;
    )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Template entrypoint function generated by this module.&lt;br /&gt;
--  @function           main&lt;br /&gt;
--  @param              {Frame} frame Scribunto frame in module context.&lt;br /&gt;
--  @return             {string} Module output in template context.&lt;br /&gt;
return function(package) return function(f)&lt;br /&gt;
    local frame = f:getParent()&lt;br /&gt;
&lt;br /&gt;
    local args_mt = {}&lt;br /&gt;
    local arg_cache = {}&lt;br /&gt;
&lt;br /&gt;
    args_mt.__pairs = function()&lt;br /&gt;
        return next, arg_cache, nil&lt;br /&gt;
    end&lt;br /&gt;
    args_mt.__ipairs = function()&lt;br /&gt;
        return inext, arg_cache, 0&lt;br /&gt;
    end&lt;br /&gt;
    args_mt.__index = function(t, k)&lt;br /&gt;
        return arg_cache[k]&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    for key, val in pairs(frame.args) do&lt;br /&gt;
        arg_cache[key] = val&lt;br /&gt;
    end&lt;br /&gt;
    local fn_name = table.remove(arg_cache, 1)&lt;br /&gt;
&lt;br /&gt;
    f.args = setmetatable({}, args_mt)&lt;br /&gt;
    frame.args = setmetatable({}, args_mt)&lt;br /&gt;
&lt;br /&gt;
    if not fn_name then&lt;br /&gt;
        error(msg(&#039;scribunto-common-nofunction&#039;))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    fn_name = mw.text.trim(fn_name)&lt;br /&gt;
&lt;br /&gt;
    if not package[fn_name] then&lt;br /&gt;
        error(msg(&#039;scribunto-common-nosuchfunction&#039;, fn_name))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if func_check and type(package[fn_name]) ~= &#039;function&#039; then&lt;br /&gt;
        error(msg(&#039;scribunto-common-notafunction&#039;, fn_name))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return package[fn_name](frame)&lt;br /&gt;
end end&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=Module:Fallbacklist/doc&amp;diff=828</id>
		<title>Module:Fallbacklist/doc</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=Module:Fallbacklist/doc&amp;diff=828"/>
		<updated>2026-09-18T17:39:11Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lua autodoc|file=Fallbacklist|autodoc=1}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{Sandbox other||&lt;br /&gt;
&amp;lt;!-- Categories below this line; interwikis at Wikidata --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Module documentation pages]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=Module:Docbunto&amp;diff=826</id>
		<title>Module:Docbunto</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=Module:Docbunto&amp;diff=826"/>
		<updated>2026-09-18T17:39:11Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--- Docbunto is an automatic documentation generator for Scribunto modules.&lt;br /&gt;
--  The module is based on LuaDoc and LDoc. It produces documentation in&lt;br /&gt;
--  the form of MediaWiki markup, using `@tag`-prefixed comments embedded&lt;br /&gt;
--  in the source code of a Scribunto module. The taglet parser &amp;amp; doclet&lt;br /&gt;
--  renderer Docbunto uses are also publicly exposed to other modules.&lt;br /&gt;
--  &lt;br /&gt;
--  Docbunto code items are introduced by a block comment (`--[[]]--`), an&lt;br /&gt;
--  inline comment with three hyphens (`---`), or an inline `@tag` comment.&lt;br /&gt;
--  The module can use static code analysis to infer variable names, item&lt;br /&gt;
--  privacy (`local` keyword), tables (`{}` constructor) and functions&lt;br /&gt;
--  (`function` keyword). MediaWiki and Markdown formatting is supported.&lt;br /&gt;
--  &lt;br /&gt;
--  Items are usually rendered in the order they are defined, if they are&lt;br /&gt;
--  public items, or emulated classes extending the Lua primitives. There&lt;br /&gt;
--  are many customisation options available to change Docbunto behaviour.&lt;br /&gt;
--  &lt;br /&gt;
--  @module			 docbunto&lt;br /&gt;
--  @alias			  p&lt;br /&gt;
--  @require			Module:I18n&lt;br /&gt;
--  @require			Module:Lua_lexer&lt;br /&gt;
--  @require			Module:Unindent&lt;br /&gt;
--  @require			Module:Yesno&lt;br /&gt;
--  @require			Module:Arguments&lt;br /&gt;
--  @require			Module:Documentation&lt;br /&gt;
--  @author				[[wikia:dev:User:8nml|8nml]] (Fandom Dev Wiki)&lt;br /&gt;
--  @author				[[User:Awesome Aasim|Awesome Aasim]] (Wikimedia port)&lt;br /&gt;
--  @attribution		[https://github.com/stevedonovan @stevedonovan] ([https://github.com/stevedonovan/LDoc GitHub])&lt;br /&gt;
--  @release			beta&lt;br /&gt;
--  &amp;lt;nowiki&amp;gt;&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
--  Module dependencies.&lt;br /&gt;
local title = mw.title.getCurrentTitle()&lt;br /&gt;
local i18n = require(&#039;Module:I18n&#039;).loadMessages(&#039;Docbunto&#039;):useContentLang()&lt;br /&gt;
local references = mw.loadData(&#039;Module:Docbunto/references&#039;)&lt;br /&gt;
local lexer = require(&#039;Module:Lua lexer&#039;)&lt;br /&gt;
local unindent = require(&#039;Module:Unindent&#039;)&lt;br /&gt;
local yesno = require(&#039;Module:Yesno&#039;)&lt;br /&gt;
local doc = require(&#039;Module:Documentation&#039;)&lt;br /&gt;
&lt;br /&gt;
local fileTooBig&lt;br /&gt;
local usingOptionsContent&lt;br /&gt;
local hasTodoItems&lt;br /&gt;
&lt;br /&gt;
--  Module variables.&lt;br /&gt;
local DEFAULT_TITLE = title.namespace == 828 and doc.getEnvironment({}).templateTitle.text or &#039;&#039;&lt;br /&gt;
local DEFAULT_VARIABLE = DEFAULT_TITLE&lt;br /&gt;
	:gsub(&#039;^%u&#039;, mw.ustring.lower)&lt;br /&gt;
	:gsub(&#039;%s&#039;, &#039;_&#039;):gsub(&#039;%p&#039;, &#039;.&#039;)&lt;br /&gt;
local frame, gsub, match&lt;br /&gt;
&lt;br /&gt;
local syntaxhighlightPresent = mw.getCurrentFrame()&lt;br /&gt;
	:preprocess(&amp;quot;&amp;lt;syntaxhighlight lang=\&amp;quot;lua\&amp;quot;&amp;gt;-- Lua&amp;lt;/syntaxhighlight&amp;gt;&amp;quot;)&lt;br /&gt;
		~= &amp;quot;&amp;lt;syntaxhighlight lang=\&amp;quot;lua\&amp;quot;&amp;gt;-- Lua&amp;lt;/syntaxhighlight&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
--  Docbunto variables &amp;amp; tag tokens.&lt;br /&gt;
local TAG_MULTI = &#039;M&#039;&lt;br /&gt;
local TAG_ID = &#039;ID&#039;&lt;br /&gt;
local TAG_SINGLE = &#039;S&#039;&lt;br /&gt;
local TAG_TYPE = &#039;T&#039;&lt;br /&gt;
local TAG_FLAG = &#039;N&#039;&lt;br /&gt;
local TAG_MULTI_LINE = &#039;ML&#039;&lt;br /&gt;
&lt;br /&gt;
--  Docbunto processing patterns.&lt;br /&gt;
local patterns = {}&lt;br /&gt;
&lt;br /&gt;
--- Configuration options.&lt;br /&gt;
--  @table              options &lt;br /&gt;
--  @field[opt]         {boolean} options.all Include local items in&lt;br /&gt;
--                      documentation.&lt;br /&gt;
--  @field[opt]         {boolean} options.autodoc Whether the module is being&lt;br /&gt;
--                      called to automatically provide missing documentation.&lt;br /&gt;
--  @field[opt]         {boolean} options.boilerplate Removal of&lt;br /&gt;
--                      boilerplate (license block comments).&lt;br /&gt;
--  @field[opt]         {string} options.caption Infobox image caption.&lt;br /&gt;
--  @field[opt]         {boolean} options.code Only document Docbunto code&lt;br /&gt;
--                      items - exclude article infobox and lede from&lt;br /&gt;
--                      rendered documentation. Permits article to be&lt;br /&gt;
--                      edited in VisualEditor.&lt;br /&gt;
--  @field[opt]         {boolean} options.colon Format tags with a `:` suffix&lt;br /&gt;
--                      and without the `@` prefix. This bypasses the &amp;quot;doctag&lt;br /&gt;
--                      soup&amp;quot; some authors complain of.&lt;br /&gt;
--  @field[opt]         {string} options.image Infobox image.&lt;br /&gt;
--  @field[opt]         {boolean} options.box Include infobox in output.&lt;br /&gt;
--  @field[opt]         {boolean} options.footer Append a horizontal line &amp;amp;&lt;br /&gt;
--                      &amp;quot;generated by Docbunto&amp;quot; to the bottom of the output.&lt;br /&gt;
--  @field[opt]         {boolean} options.noluaref Don&#039;t link to the [[mw:&lt;br /&gt;
--  					Extension:Scribunto/Lua reference manual|Lua reference manual]] for types.&lt;br /&gt;
--  @field[opt]         {boolean} options.card Include endmatter card in the&lt;br /&gt;
--                      output at the end of the documentation.&lt;br /&gt;
--  @field[opt]         {boolean} options.plain Disable Markdown formatting&lt;br /&gt;
--                      in documentation.&lt;br /&gt;
--  @field[opt]         {string} options.preface Preface text to insert&lt;br /&gt;
--                      between lede &amp;amp; item documentation, used to provide&lt;br /&gt;
--                      usage and code examples.&lt;br /&gt;
--  @field[opt]         {boolean} options.simple Limit documentation to&lt;br /&gt;
--                      descriptions only. Removes documentation of&lt;br /&gt;
--                      subitem tags such as `@param` and `@field` ([[#Item&lt;br /&gt;
--                      subtags|see list]]).&lt;br /&gt;
--  @field[opt]         {boolean} options.sort Sort documentation items in&lt;br /&gt;
--                      alphabetical order.&lt;br /&gt;
--  @field[opt]         {boolean} options.strip Remove table index in&lt;br /&gt;
--                      documentation.&lt;br /&gt;
--  @field[opt]         {boolean} options.ulist Indent subitems as `&amp;lt;ul&amp;gt;`&lt;br /&gt;
--                      lists (LDoc/JSDoc behaviour).&lt;br /&gt;
--  @field[opt]         {boolean} options.verbose Show the code&lt;br /&gt;
--                      description of a package function when documenting&lt;br /&gt;
--                      function modules.&lt;br /&gt;
&lt;br /&gt;
--  Docbunto private utilities.&lt;br /&gt;
local utils = {}&lt;br /&gt;
&lt;br /&gt;
--- @{string.find} optimisation for @{string} functions.&lt;br /&gt;
--  @function           utils.strfind_wrap&lt;br /&gt;
--  @param              {function} strfunc String library function.&lt;br /&gt;
--  @return             {function} Function wrapped in @{string.find} check.&lt;br /&gt;
--  @local&lt;br /&gt;
function utils.strfind_wrap(func)&lt;br /&gt;
	return function(...)&lt;br /&gt;
		local arg = {...}&lt;br /&gt;
		if string.find(arg[1], arg[2]) then&lt;br /&gt;
			return func(...);&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--- String concatenation utility.&lt;br /&gt;
--  @function           join&lt;br /&gt;
--  @param              {sequence&amp;lt;string&amp;gt;} tbl Table of string segments&lt;br /&gt;
--  @return             {function} A concatenated string.&lt;br /&gt;
--  @local&lt;br /&gt;
function utils.join(tbl)&lt;br /&gt;
	return table.concat(tbl, &#039;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Pattern configuration function.&lt;br /&gt;
--  Resets patterns for each documentation build.&lt;br /&gt;
--  @function           utils.configure_patterns&lt;br /&gt;
--  @param              {options} options Configuration options.&lt;br /&gt;
--  @local&lt;br /&gt;
function utils.configure_patterns(options)&lt;br /&gt;
	-- Setup Unicode or ASCII character encoding (optimisation).&lt;br /&gt;
	gsub = utils.strfind_wrap(&lt;br /&gt;
		options.unicode&lt;br /&gt;
			and mw.ustring.gsub&lt;br /&gt;
			or  string.gsub&lt;br /&gt;
	)&lt;br /&gt;
	match = utils.strfind_wrap(&lt;br /&gt;
		options.unicode&lt;br /&gt;
			and mw.ustring.match&lt;br /&gt;
			or  string.match&lt;br /&gt;
	)&lt;br /&gt;
	patterns.DOCBUNTO_SUMMARY =&lt;br /&gt;
		options.iso639_th&lt;br /&gt;
			and &#039;^[^ ]+&#039;&lt;br /&gt;
			or&lt;br /&gt;
		options.unicode&lt;br /&gt;
			and &#039;^[^.։。।෴۔።]+[.։。।෴۔።]?&#039;&lt;br /&gt;
			or  &#039;^[^.]+%.?&#039;&lt;br /&gt;
	patterns.DOCBUNTO_CONCAT = options.iso639_th and &#039;&#039; or &#039; &#039;&lt;br /&gt;
	patterns.DOCBUNTO_TYPE = &#039;^{({*[^}]+}*)}%s*&#039;&lt;br /&gt;
	patterns.DOCBUNTO_WIKITEXT = &#039;^[{|!}:#*=]+[%s-}]+&#039;&lt;br /&gt;
&lt;br /&gt;
	-- Setup parsing tag patterns with colon mode support.&lt;br /&gt;
	patterns.DOCBUNTO_TAG = options.colon and &#039;^%s*(%w+):&#039; or &#039;^%s*@(%w+)&#039;&lt;br /&gt;
	patterns.DOCBUNTO_TAG_COMMENT = &#039;^[-%s]*&#039; .. patterns.DOCBUNTO_TAG:sub(2)&lt;br /&gt;
	patterns.DOCBUNTO_TAG_VALUE = patterns.DOCBUNTO_TAG .. &#039;(.*)&#039;&lt;br /&gt;
	patterns.DOCBUNTO_TAG_MOD_VALUE = patterns.DOCBUNTO_TAG .. &#039;%[([^%]]*)%](.*)&#039;&lt;br /&gt;
	patterns.DOCBUNTO_TAG_OPTION_VALUE = &#039;(%[[^%]]*%])%s*(.*)&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Tag processor function.&lt;br /&gt;
--  @function           utils.process_tag&lt;br /&gt;
--  @param              {string} str Tag string to process.&lt;br /&gt;
--  @return             {table} Tag object.&lt;br /&gt;
--  @local&lt;br /&gt;
function utils.process_tag(str)&lt;br /&gt;
	local tag = {}&lt;br /&gt;
&lt;br /&gt;
	if str:find(patterns.DOCBUNTO_TAG_MOD_VALUE) then&lt;br /&gt;
		tag.name, tag.modifiers, tag.value = str:match(patterns.DOCBUNTO_TAG_MOD_VALUE)&lt;br /&gt;
		local modifiers = {}&lt;br /&gt;
&lt;br /&gt;
		for m in tag.modifiers:gmatch(&#039;[^%s,]+&#039;) do&lt;br /&gt;
			local i = m:find(&#039;=&#039;)&lt;br /&gt;
			if i then&lt;br /&gt;
				local key = mw.text.trim(m:sub(1, i - 1))&lt;br /&gt;
				local val = mw.text.trim(m:sub(i + 1, #m))&lt;br /&gt;
				modifiers[key] = val&lt;br /&gt;
			else&lt;br /&gt;
				modifiers[m] = true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if modifiers.optchain then&lt;br /&gt;
			modifiers.opt = true&lt;br /&gt;
			modifiers.optchain = nil&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		tag.modifiers = modifiers&lt;br /&gt;
&lt;br /&gt;
	else&lt;br /&gt;
		tag.name, tag.value = str:match(patterns.DOCBUNTO_TAG_VALUE)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	tag.value = mw.text.trim(tag.value)&lt;br /&gt;
&lt;br /&gt;
	if p.tags._type_alias[tag.name] then&lt;br /&gt;
		if p.tags._type_alias[tag.name] ~= &#039;variable&#039; then&lt;br /&gt;
			tag.value = p.tags._type_alias[tag.name] .. &#039; &#039; .. tag.value&lt;br /&gt;
			tag.name = &#039;field&#039;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if tag.value:match(&#039;^%S+&#039;) ~= &#039;...&#039; then&lt;br /&gt;
		   tag.value = tag.value:gsub(&#039;^(%S+)&#039;, &#039;{%1}&#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	tag.name = p.tags._alias[tag.name] or tag.name&lt;br /&gt;
&lt;br /&gt;
	if tag.name ~= &#039;usage&#039; and tag.value:find(patterns.DOCBUNTO_TYPE) then&lt;br /&gt;
		tag.type = tag.value:match(patterns.DOCBUNTO_TYPE)&lt;br /&gt;
		if tag.type:find(&#039;^%?&#039;) then&lt;br /&gt;
			tag.type = tag.type:sub(2) .. &#039;|nil&#039;&lt;br /&gt;
		end&lt;br /&gt;
		tag.value = tag.value:gsub(patterns.DOCBUNTO_TYPE, &#039;&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if (tag.name == &#039;param&#039; or tag.name == &#039;field&#039;) and tag.value:find(patterns.DOCBUNTO_TAG_OPTION_VALUE) then&lt;br /&gt;
		tag.value = tag.value:gsub(patterns.DOCBUNTO_TAG_OPTION_VALUE, &#039;%1 %2&#039;)&lt;br /&gt;
		tag.modifiers = tag.modifiers or {}&lt;br /&gt;
		tag.modifiers.opt = true&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if p.tags[tag.name] == TAG_FLAG then&lt;br /&gt;
		tag.value = true&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return tag&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Module info extraction utility.&lt;br /&gt;
--  @function           utils.extract_info&lt;br /&gt;
--  @param              {table} documentation Package doclet info.&lt;br /&gt;
--  @return             {table} Information name-value map.&lt;br /&gt;
--  @local&lt;br /&gt;
function utils.extract_info(documentation)&lt;br /&gt;
	local info = {}&lt;br /&gt;
&lt;br /&gt;
	for _, tag in ipairs(documentation.tags) do&lt;br /&gt;
		if p.tags._module_info[tag.name] then&lt;br /&gt;
			if info[tag.name] then&lt;br /&gt;
				if not info[tag.name]:find(&#039;^%* &#039;) then&lt;br /&gt;
					info[tag.name] = &#039;* &#039; .. info[tag.name]&lt;br /&gt;
				end&lt;br /&gt;
				info[tag.name] = info[tag.name] .. &#039;\n* &#039; .. tag.value&lt;br /&gt;
&lt;br /&gt;
			else&lt;br /&gt;
				info[tag.name] = tag.value&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return info&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Type extraction utility.&lt;br /&gt;
--  @function           utils.extract_types&lt;br /&gt;
--  @param              {table} item Item documentation data.&lt;br /&gt;
--  @return             {sequence&amp;lt;string&amp;gt;} Item types.&lt;br /&gt;
--  @local&lt;br /&gt;
function utils.extract_types(item)&lt;br /&gt;
	local item_types = {}&lt;br /&gt;
	for _, tag in ipairs(item.tags) do&lt;br /&gt;
		if p.tags[tag.name] == TAG_TYPE then&lt;br /&gt;
			item_types[1] = tag.name&lt;br /&gt;
&lt;br /&gt;
			if tag.name == &#039;variable&#039; then&lt;br /&gt;
				local implied_local = utils.process_tag(&#039;@local&#039;)&lt;br /&gt;
				table.insert(item.tags, mw.clone(implied_local))&lt;br /&gt;
				item.tags[&#039;local&#039;] = mw.clone(implied_local)&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if&lt;br /&gt;
				p.tags._generic_tags[item_types[1]] and&lt;br /&gt;
				not p.tags._project_level[item_types[1]] and&lt;br /&gt;
				tag.type&lt;br /&gt;
			then&lt;br /&gt;
				item_types[#item_types + 1] = tag.type &lt;br /&gt;
			end&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return item_types&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Name extraction utility.&lt;br /&gt;
--  @function           utils.extract_name&lt;br /&gt;
--  @param              {table} item Item documentation data.&lt;br /&gt;
--  @param              {boolean} project Whether the item is project-level.&lt;br /&gt;
--  @return             {string} Item name.&lt;br /&gt;
--  @local&lt;br /&gt;
function utils.extract_name(item, opts)&lt;br /&gt;
	opts = opts or {}&lt;br /&gt;
	local item_name&lt;br /&gt;
	for _, tag in ipairs(item.tags) do&lt;br /&gt;
		if p.tags[tag.name] == TAG_TYPE then&lt;br /&gt;
			item_name = tag.value; break&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if item_name or not opts.project then&lt;br /&gt;
		return item_name&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	item_name = item.code:match(&#039;\nreturn%s+([%w_]+)&#039;)&lt;br /&gt;
&lt;br /&gt;
	if item_name == &#039;p&#039; and not item.tags[&#039;alias&#039;] then&lt;br /&gt;
		local implied_alias = { name = &#039;alias&#039;, value = &#039;p&#039; }&lt;br /&gt;
		item.tags[&#039;alias&#039;] = implied_alias&lt;br /&gt;
		table.insert(item.tags, implied_alias)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	item_name = (item_name and item_name ~= &#039;p&#039;)&lt;br /&gt;
		and item_name&lt;br /&gt;
		or  item.filename&lt;br /&gt;
				:gsub(&#039;^&#039; .. mw.site.namespaces[828].name .. &#039;:&#039;, &#039;&#039;)&lt;br /&gt;
				:gsub(&#039;^(%u)&#039;, mw.ustring.lower)&lt;br /&gt;
				:gsub(&#039;/&#039;, &#039;.&#039;):gsub(&#039; &#039;, &#039;_&#039;)&lt;br /&gt;
&lt;br /&gt;
	return item_name&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Source code utility for item name detection.&lt;br /&gt;
--  @function           utils.deduce_name&lt;br /&gt;
--  @param              {string} tokens Stream tokens for first line.&lt;br /&gt;
--  @param              {string} index Stream token index.&lt;br /&gt;
--  @param              {table} opts Configuration options.&lt;br /&gt;
--  @param[opt]         {boolean} opts.lookahead Whether a variable name succeeds the index.&lt;br /&gt;
--  @param[opt]         {boolean} opts.lookbehind Whether a variable name precedes the index.&lt;br /&gt;
--  @return             {string} Item name.&lt;br /&gt;
--  @local&lt;br /&gt;
function utils.deduce_name(tokens, index, opts)&lt;br /&gt;
	local name = &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
	if opts.lookbehind then&lt;br /&gt;
		for i2 = index, 1, -1 do&lt;br /&gt;
			if tokens[i2].type ~= &#039;keyword&#039; then&lt;br /&gt;
				name = tokens[i2].data .. name&lt;br /&gt;
			else&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	elseif opts.lookahead then&lt;br /&gt;
		for i2 = index, #tokens do&lt;br /&gt;
			if tokens[i2].type ~= &#039;keyword&#039; and not tokens[i2].data:find(&#039;^%(&#039;) then&lt;br /&gt;
				name = name .. tokens[i2].data&lt;br /&gt;
			else&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return name&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Parses Lua item names to extract a hierarchy.&lt;br /&gt;
--- @function           utils.parse_hierarchy&lt;br /&gt;
--  @param              {string} item_name Documentation item name.&lt;br /&gt;
--  @return             {sequence&amp;lt;string&amp;gt;} List of global keys to index the&lt;br /&gt;
--                      variable reference.&lt;br /&gt;
--  @local&lt;br /&gt;
function utils.parse_hierarchy(item_name)&lt;br /&gt;
	local hierarchy = {}&lt;br /&gt;
	for _, lexeme in ipairs(lexer(item_name)) do&lt;br /&gt;
		if lexeme.type == &#039;ident&#039; or lexeme.type == &#039;string&#039; or lexeme.type == &#039;number&#039; then&lt;br /&gt;
			hierarchy[#hierarchy + 1] = lexeme.text&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return hierarchy&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Code analysis utility.&lt;br /&gt;
--  @function           utils.code_heuristic&lt;br /&gt;
--  @param              {table} item Item documentation data.&lt;br /&gt;
--  @local&lt;br /&gt;
function utils.code_heuristic(item)&lt;br /&gt;
	local is_section = item.tags[&#039;private&#039;] or item.tags[&#039;local&#039;] or item.type == &#039;type&#039;&lt;br /&gt;
&lt;br /&gt;
	if item.name and item.type and is_section then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local tokens = lexer(item.code:match(&#039;^[^\n]*&#039;))[1]&lt;br /&gt;
	local t, i = tokens[1], 1&lt;br /&gt;
	local item_name, item_type&lt;br /&gt;
	local lexemes = {}&lt;br /&gt;
&lt;br /&gt;
	while t do&lt;br /&gt;
		if t.type ~= &#039;whitespace&#039; then&lt;br /&gt;
			lexemes[#lexemes + 1] = tokens[i]&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		t, i = tokens[i + 1], i + 1&lt;br /&gt;
	end&lt;br /&gt;
	t, i = lexemes[1], 1&lt;br /&gt;
&lt;br /&gt;
	while t do&lt;br /&gt;
		if t.data == &#039;=&#039; and not item.name then&lt;br /&gt;
			item_name = utils.deduce_name(lexemes, i - 1, { lookbehind = true })&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if t.data == &#039;function&#039; and not item.name then&lt;br /&gt;
			item_type = &#039;function&#039;&lt;br /&gt;
			if lexemes[i + 1] and lexemes[i + 1].data ~= &#039;(&#039; then&lt;br /&gt;
				item_name = utils.deduce_name(lexemes, i + 1, { lookahead = true })&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if t.data == &#039;{&#039; or t.data == &#039;{}&#039; and not item.type then&lt;br /&gt;
			item_type = &#039;table&#039;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if t.data == &#039;local&#039; and not is_section then&lt;br /&gt;
			local implied_local = utils.process_tag(&#039;@local&#039;)&lt;br /&gt;
			table.insert(item.tags, implied_local)&lt;br /&gt;
			item.tags[&#039;local&#039;] = mw.clone(implied_local)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		t, i = lexemes[i + 1], i + 1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	item.name = item.name or item_name or &#039;&#039;&lt;br /&gt;
	item.type = item.type or item_type&lt;br /&gt;
	if #(item.types or {}) == 0 then&lt;br /&gt;
		item.types[1] = item.type&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Array hash map conversion utility.&lt;br /&gt;
--  @function           utils.hash_map&lt;br /&gt;
--  @param              {table} item Item documentation data array.&lt;br /&gt;
--  @return             {table} Item documentation data map.&lt;br /&gt;
--  @local&lt;br /&gt;
function utils.hash_map(array)&lt;br /&gt;
	local map = array&lt;br /&gt;
	for _, element in ipairs(array) do&lt;br /&gt;
		if map[element.name] and not map[element.name].name then&lt;br /&gt;
			table.insert(map[element.name], mw.clone(element))&lt;br /&gt;
		elseif map[element.name] and map[element.name].name then&lt;br /&gt;
			map[element.name] = { map[element.name], mw.clone(element) }&lt;br /&gt;
		else&lt;br /&gt;
			map[element.name] = mw.clone(element)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return map&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Item export utility.&lt;br /&gt;
--  @function           utils.export_item&lt;br /&gt;
--  @param              {table} documentation Package documentation data.&lt;br /&gt;
--  @param              {string} item_reference Identifier name for item.&lt;br /&gt;
--  @param              {string} item_index Identifier name for item.&lt;br /&gt;
--  @param              {string} item_alias Export alias for item.&lt;br /&gt;
--  @param              {boolean} factory_item Whether the documentation item is a factory function.&lt;br /&gt;
--  @local&lt;br /&gt;
function utils.export_item(documentation, item_reference, item_index, item_alias, factory_item)&lt;br /&gt;
	for _, item in ipairs(documentation.items) do&lt;br /&gt;
		if item_reference == item.name then&lt;br /&gt;
			item.tags[&#039;local&#039;] = nil&lt;br /&gt;
			item.tags[&#039;private&#039;] = nil&lt;br /&gt;
&lt;br /&gt;
			for index, tag in ipairs(item.tags) do&lt;br /&gt;
				if p.tags._privacy_tags[tag.name] then&lt;br /&gt;
					table.remove(item.tags, index)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			item.type, item.types[1] = &#039;member&#039;, &#039;member&#039;&lt;br /&gt;
&lt;br /&gt;
			local accessor&lt;br /&gt;
			if item_alias:find(&#039;^%[&#039;) then&lt;br /&gt;
				accessor = &#039;&#039;&lt;br /&gt;
			else&lt;br /&gt;
				local is_class = documentation.type == &#039;classmod&#039; or factory_item&lt;br /&gt;
				if is_class and not item.tags[&#039;static&#039;] then&lt;br /&gt;
					accessor = &#039;:&#039;&lt;br /&gt;
				else&lt;br /&gt;
					accessor = &#039;.&#039;&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if factory_item then&lt;br /&gt;
				item.alias = utils.join{&lt;br /&gt;
					documentation.items[item_index].tags[&#039;factory&#039;].value,&lt;br /&gt;
					accessor,&lt;br /&gt;
					item_alias&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
			else&lt;br /&gt;
				item.alias = utils.join{&lt;br /&gt;
					((documentation.tags[&#039;alias&#039;] or {}).value or documentation.name),&lt;br /&gt;
					accessor,&lt;br /&gt;
					item_alias&lt;br /&gt;
				}&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			item.hierarchy = utils.parse_hierarchy(item.alias)&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Subitem tag correction utility.&lt;br /&gt;
--  @function           utils.correct_subitem_tag&lt;br /&gt;
--  @param              {table} item Item documentation data.&lt;br /&gt;
--  @local&lt;br /&gt;
function utils.correct_subitem_tag(item)&lt;br /&gt;
	local field_tag = item.tags[&#039;field&#039;]&lt;br /&gt;
	if item.type ~= &#039;function&#039; or not field_tag then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if field_tag.name then&lt;br /&gt;
		field_tag.name = &#039;param&#039;&lt;br /&gt;
	else&lt;br /&gt;
		for _, tag_el in ipairs(field_tag) do&lt;br /&gt;
			tag_el.name = &#039;param&#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local param_tag = item.tags[&#039;param&#039;]&lt;br /&gt;
	if param_tag and not param_tag.name then&lt;br /&gt;
		if field_tag.name then&lt;br /&gt;
			table.insert(param_tag, field_tag)&lt;br /&gt;
		else&lt;br /&gt;
			for _, tag_el in ipairs(field_tag) do&lt;br /&gt;
				table.insert(param_tag, tag_el)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	elseif param_tag and param_tag.name then&lt;br /&gt;
		if field_tag.name then&lt;br /&gt;
			param_tag = { param_tag, field_tag }&lt;br /&gt;
&lt;br /&gt;
		else&lt;br /&gt;
			for i, tag_el in ipairs(field_tag) do&lt;br /&gt;
				if i == 1  then&lt;br /&gt;
					param_tag = { param_tag }&lt;br /&gt;
				end&lt;br /&gt;
				for _, tag_el in ipairs(field_tag) do&lt;br /&gt;
					table.insert(param_tag, tag_el)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	else&lt;br /&gt;
		param_tag = field_tag&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	item.tags[&#039;field&#039;] = nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Item override tag utility.&lt;br /&gt;
--  @function           utils.override_item_tag&lt;br /&gt;
--  @param              {table} item Item documentation data.&lt;br /&gt;
--  @param              {string} name Tag name.&lt;br /&gt;
--  @param[opt]         {string} alias Target alias for tag.&lt;br /&gt;
--  @local&lt;br /&gt;
function utils.override_item_tag(item, name, alias)&lt;br /&gt;
	if item.tags[name] then&lt;br /&gt;
		item[alias or name] = item.tags[name].value&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Identity function.&lt;br /&gt;
--  @function           utils.identity&lt;br /&gt;
--  @param              x The variable by reference.&lt;br /&gt;
--  @return             The parameter `x` by reference.&lt;br /&gt;
--  @local&lt;br /&gt;
function utils.identity(x)&lt;br /&gt;
	return x&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Argument processing&lt;br /&gt;
-- @param				{string} funcName name of function&lt;br /&gt;
-- @return				function to process arguments&lt;br /&gt;
-- @local&lt;br /&gt;
local function makeInvokeFunc(funcName)&lt;br /&gt;
	return function (f)&lt;br /&gt;
		local args = require(&amp;quot;Module:Arguments&amp;quot;).getArgs(f, {&lt;br /&gt;
			valueFunc = function (key, value)&lt;br /&gt;
				if type(value) == &#039;string&#039; then&lt;br /&gt;
					value = value:match(&#039;^%s*(.-)%s*$&#039;) -- Remove whitespace.&lt;br /&gt;
					if key == &#039;heading&#039; or value ~= &#039;&#039; then&lt;br /&gt;
						return value&lt;br /&gt;
					else&lt;br /&gt;
						return nil&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					return value&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		})&lt;br /&gt;
		return p[funcName](args)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--  Docbunto rendering logic.&lt;br /&gt;
local frontend = {}&lt;br /&gt;
&lt;br /&gt;
--- Markdown header converter.&lt;br /&gt;
--  @function           urils.markdown_header&lt;br /&gt;
--  @param              {string} hash Leading hash.&lt;br /&gt;
--  @param              {string} text Header text.&lt;br /&gt;
--  @return             {string} MediaWiki header.&lt;br /&gt;
--  @local&lt;br /&gt;
function frontend.markdown_header(hash, text)&lt;br /&gt;
	local symbol = &#039;=&#039;&lt;br /&gt;
	return utils.join{&lt;br /&gt;
		&#039;\n&#039;,&lt;br /&gt;
		symbol:rep(#hash), &#039; &#039;, text, &#039; &#039;, symbol:rep(#hash),&lt;br /&gt;
		&#039;\n&#039;&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Item reference formatting.&lt;br /&gt;
--  @function           urils.item_reference&lt;br /&gt;
--  @param              {string} ref Item reference.&lt;br /&gt;
--  @return             {string} Internal MediaWiki link to article item.&lt;br /&gt;
--  @local&lt;br /&gt;
function frontend.item_reference(ref)&lt;br /&gt;
	local temp = mw.text.split(ref, &#039;|&#039;)&lt;br /&gt;
	local item = temp[1]&lt;br /&gt;
	local text = temp[2] or temp[1]&lt;br /&gt;
&lt;br /&gt;
	if references.items[item] then&lt;br /&gt;
		local interwiki = &#039;mw&#039;&lt;br /&gt;
		item = interwiki .. references.items[item]&lt;br /&gt;
	else&lt;br /&gt;
		item = &#039;#&#039; .. item&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return mw.text.tag{&lt;br /&gt;
		name = &#039;code&#039;,&lt;br /&gt;
		content = utils.join{ &#039;[[&#039;, item, &#039;|&#039;, text, &#039;]]&#039; }&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Doclet type reference preprocessor.&lt;br /&gt;
--  Formats types with links to the [[mw:Extension:Scribunto/Lua reference manual|Lua reference manual]].&lt;br /&gt;
--  @function           frontend.type_reference&lt;br /&gt;
--  @param              {table} item Item documentation data.&lt;br /&gt;
--  @param              {options} options Configuration options.&lt;br /&gt;
--  @local&lt;br /&gt;
function frontend.type_reference(item, options)&lt;br /&gt;
	local interwiki = &#039;mw:&#039;&lt;br /&gt;
&lt;br /&gt;
	if&lt;br /&gt;
		not options.noluaref and&lt;br /&gt;
		item.value and&lt;br /&gt;
		item.value:match(&#039;^%S+&#039;) == mw.text.tag(&#039;code&#039;, nil, &#039;...&#039;)&lt;br /&gt;
	then&lt;br /&gt;
		item.value = item.value:gsub(&#039;^(%S+)&#039;, mw.text.tag{&lt;br /&gt;
			name = &#039;code&#039;,&lt;br /&gt;
			content = utils.join{ &#039;[[&#039;, interwiki, &#039;Lua reference manual#varargs|...]]&#039; }&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Handle tag type references.&lt;br /&gt;
	item.types = item.types or item.type and { item.type }&lt;br /&gt;
&lt;br /&gt;
	if not item.types then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for index, item_type in ipairs(item.types) do&lt;br /&gt;
		item.types[index] = item.types[index]:gsub(&#039;[%w_. ]+&#039;, function(item_type)&lt;br /&gt;
			local data = references.types[item_type]&lt;br /&gt;
			local name = data and data.name or item_type&lt;br /&gt;
			if not name:match(&#039;%.&#039;) and not name:match(&#039;^%u&#039;) and data then&lt;br /&gt;
				name = i18n:msg(&#039;type-&#039; .. name)&lt;br /&gt;
			end&lt;br /&gt;
			if data and not options.noluaref then&lt;br /&gt;
				return utils.join{ &#039;[[&#039;, interwiki, data.link, &#039;|&#039;, name , &#039;]]&#039; }&lt;br /&gt;
			elseif&lt;br /&gt;
				item_type:find(i18n:msg(&#039;line-no&#039;):gsub(&#039;$1&#039;, &#039;&#039;))&lt;br /&gt;
			then&lt;br /&gt;
				return utils.join { &#039;[[&#039; , options.file , &#039;#L-&#039;,  item_type:sub(6), &#039;|&#039;, name, &#039;]]&#039; }&lt;br /&gt;
			elseif&lt;br /&gt;
				not options.noluaref and&lt;br /&gt;
				not p.tags._generic_tags[item_type]&lt;br /&gt;
			then&lt;br /&gt;
				return utils.join { &#039;[[#&#039;, item_type, &#039;|&#039;, name, &#039;]]&#039; }&lt;br /&gt;
			end&lt;br /&gt;
		end)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	item.type = table.concat(item.types, i18n:msg(&#039;separator-dot&#039;))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Markdown preprocessor to MediaWiki format.&lt;br /&gt;
--  @function           frontend.markdown&lt;br /&gt;
--  @param              {string} str Unprocessed Markdown string.&lt;br /&gt;
--  @return             {string} MediaWiki-compatible markup with HTML formatting.&lt;br /&gt;
--  @local&lt;br /&gt;
function frontend.markdown(str)&lt;br /&gt;
	-- Bold &amp;amp; italic tags.&lt;br /&gt;
	str = str:gsub(&#039;%*%*%*([^\n*]+)%*%*%*&#039;, &#039;&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;%1&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;&#039;)&lt;br /&gt;
	str = str:gsub(&#039;%*%*([^\n*]+)%*%*&#039;, &#039;&amp;lt;b&amp;gt;%1&amp;lt;/b&amp;gt;&#039;)&lt;br /&gt;
	str = str:gsub(&#039;%*([^\n*]+)%*&#039;, &#039;&amp;lt;i&amp;gt;%1&amp;lt;/i&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
	-- Self-closing header support.&lt;br /&gt;
	str = str:gsub(&#039;%f[^\n%z](#+) *([^\n#]+) *#+%s&#039;, frontend.markdown_header)&lt;br /&gt;
&lt;br /&gt;
	-- External and internal links.&lt;br /&gt;
	str = str:gsub(&#039;%[([^\n%]]+)%]%(([^\n][^\n)]-)%)&#039;, &#039;[%2 %1]&#039;)&lt;br /&gt;
	str = str:gsub(&#039;%{@link%s+([^}]+)%}&#039;, &#039;[%1]&#039;)&lt;br /&gt;
	str = str:gsub(&#039;%@{([^\n}]+)}&#039;, frontend.item_reference)&lt;br /&gt;
&lt;br /&gt;
	-- Programming &amp;amp; scientific notation.&lt;br /&gt;
	str = str:gsub(&#039;%f[&amp;quot;`]`([^\n`]+)`%f[^&amp;quot;`]&#039;, &#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;%1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;)&lt;br /&gt;
	str = str:gsub(&#039;%$%$([^\n$]+)%$%$&#039;, &#039;&amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;%1&amp;lt;/math&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
	-- Strikethroughs.&lt;br /&gt;
	str = str:gsub(&#039;~~([^\n~]+)~~&#039;, &#039;&amp;lt;del&amp;gt;%1&amp;lt;/del&amp;gt;&#039;)&lt;br /&gt;
	&lt;br /&gt;
	-- HTML output.&lt;br /&gt;
	return str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Doclet function item preprocessor.&lt;br /&gt;
--  Formats item name as a function call with top-level arguments.&lt;br /&gt;
--  @function           frontend.pretask_function_name&lt;br /&gt;
--  @param              {table} item Item documentation data.&lt;br /&gt;
--  @param              {options} options Configuration options.&lt;br /&gt;
--  @local&lt;br /&gt;
function frontend.pretask_function_name(item, options)&lt;br /&gt;
	local target = item.alias and &#039;alias&#039; or &#039;name&#039;&lt;br /&gt;
&lt;br /&gt;
	item[target] = item[target] .. &#039;(&#039;&lt;br /&gt;
&lt;br /&gt;
	if&lt;br /&gt;
		item.tags[&#039;param&#039;] and&lt;br /&gt;
		item.tags[&#039;param&#039;].value and&lt;br /&gt;
		not item.tags[&#039;param&#039;].value:find(&#039;^[%w_]+[.[]&#039;)&lt;br /&gt;
	then&lt;br /&gt;
		if (item.tags[&#039;param&#039;].modifiers or {})[&#039;opt&#039;] then&lt;br /&gt;
			local optional = mw.html.create(&#039;span&#039;)&lt;br /&gt;
			optional:css(&#039;opacity&#039;, &#039;0.65&#039;)&lt;br /&gt;
			optional:wikitext(item.tags[&#039;param&#039;].value:match(&#039;^(%S+)&#039;))&lt;br /&gt;
			item[target] = item[target] .. tostring(optional)&lt;br /&gt;
		else&lt;br /&gt;
			item[target] = item[target] .. item.tags[&#039;param&#039;].value:match(&#039;^(%S*)&#039;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	elseif item.tags[&#039;param&#039;] then&lt;br /&gt;
		for index, tag in ipairs(item.tags[&#039;param&#039;]) do&lt;br /&gt;
			if not tag.value:find(&#039;^[%w_]+[.[]&#039;) then&lt;br /&gt;
				if (tag.modifiers or {})[&#039;opt&#039;] then&lt;br /&gt;
					local param = mw.html.create(&#039;span&#039;)&lt;br /&gt;
					param:css(&#039;opacity&#039;, &#039;0.65&#039;)&lt;br /&gt;
					param:wikitext((index &amp;gt; 1 and &#039;, &#039; or &#039;&#039;) .. tag.value:match(&#039;^%S+&#039;))&lt;br /&gt;
					item[target] = item[target] .. tostring(param)&lt;br /&gt;
				else&lt;br /&gt;
					item[target] = item[target] .. (index &amp;gt; 1 and &#039;, &#039; or &#039;&#039;) .. tag.value:match(&#039;^(%S+)&#039;)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	item[target] = item[target] .. &#039;)&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Doclet parameter/field subitem preprocessor.&lt;br /&gt;
--  Indents and wraps variable prefix with `code` tag.&lt;br /&gt;
--  @function           pretask_variable_prefix&lt;br /&gt;
--  @param              {table} item Item documentation data.&lt;br /&gt;
--  @param              {options} options Configuration options.&lt;br /&gt;
--  @local&lt;br /&gt;
function frontend.pretask_variable_prefix(item, options)&lt;br /&gt;
	local indent_symbol = options.ulist and &#039;*&#039; or &#039;:&#039;&lt;br /&gt;
	local indent_level, indentation, item_id&lt;br /&gt;
&lt;br /&gt;
	if item.value then&lt;br /&gt;
		indent_level = item.value:match(&#039;^%S*&#039;) == &#039;...&#039;&lt;br /&gt;
			and 0&lt;br /&gt;
			or  select(2, item.value:match(&#039;^%S*&#039;):gsub(&#039;[.[]&#039;, &#039;&#039;))&lt;br /&gt;
		indentation = indent_symbol:rep(indent_level)&lt;br /&gt;
		item_id = options.item_id&lt;br /&gt;
		item.value = indentation .. item.value:gsub(&lt;br /&gt;
			&#039;^(%S+)&#039;,&lt;br /&gt;
			mw.text.tag{&lt;br /&gt;
				name = &#039;code&#039;,&lt;br /&gt;
				attrs = { id = item_id .. &#039;~%1&#039; },&lt;br /&gt;
				content = &#039;%1&#039;&lt;br /&gt;
			},&lt;br /&gt;
			1&lt;br /&gt;
		)&lt;br /&gt;
		&lt;br /&gt;
&lt;br /&gt;
	elseif item then&lt;br /&gt;
		for _, item_el in ipairs(item) do&lt;br /&gt;
			frontend.pretask_variable_prefix(item_el, options)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Doclet usage subitem preprocessor.&lt;br /&gt;
--  Formats usage example with `&amp;lt;syntaxhighlight&amp;gt;` tag.&lt;br /&gt;
--  @function           frontend.pretask_usage_highlight&lt;br /&gt;
--  @param              {table} item Item documentation data.&lt;br /&gt;
--  @param              {options} options Configuration options.&lt;br /&gt;
--  @local&lt;br /&gt;
function frontend.pretask_usage_highlight(item, options)&lt;br /&gt;
	if item.value then&lt;br /&gt;
		item.value = unindent(mw.text.trim(item.value))&lt;br /&gt;
		if item.value:find(&#039;^{{.+}}$&#039;) then&lt;br /&gt;
			item.value = item.value:gsub(&#039;=&#039;, mw.text.nowiki)&lt;br /&gt;
			local multi_line = item.value:find(&#039;\n&#039;) and &#039;|m = 1|&#039; or &#039;|&#039;&lt;br /&gt;
&lt;br /&gt;
			if item.value:match(&#039;^{{([^:]+)&#039;) == &#039;#invoke&#039; then&lt;br /&gt;
				item.value = item.value:gsub(&#039;^{{#invoke:&#039;, &#039;{{mlx&#039; .. multi_line)&lt;br /&gt;
&lt;br /&gt;
			else&lt;br /&gt;
				if options.entrypoint then&lt;br /&gt;
					item.value = item.value:gsub(&#039;^([^|]+)|%s*([^|}]-)(%s*)([|}])&#039;,&#039;%1|&amp;quot;%2&amp;quot;%3%4&#039;)&lt;br /&gt;
				end&lt;br /&gt;
				item.value = item.value:gsub(&#039;^{{&#039;, &#039;{{tlx&#039; .. multi_line)&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			local highlight_class = tonumber(mw.site.currentVersion:match(&#039;^%d%.%d+&#039;)) &amp;gt; 1.19&lt;br /&gt;
				and &#039;mw-highlight&#039;&lt;br /&gt;
				or  &#039;mw-geshi&#039;&lt;br /&gt;
&lt;br /&gt;
			if item.value:find(&#039;\n&#039;) then&lt;br /&gt;
				local highlight_div = mw.html.create(&#039;div&#039;)&lt;br /&gt;
				highlight_div.addClass(highlight_class)&lt;br /&gt;
				highlight_div.addClass(&#039;mw-content-ltr&#039;)&lt;br /&gt;
				highlight_div:attr(&#039;dir&#039;, &#039;ltr&#039;)&lt;br /&gt;
				highlight_div:wikitext(item.value)&lt;br /&gt;
				item.value = tostring(highlight_div)&lt;br /&gt;
&lt;br /&gt;
			else&lt;br /&gt;
				item.value = mw.text.tag{&lt;br /&gt;
					name = &#039;span&#039;,&lt;br /&gt;
					attrs = { class = &#039;code&#039; },&lt;br /&gt;
					content = item.value&lt;br /&gt;
				}&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
		else&lt;br /&gt;
			local highlight_tag = mw.html.create(&#039;syntaxhighlight&#039;)&lt;br /&gt;
			highlight_tag:attr(&#039;lang&#039;, &#039;lua&#039;)&lt;br /&gt;
			if not item.value:find(&#039;\n&#039;) then&lt;br /&gt;
				highlight_tag:attr(&#039;inline&#039;, &#039;inline&#039;)&lt;br /&gt;
			end&lt;br /&gt;
			highlight_tag:wikitext(item.value)&lt;br /&gt;
			item.value = tostring(highlight_tag)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	elseif item then&lt;br /&gt;
		for _, item_el in ipairs(item) do&lt;br /&gt;
			frontend.pretask_usage_highlight(item_el, options)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Doclet error subitem preprocessor.&lt;br /&gt;
--  Formats line numbers (`{#}`) in error tag values.&lt;br /&gt;
--  @function           frontend.pretask_error_line&lt;br /&gt;
--  @param              {table} item Item documentation data.&lt;br /&gt;
--  @local&lt;br /&gt;
function frontend.pretask_error_line(item, options)&lt;br /&gt;
	if item.name then&lt;br /&gt;
		local line&lt;br /&gt;
&lt;br /&gt;
		if item.modifiers and item.modifiers.line then&lt;br /&gt;
			line = item.modifiers.line&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		for mod in pairs(item.modifiers or {}) do&lt;br /&gt;
			if mod:find(&#039;^%d+$&#039;) then line = mod end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if line then&lt;br /&gt;
			if item.types then&lt;br /&gt;
				item.types[#item.types + 1] = i18n:msg(&#039;line-no&#039;, line)&lt;br /&gt;
&lt;br /&gt;
			else&lt;br /&gt;
				item.type = i18n:msg(&#039;line-no&#039;, line)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	elseif item then&lt;br /&gt;
		for _, item_el in ipairs(item) do&lt;br /&gt;
			frontend.pretask_error_line(item_el, options)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Doclet item renderer.&lt;br /&gt;
--  @function           frontend.render_item&lt;br /&gt;
--  @param              {table} stream Wikitext documentation stream.&lt;br /&gt;
--  @param              {table} item Item documentation data.&lt;br /&gt;
--  @param              {options} options Configuration options.&lt;br /&gt;
--  @param[opt]         {function} pretask Item data preprocessor.&lt;br /&gt;
--  @local&lt;br /&gt;
function frontend.render_item(stream, item, options, pretask)&lt;br /&gt;
	if pretask then pretask(item, options) end&lt;br /&gt;
	local item_name = item.alias or item.name&lt;br /&gt;
&lt;br /&gt;
	frontend.type_reference(item, options)&lt;br /&gt;
&lt;br /&gt;
	local item_type = item.type&lt;br /&gt;
&lt;br /&gt;
	for _, name in ipairs(p.tags._subtype_hierarchy) do&lt;br /&gt;
		if item.tags[name] then&lt;br /&gt;
			item_type = item_type .. i18n:msg(&#039;separator-dot&#039;) .. name&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	item_type = i18n:msg(&#039;parentheses&#039;, item_type)&lt;br /&gt;
&lt;br /&gt;
	if options.strip and item.export and item.hierarchy then&lt;br /&gt;
		item_name = item_name:gsub(&#039;^[%w_]+[.[]?&#039;, &#039;&#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- add single spaces between parentheses similar to&lt;br /&gt;
	-- MediaWiki documentation&lt;br /&gt;
	if not item_name:find( &#039;()&#039;, 1, true ) then&lt;br /&gt;
		item_name = item_name:gsub(&#039;%(&#039;, &#039;( &#039;)&lt;br /&gt;
		item_name = item_name:gsub(&#039;%)&#039;, &#039; )&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	item_name = item_name:gsub(&#039;%[&#039;, &#039;[ &#039;)&lt;br /&gt;
	item_name = item_name:gsub(&#039;%]&#039;, &#039; ]&#039;)&lt;br /&gt;
&lt;br /&gt;
	local code_node = mw.html.create(&#039;code&#039;)&lt;br /&gt;
		:attr(&#039;id&#039;, options.item_id)&lt;br /&gt;
		:wikitext(item_name)&lt;br /&gt;
&lt;br /&gt;
	if not usingOptionsContent then&lt;br /&gt;
		local span_node = stream:wikitext(&#039;;&#039;)&lt;br /&gt;
			:tag(&#039;span&#039;)&lt;br /&gt;
			:addClass(&#039;plainlinks docbunto-link&#039;)&lt;br /&gt;
		if fileTooBig or not syntaxhighlightPresent then&lt;br /&gt;
			span_node:wikitext(&#039;[{{fullurl:&#039; .. options.file .. &#039;|action=edit#mw-ce-l&#039; .. item.lineno .. &#039;}} &#039; .. tostring(code_node) .. &#039;]&#039;)&lt;br /&gt;
		elseif title.namespace == 828 and options.file == title.text then&lt;br /&gt;
			span_node:wikitext(&#039;[[&#039; .. &#039;#L-&#039; .. item.lineno .. &#039;|&#039; .. tostring(code_node) .. &#039;]]&#039;)&lt;br /&gt;
		else&lt;br /&gt;
			span_node:wikitext(&#039;[[&#039; .. options.file .. &#039;#L-&#039; .. item.lineno .. &#039;|&#039; ..  tostring(code_node) .. &#039;]]&#039;)&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		stream:wikitext(&#039;;&#039; .. tostring(code_node))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	stream&lt;br /&gt;
		:wikitext(item_type)&lt;br /&gt;
		:newline()&lt;br /&gt;
&lt;br /&gt;
	if (#(item.summary or &#039;&#039;) + #item.description) ~= 0 then&lt;br /&gt;
		local separator = #(item.summary or &#039;&#039;) ~= 0 and #item.description ~= 0&lt;br /&gt;
			and (item.description:find(patterns.DOCBUNTO_WIKITEXT) and &#039;\n&#039; or patterns.DOCBUNTO_CONCAT)&lt;br /&gt;
			or  &#039;&#039;&lt;br /&gt;
		local intro = (item.summary or &#039;&#039;) .. separator .. item.description&lt;br /&gt;
		intro = intro&lt;br /&gt;
			:gsub(&#039;\n([{:#*])&#039;, &#039;\n:%1&#039;)&lt;br /&gt;
			:gsub(&#039;\n\n([^=])&#039;, &#039;\n:%1&#039;)&lt;br /&gt;
		stream:wikitext(&#039;:&#039; .. intro):newline()&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Doclet tag renderer.&lt;br /&gt;
--  @function           frontend.render_tag&lt;br /&gt;
--  @param              {table} stream Wikitext documentation stream.&lt;br /&gt;
--  @param              {string} name Item tag name.&lt;br /&gt;
--  @param              {table} tag Item tag data.&lt;br /&gt;
--  @param              {options} options Configuration options.&lt;br /&gt;
--  @param[opt]         {function} pretask Item data preprocessor.&lt;br /&gt;
--  @local&lt;br /&gt;
function frontend.render_tag(stream, name, tag, options, pretask)&lt;br /&gt;
	if pretask then pretask(tag, options) end&lt;br /&gt;
	if tag.value then&lt;br /&gt;
		frontend.type_reference(tag, options)&lt;br /&gt;
		local tag_name = i18n:msg(&#039;tag-&#039; .. name, &#039;1&#039;)&lt;br /&gt;
&lt;br /&gt;
		-- Handle ul/ol/dl comment support.&lt;br /&gt;
		stream:wikitext(&#039;:&#039;)&lt;br /&gt;
			:tag(&#039;b&#039;)&lt;br /&gt;
				:wikitext(tag_name)&lt;br /&gt;
				:done():done()&lt;br /&gt;
			:wikitext(i18n:msg(&#039;separator-semicolon&#039;))&lt;br /&gt;
			:wikitext((mw.text.trim(tag.value):gsub(&#039;\n([{:#*])&#039;, &#039;\n:%1&#039;)))&lt;br /&gt;
&lt;br /&gt;
		if tag.value:find(&#039;\n[{:#*]&#039;) and (tag.type or (tag.modifiers or {})[&#039;opt&#039;]) then&lt;br /&gt;
			stream:newline():wikitext(&#039;:&#039;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Type and optional appositive for tag.&lt;br /&gt;
		if tag.type and (tag.modifiers or {})[&#039;opt&#039;] then&lt;br /&gt;
			stream:wikitext(i18n:msg{&lt;br /&gt;
				key = &#039;parentheses&#039;,&lt;br /&gt;
				args = {&lt;br /&gt;
					tag.type ..&lt;br /&gt;
					i18n:msg(&#039;separator-colon&#039;) ..&lt;br /&gt;
					i18n:msg(&#039;optional&#039;)&lt;br /&gt;
				}&lt;br /&gt;
			})&lt;br /&gt;
&lt;br /&gt;
		elseif tag.type then&lt;br /&gt;
			stream:wikitext(i18n:msg{&lt;br /&gt;
				key = &#039;parentheses&#039;,&lt;br /&gt;
				args = { tag.type }&lt;br /&gt;
			})&lt;br /&gt;
&lt;br /&gt;
		elseif (tag.modifiers or {})[&#039;opt&#039;] then&lt;br /&gt;
			stream:wikitext(i18n:msg{&lt;br /&gt;
				key = &#039;parentheses&#039;,&lt;br /&gt;
				args = { i18n:msg(&#039;optional&#039;) }&lt;br /&gt;
			})&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		stream:newline()&lt;br /&gt;
&lt;br /&gt;
	else&lt;br /&gt;
		local tag_name = i18n:msg(&#039;tag-&#039; .. name, tostring(#tag))&lt;br /&gt;
		stream&lt;br /&gt;
			:wikitext(&#039;:&#039;)&lt;br /&gt;
			:tag(&#039;b&#039;)&lt;br /&gt;
				:wikitext(tag_name)&lt;br /&gt;
				:done():done()&lt;br /&gt;
			:wikitext(i18n:msg(&#039;separator-semicolon&#039;))&lt;br /&gt;
			:newline()&lt;br /&gt;
&lt;br /&gt;
		for _, tag_el in ipairs(tag) do&lt;br /&gt;
			frontend.type_reference(tag_el, options)&lt;br /&gt;
			local marker = options.ulist and &#039;*&#039; or &#039;:&#039;&lt;br /&gt;
			stream:wikitext(&#039;:&#039; .. marker .. tag_el.value:gsub(&#039;\n([{:#*])&#039;, &#039;\n:&#039; .. marker .. &#039;%1&#039;))&lt;br /&gt;
&lt;br /&gt;
			if tag_el.value:find(&#039;\n[{:#*]&#039;) and (tag_el.type or (tag_el.modifiers or {})[&#039;opt&#039;]) then&lt;br /&gt;
				stream:newline():wikitext(&#039;:&#039; .. marker .. (tag_el.value:match(&#039;^[*:]+&#039;) or &#039;&#039;))&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if tag_el.type and (tag_el.modifiers or {})[&#039;opt&#039;] then&lt;br /&gt;
				stream:wikitext(i18n:msg{&lt;br /&gt;
					key = &#039;parentheses&#039;,&lt;br /&gt;
					args = {&lt;br /&gt;
						tag_el.type ..&lt;br /&gt;
						i18n:msg(&#039;separator-colon&#039;) ..&lt;br /&gt;
						i18n:msg(&#039;optional&#039;)&lt;br /&gt;
					}&lt;br /&gt;
				})&lt;br /&gt;
&lt;br /&gt;
			elseif tag_el.type then&lt;br /&gt;
				stream:wikitext(i18n:msg{&lt;br /&gt;
					key = &#039;parentheses&#039;,&lt;br /&gt;
					args = { tag_el.type }&lt;br /&gt;
				})&lt;br /&gt;
&lt;br /&gt;
			elseif (tag_el.modifiers or {})[&#039;opt&#039;] then&lt;br /&gt;
				stream:wikitext(i18n:msg{&lt;br /&gt;
					key = &#039;parentheses&#039;,&lt;br /&gt;
					args = { i18n:msg(&#039;optional&#039;) }&lt;br /&gt;
				})&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			stream:newline()&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Template entrypoint for [[Template:Docbunto]].&lt;br /&gt;
--  @function           p._main&lt;br /&gt;
--  @param              {table} args Arguments&lt;br /&gt;
--  @return             {string} Module documentation output.&lt;br /&gt;
function p._main(args)&lt;br /&gt;
	frame = mw.getCurrentFrame()&lt;br /&gt;
&lt;br /&gt;
	local modname = mw.text.trim(args[1] or args.file or DEFAULT_TITLE)&lt;br /&gt;
&lt;br /&gt;
	local options = {}&lt;br /&gt;
	options.file = modname&lt;br /&gt;
	options.all = yesno(args.all or false)&lt;br /&gt;
	options.autodoc = yesno(args.autodoc or false)&lt;br /&gt;
	options.boilerplate = yesno(args.boilerplate or options.autodoc or false)&lt;br /&gt;
	options.box = yesno(args.box or args.infobox or options.autodoc or false)&lt;br /&gt;
	options.caption = args.caption&lt;br /&gt;
	options.card = yesno(args.card or (title.namespace == 828 and not options.autodoc))&lt;br /&gt;
	options.code = yesno(args.code or false)&lt;br /&gt;
	options.colon = yesno(args.colon or false)&lt;br /&gt;
	options.footer = yesno(args.footer or title.namespace == 828)&lt;br /&gt;
	options.image = args.image&lt;br /&gt;
	options.migration = yesno(args.migration or false)&lt;br /&gt;
	options.noluaref = yesno(args.noluaref or false)&lt;br /&gt;
	options.plain = yesno(args.plain or false)&lt;br /&gt;
	options.preface = args.preface&lt;br /&gt;
	options.simple = yesno(args.simple or false)&lt;br /&gt;
	options.sort = yesno(args.sort or false)&lt;br /&gt;
	options.strip = yesno(args.strip or false)&lt;br /&gt;
	options.verbose = yesno(args.verbose or false)&lt;br /&gt;
	options.ulist = yesno(args.ulist or false)&lt;br /&gt;
	return p.build(modname, options)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Entrypoint for the module.&lt;br /&gt;
--  @function		   p.main&lt;br /&gt;
--  @param			  {Frame} frame Module frame.&lt;br /&gt;
--  @return			 {string} Module documentation output.&lt;br /&gt;
p.main = makeInvokeFunc(&#039;_main&#039;)&lt;br /&gt;
&lt;br /&gt;
--- Scribunto documentation generator entrypoint.&lt;br /&gt;
--  @function           p.build&lt;br /&gt;
--  @param[opt]         {string} modname Module page name (without namespace).&lt;br /&gt;
--                      Default: second-level subpage.&lt;br /&gt;
--  @param[opt]         {options} options Configuration options.&lt;br /&gt;
function p.build(modname, options)&lt;br /&gt;
	modname = modname or DEFAULT_TITLE&lt;br /&gt;
	options = options or {}&lt;br /&gt;
&lt;br /&gt;
	local tagdata = p.taglet(modname, options)&lt;br /&gt;
	local docdata = p.doclet(tagdata, options)&lt;br /&gt;
&lt;br /&gt;
	return docdata&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Docbunto taglet parser for Scribunto modules.&lt;br /&gt;
--  @function           p.taglet&lt;br /&gt;
--  @param[opt]         {string} modname Module page name (without namespace).&lt;br /&gt;
--  @param[opt]         {options} options Configuration options.&lt;br /&gt;
--  @error[line=1081]   {string} &#039;Lua source code not found in $1&#039;&lt;br /&gt;
--  @error[line=1087]   {string} &#039;documentation markup for Docbunto not found in $1&#039;&lt;br /&gt;
--  @return             {table} Module documentation data.&lt;br /&gt;
function p.taglet(modname, options)&lt;br /&gt;
	modname = modname or DEFAULT_TITLE&lt;br /&gt;
	options = options or {}&lt;br /&gt;
&lt;br /&gt;
	local filepath = mw.site.namespaces[828].name .. &#039;:&#039; .. modname&lt;br /&gt;
	local content = mw.title.new(filepath):getContent()&lt;br /&gt;
&lt;br /&gt;
	-- Content checks.&lt;br /&gt;
	if options.content then&lt;br /&gt;
		content = options.content&lt;br /&gt;
		usingOptionsContent = true&lt;br /&gt;
	else&lt;br /&gt;
		content = mw.title.new(filepath):getContent() or error(i18n:msg(&#039;no-content&#039;, filepath), 0)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Syntax highlighting is disabled for files above a specific size&lt;br /&gt;
	fileTooBig = content:len() &amp;gt; 102400&lt;br /&gt;
&lt;br /&gt;
	if&lt;br /&gt;
		not content:match(&#039;%-%-%-&#039;) and&lt;br /&gt;
		not content:match(options.colon and &#039;%w+:&#039; or &#039;@%w+&#039;)&lt;br /&gt;
	then&lt;br /&gt;
		error(i18n:msg(&#039;no-markup&#039;, filepath))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	-- Remove leading escapes.&lt;br /&gt;
	content = content:gsub(&#039;^%-%-+%s*&amp;lt;[^&amp;gt;]+&amp;gt;\n&#039;, &#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
	-- Remove closing pretty comments.&lt;br /&gt;
	content = content:gsub(&#039;\n%-%-%-%-%-+(\n[^-]+)&#039;, &#039;\n-- %1&#039;)&lt;br /&gt;
&lt;br /&gt;
	-- Remove boilerplate block comments.&lt;br /&gt;
	if options.boilerplate then&lt;br /&gt;
		content = content:gsub(&#039;^%-%-%[=*%[\n.-\n%-?%-?%]%=*]%-?%-?%s+&#039;, &#039;&#039;)&lt;br /&gt;
		content = content:gsub(&#039;%s+%-%-%[=*%[\n.-\n%-?%-?%]%=*]%-?%-?$&#039;, &#039;&#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Configure patterns for colon mode and Unicode character encoding.&lt;br /&gt;
	options.unicode = type(content:find(&#039;[^%w%c%p%s]+&#039;)) == &#039;number&#039;&lt;br /&gt;
	options.iso639_th = type(content:find(&#039;\224\184[\129-\155]&#039;)) == &#039;number&#039;&lt;br /&gt;
	utils.configure_patterns(options)&lt;br /&gt;
&lt;br /&gt;
	-- Content lexing.&lt;br /&gt;
	local lines = lexer(content)&lt;br /&gt;
	local tokens = {}&lt;br /&gt;
	local dummy_token = {&lt;br /&gt;
		data = &#039;&#039;,&lt;br /&gt;
		posFirst = 1,&lt;br /&gt;
		posLast = 1&lt;br /&gt;
	}&lt;br /&gt;
	local token_closure = 0&lt;br /&gt;
	for _, line in ipairs(lines) do&lt;br /&gt;
		if #line == 0 then&lt;br /&gt;
			dummy_token.type = token_closure == 0&lt;br /&gt;
				and &#039;whitespace&#039;&lt;br /&gt;
				or  tokens[#tokens].type&lt;br /&gt;
			table.insert(tokens, mw.clone(dummy_token))&lt;br /&gt;
		else&lt;br /&gt;
			for _, token in ipairs(line) do&lt;br /&gt;
				 if token.data:find(&#039;^%[=*%[$&#039;) or token.data:find(&#039;^%-%-%[=*%[$&#039;) then&lt;br /&gt;
					token_closure = 1&lt;br /&gt;
				end&lt;br /&gt;
				if token.data:find(&#039;]=*]&#039;) then&lt;br /&gt;
					token_closure = 0&lt;br /&gt;
				end&lt;br /&gt;
				table.insert(tokens, token)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Start documentation data.&lt;br /&gt;
	local documentation = {}&lt;br /&gt;
	documentation.filename = filepath&lt;br /&gt;
	documentation.description = &#039;&#039;&lt;br /&gt;
	documentation.code = content&lt;br /&gt;
	documentation.comments = {}&lt;br /&gt;
	documentation.tags = {}&lt;br /&gt;
	documentation.items = {}&lt;br /&gt;
	local line_no = 0&lt;br /&gt;
	local item_index = 0&lt;br /&gt;
&lt;br /&gt;
	-- Taglet tracking variables.&lt;br /&gt;
	local start_mode = true&lt;br /&gt;
	local comment_mode = false&lt;br /&gt;
	local doctag_mode = false&lt;br /&gt;
&lt;br /&gt;
	local export_mode = false&lt;br /&gt;
	local special_tag = false&lt;br /&gt;
	local pragma_mode = false&lt;br /&gt;
	local factory_mode = false&lt;br /&gt;
	local return_mode = false&lt;br /&gt;
&lt;br /&gt;
	local comment_tail = &#039;&#039;&lt;br /&gt;
	local tag_name = &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
	local new_item = false&lt;br /&gt;
	local new_tag = false&lt;br /&gt;
	local new_tag_item = false&lt;br /&gt;
	local new_item_code = false&lt;br /&gt;
	local pretty_comment = false&lt;br /&gt;
	local comment_brace = false&lt;br /&gt;
&lt;br /&gt;
	local t, i, item = tokens[1], 1&lt;br /&gt;
&lt;br /&gt;
	local p_success, p_error = pcall(function()&lt;br /&gt;
&lt;br /&gt;
	while t do&lt;br /&gt;
		-- Taglet variable update.&lt;br /&gt;
		new_item = t.data:find(&#039;^%-%-%-&#039;) or t.data:find(&#039;^%-%-%[%=*%[$&#039;)&lt;br /&gt;
		comment_tail = t.data:gsub(&#039;^%-%-+&#039;, &#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
		tag_name = comment_tail:match(patterns.DOCBUNTO_TAG)&lt;br /&gt;
		tag_name = p.tags._alias[tag_name] or tag_name&lt;br /&gt;
&lt;br /&gt;
		new_tag = type(p.tags[tag_name]) == &#039;string&#039;&lt;br /&gt;
		local last_token = t.posFirst ~= 1 and 2 or 1&lt;br /&gt;
		new_tag_item = (&lt;br /&gt;
			new_tag and i &amp;gt; 1 and tokens[i - last_token].type ~= &#039;comment&#039;&lt;br /&gt;
			and not tokens[i - last_token].data:find(patterns.DOCBUNTO_TAG_COMMENT)&lt;br /&gt;
		)&lt;br /&gt;
		pretty_comment =&lt;br /&gt;
			t.data:find(&#039;^%-%-%-+%s*$&#039;)             or&lt;br /&gt;
			t.data:find(&#039;[^-]+%-%-%-+%s*$&#039;)         or&lt;br /&gt;
			t.data:find(&#039;%-*[ \t]*&amp;lt;nowiki&amp;gt;$&#039;)       or&lt;br /&gt;
			t.data:find(&#039;%-*[ \t]*&amp;lt;pre&amp;gt;$&#039;)&lt;br /&gt;
		comment_brace =&lt;br /&gt;
			t.data:find(&#039;^%-%-%[=*%[$&#039;)             or&lt;br /&gt;
			t.data:find(&#039;^%-%-%]=*%]$&#039;)             or&lt;br /&gt;
			t.data:find(&#039;^%]=*%]%-%-$&#039;)&lt;br /&gt;
		pragma_mode = tag_name == &#039;pragma&#039;&lt;br /&gt;
		export_mode = tag_name == &#039;export&#039; and not doctag_mode&lt;br /&gt;
		special_tag = pragma_mode or export_mode&lt;br /&gt;
		local tags, tag, subtokens, separator&lt;br /&gt;
&lt;br /&gt;
		-- Line counter.&lt;br /&gt;
		if t.posFirst == 1 then&lt;br /&gt;
			line_no = line_no + 1&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Data insertion logic.&lt;br /&gt;
		if t.type == &#039;comment&#039; then&lt;br /&gt;
			if new_item then&lt;br /&gt;
				comment_mode = true&lt;br /&gt;
			end&lt;br /&gt;
			if (new_tag or new_tag_item) and not special_tag then&lt;br /&gt;
				comment_mode = true&lt;br /&gt;
				doctag_mode = true&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			-- Module-level documentation taglet.&lt;br /&gt;
			if start_mode then&lt;br /&gt;
				table.insert(documentation.comments, t.data)&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			-- Module description.&lt;br /&gt;
			if&lt;br /&gt;
				start_mode and comment_mode and&lt;br /&gt;
				not new_tag and not doctag_mode and&lt;br /&gt;
				not pretty_comment and not comment_brace&lt;br /&gt;
			then&lt;br /&gt;
				separator = mw.text.trim(comment_tail):find(patterns.DOCBUNTO_WIKITEXT)&lt;br /&gt;
					and &#039;\n&#039;&lt;br /&gt;
					or  (#documentation.description ~= 0 and patterns.DOCBUNTO_CONCAT or &#039;&#039;)&lt;br /&gt;
				documentation.description = utils.join{&lt;br /&gt;
					documentation.description,&lt;br /&gt;
					separator,&lt;br /&gt;
					mw.text.trim(comment_tail)&lt;br /&gt;
				}&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			-- Switch from module description to module-level tag list.&lt;br /&gt;
			if start_mode and new_tag and not export_mode then&lt;br /&gt;
				doctag_mode = true&lt;br /&gt;
				table.insert(documentation.tags, utils.process_tag(comment_tail))&lt;br /&gt;
&lt;br /&gt;
			-- Concatenating module-level tag with more information.&lt;br /&gt;
			elseif&lt;br /&gt;
				start_mode and doctag_mode and&lt;br /&gt;
				not pretty_comment and not comment_brace&lt;br /&gt;
			then&lt;br /&gt;
				tags = documentation.tags&lt;br /&gt;
				if p.tags[tags[#tags].name] == TAG_MULTI then&lt;br /&gt;
					separator = mw.text.trim(comment_tail):find(patterns.DOCBUNTO_WIKITEXT)&lt;br /&gt;
						and &#039;\n&#039;&lt;br /&gt;
						or  patterns.DOCBUNTO_CONCAT&lt;br /&gt;
					tags[#tags].value = utils.join{&lt;br /&gt;
						tags[#tags].value,&lt;br /&gt;
						separator,&lt;br /&gt;
						mw.text.trim(comment_tail)&lt;br /&gt;
					}&lt;br /&gt;
				elseif p.tags[tags[#tags].name] == TAG_MULTI_LINE then&lt;br /&gt;
					tags[#tags].value = utils.join{&lt;br /&gt;
						tags[#tags].value,&lt;br /&gt;
						&#039;\n&#039;,&lt;br /&gt;
						comment_tail&lt;br /&gt;
					}&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			-- Detect a new documentation item.&lt;br /&gt;
			if not start_mode and (new_item or new_tag_item) and not special_tag then&lt;br /&gt;
				table.insert(documentation.items, {})&lt;br /&gt;
				item_index = item_index + 1&lt;br /&gt;
				item = documentation.items[item_index]&lt;br /&gt;
				item.lineno = line_no&lt;br /&gt;
				item.code = &#039;&#039;&lt;br /&gt;
				item.comments = {}&lt;br /&gt;
				item.description = &#039;&#039;&lt;br /&gt;
				item.tags = {}&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			-- Concatenate an item with more information.&lt;br /&gt;
			if&lt;br /&gt;
				not start_mode and comment_mode and&lt;br /&gt;
				not new_tag and not doctag_mode and&lt;br /&gt;
				not pretty_comment and not comment_brace&lt;br /&gt;
			then&lt;br /&gt;
				separator = (mw.text.trim(comment_tail):find(patterns.DOCBUNTO_WIKITEXT))&lt;br /&gt;
					and &#039;\n&#039;&lt;br /&gt;
					or  (#item.description ~= 0 and patterns.DOCBUNTO_CONCAT or &#039;&#039;)&lt;br /&gt;
				item.description = utils.join{&lt;br /&gt;
					item.description,&lt;br /&gt;
					separator,&lt;br /&gt;
					mw.text.trim(comment_tail)&lt;br /&gt;
				}&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			-- Switch from item information to item tags.&lt;br /&gt;
			if not start_mode and new_tag and not special_tag then&lt;br /&gt;
				doctag_mode = true&lt;br /&gt;
				table.insert(item.tags, utils.process_tag(comment_tail))&lt;br /&gt;
&lt;br /&gt;
			-- Extend item tags with lines of further information.&lt;br /&gt;
			elseif&lt;br /&gt;
				not start_mode and doctag_mode and&lt;br /&gt;
				not pretty_comment and not comment_brace&lt;br /&gt;
			then&lt;br /&gt;
				tags = item.tags&lt;br /&gt;
				if p.tags[tags[#tags].name] == TAG_MULTI then&lt;br /&gt;
					separator = mw.text.trim(comment_tail):find(patterns.DOCBUNTO_WIKITEXT)&lt;br /&gt;
						and &#039;\n&#039;&lt;br /&gt;
						or  patterns.DOCBUNTO_CONCAT&lt;br /&gt;
					tags[#tags].value = utils.join{&lt;br /&gt;
						tags[#tags].value,&lt;br /&gt;
						separator,&lt;br /&gt;
						mw.text.trim(comment_tail)&lt;br /&gt;
					}&lt;br /&gt;
				elseif p.tags[tags[#tags].name] == TAG_MULTI_LINE then&lt;br /&gt;
					tags[#tags].value = utils.join{&lt;br /&gt;
						tags[#tags].value,&lt;br /&gt;
						&#039;\n&#039;,&lt;br /&gt;
						comment_tail&lt;br /&gt;
					}&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			-- Save pre-item comments to item information.&lt;br /&gt;
			if not start_mode and (comment_mode or doctag_mode) then&lt;br /&gt;
				table.insert(item.comments, t.data)&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			-- Export tag support.&lt;br /&gt;
			if export_mode then&lt;br /&gt;
				factory_mode = t.posFirst ~= 1&lt;br /&gt;
				if factory_mode then&lt;br /&gt;
					item.exports = true&lt;br /&gt;
				else&lt;br /&gt;
					documentation.exports = true&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				-- Parse export token data while concatenating code.&lt;br /&gt;
				subtokens = {}&lt;br /&gt;
				while t and (not factory_mode or (factory_mode and t.data ~= &#039;end&#039;)) do&lt;br /&gt;
					if factory_mode then&lt;br /&gt;
						item.code = utils.join{&lt;br /&gt;
							item.code,&lt;br /&gt;
							(t.posFirst == 1 and &#039;\n&#039; or &#039;&#039;),&lt;br /&gt;
							t.data&lt;br /&gt;
						}&lt;br /&gt;
					end&lt;br /&gt;
&lt;br /&gt;
					-- Fetch our item export tokens aka &amp;quot;subtokens&amp;quot;.&lt;br /&gt;
					t, i = tokens[i + 1], i + 1&lt;br /&gt;
					if t and t.posFirst == 1 then&lt;br /&gt;
						line_no = line_no + 1&lt;br /&gt;
					end&lt;br /&gt;
					if t and t.type ~= &#039;whitespace&#039; and t.type ~= &#039;keyword&#039; and t.type ~= &#039;comment&#039; then&lt;br /&gt;
						table.insert(subtokens, t)&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				-- Tracking and boolean variables for parsing exports.&lt;br /&gt;
				local separator = { [&#039;,&#039;] = true, [&#039;;&#039;] = true }&lt;br /&gt;
				local brace = { [&#039;{&#039;] = true, [&#039;}&#039;] = true }&lt;br /&gt;
&lt;br /&gt;
				local item_reference, item_alias = &#039;&#039;, &#039;&#039;&lt;br /&gt;
				local sequence_index, has_key = 0, false&lt;br /&gt;
				local subtoken, index = subtokens[2], 2&lt;br /&gt;
&lt;br /&gt;
				-- Logic that exports items to an item or module.&lt;br /&gt;
				while not brace[subtoken.data] do&lt;br /&gt;
					if subtoken.data == &#039;=&#039; then&lt;br /&gt;
						has_key = true&lt;br /&gt;
&lt;br /&gt;
					elseif not separator[subtoken.data] then&lt;br /&gt;
						if has_key then&lt;br /&gt;
							item_reference = item_reference .. subtoken.data&lt;br /&gt;
						else&lt;br /&gt;
							item_alias = item_alias .. subtoken.data&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
&lt;br /&gt;
					if subtokens[index + 1] and separator[subtokens[index + 1].data] or brace[subtokens[index + 1].data] then&lt;br /&gt;
						if not has_key then&lt;br /&gt;
							sequence_index = sequence_index + 1&lt;br /&gt;
							item_reference, item_alias = item_alias, item_reference&lt;br /&gt;
							item_alias = &#039;[&#039; .. tostring(sequence_index) .. &#039;]&#039;&lt;br /&gt;
						end&lt;br /&gt;
&lt;br /&gt;
						utils.export_item(documentation, item_reference, item_index, item_alias, factory_mode)&lt;br /&gt;
						item_reference, item_alias, has_key = &#039;&#039;, &#039;&#039;, false&lt;br /&gt;
					end&lt;br /&gt;
&lt;br /&gt;
					subtoken, index = subtokens[index + 1], index + 1&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				if not factory_mode then&lt;br /&gt;
					break -- end of file&lt;br /&gt;
				else&lt;br /&gt;
					factory_mode = false -- end of item&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			-- Pragma tag support.&lt;br /&gt;
			if pragma_mode then&lt;br /&gt;
				tag = utils.process_tag(comment_tail)&lt;br /&gt;
				if tag.modifiers then&lt;br /&gt;
					options[tag.value] = yesno((next((tag ).modifiers or {})), true)&lt;br /&gt;
				elseif tag.value:find(&#039; &#039;) then&lt;br /&gt;
					local index = tag.value:find(&#039; &#039;)&lt;br /&gt;
					local key = tag.value:sub(1, index - 1)&lt;br /&gt;
					local val = tag.value:sub(index + 1)&lt;br /&gt;
					options[key] = yesno(val)&lt;br /&gt;
				elseif options[tag.value] == nil then&lt;br /&gt;
					options[tag.value] = true&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Package data post-processing.&lt;br /&gt;
		if (t.type ~= &#039;comment&#039; or t.data:find(&#039;^%-%-%]=*%]$&#039;) or t.data:find(&#039;^%]=*%]%-%-$&#039;)) and (comment_mode or doctag_mode) and start_mode then&lt;br /&gt;
			documentation.tags = utils.hash_map(documentation.tags)&lt;br /&gt;
			documentation.name = utils.extract_name(documentation, { project = true })&lt;br /&gt;
			documentation.info = utils.extract_info(documentation)&lt;br /&gt;
			documentation.types = utils.extract_types(documentation) or { &#039;module&#039; }&lt;br /&gt;
			documentation.type = documentation.types[1]&lt;br /&gt;
&lt;br /&gt;
			-- N.B: summary field = 1st comment sentence; description = text remainder.&lt;br /&gt;
			if #documentation.description ~= 0 then&lt;br /&gt;
				documentation.summary = match(documentation.description, patterns.DOCBUNTO_SUMMARY)&lt;br /&gt;
				documentation.description = documentation.description:sub(select(2, documentation.description:find(&#039;%s*&#039;, #documentation.summary + 1)) + 1)&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			documentation.description = documentation.description:gsub(&#039;%s%s+&#039;, &#039;\n\n&#039;)&lt;br /&gt;
			documentation.executable = p.tags._code_types[documentation.type] and true or false&lt;br /&gt;
			utils.correct_subitem_tag(documentation)&lt;br /&gt;
			utils.override_item_tag(documentation, &#039;name&#039;)&lt;br /&gt;
			utils.override_item_tag(documentation, &#039;alias&#039;)&lt;br /&gt;
			utils.override_item_tag(documentation, &#039;summary&#039;)&lt;br /&gt;
			utils.override_item_tag(documentation, &#039;description&#039;)&lt;br /&gt;
			utils.override_item_tag(documentation, &#039;class&#039;, &#039;type&#039;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Item data post-processing.&lt;br /&gt;
		if&lt;br /&gt;
			(t.type ~= &#039;comment&#039; or t.data:find(&#039;^%-%-%]=*%]$&#039;) or t.data:find(&#039;^%]=*%]%-%-$&#039;))&lt;br /&gt;
			and (comment_mode or doctag_mode) and item_index ~= 0&lt;br /&gt;
		then&lt;br /&gt;
			item.tags = utils.hash_map(item.tags)&lt;br /&gt;
			item.name = utils.extract_name(item)&lt;br /&gt;
			item.types = utils.extract_types(item)&lt;br /&gt;
			item.type = item.types[1]&lt;br /&gt;
&lt;br /&gt;
			if #item.description ~= 0 then&lt;br /&gt;
				item.summary = match(item.description, patterns.DOCBUNTO_SUMMARY)&lt;br /&gt;
				item.description = item.description:sub(select(2, item.description:find(&#039;%s*&#039;, #item.summary + 1)) + 1)&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			item.description = item.description:gsub(&#039;%s%s+&#039;, &#039;\n\n&#039;)&lt;br /&gt;
			new_item_code = true&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Documentation block reset.&lt;br /&gt;
		if t.type ~= &#039;comment&#039; or t.data:find(&#039;^%-%-%]=*%]$&#039;) or t.data:find(&#039;^%]=*%]%-%-$&#039;) then&lt;br /&gt;
			start_mode = false&lt;br /&gt;
			comment_mode = false&lt;br /&gt;
			doctag_mode = false&lt;br /&gt;
			export_mode = false&lt;br /&gt;
			pragma_mode = false&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Don&#039;t concatenate module return value into item code.&lt;br /&gt;
		if t.data == &#039;return&#039; and t.posFirst == 1 then&lt;br /&gt;
			return_mode = true&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Item code concatenation.&lt;br /&gt;
		if item_index ~= 0 and not doctag_mode and not comment_mode and not comment_brace and not return_mode then&lt;br /&gt;
			separator = #item.code ~= 0 and t.posFirst == 1 and &#039;\n&#039; or &#039;&#039;&lt;br /&gt;
			item.code = utils.join{ item.code, separator, t.data }&lt;br /&gt;
&lt;br /&gt;
			-- Code analysis on item headline.&lt;br /&gt;
			if new_item_code and item.code:find(&#039;\n&#039;) and t.posFirst == 1 then&lt;br /&gt;
				utils.code_heuristic(item)&lt;br /&gt;
				new_item_code = false&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		t, i = tokens[i + 1], i + 1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	documentation.lineno = line_no&lt;br /&gt;
&lt;br /&gt;
	local package_name = (documentation.tags[&#039;alias&#039;] or {}).value or documentation.name or DEFAULT_VARIABLE&lt;br /&gt;
	local package_alias = (documentation.tags[&#039;alias&#039;] or {}).value or &#039;p&#039;&lt;br /&gt;
	local export_ptn = &#039;^%s([.[])&#039;&lt;br /&gt;
&lt;br /&gt;
	for _, item in ipairs(documentation.items) do&lt;br /&gt;
		if item.name == package_alias or (item.name and item.name:match(&#039;^&#039; .. package_alias .. &#039;[.[]&#039;)) then&lt;br /&gt;
			item.alias = item.name:gsub(export_ptn:format(package_alias), documentation.name .. &#039;%1&#039;)&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
		if&lt;br /&gt;
			item.name == package_name or&lt;br /&gt;
			item.tags[&#039;export&#039;] or&lt;br /&gt;
			(item.name and package_name and item.name:find(export_ptn:format(package_name))) or&lt;br /&gt;
			(item.alias and package_name and item.alias:find(export_ptn:format(package_name)))&lt;br /&gt;
		then&lt;br /&gt;
			item.export = true&lt;br /&gt;
&lt;br /&gt;
			item.tags[&#039;local&#039;] = nil&lt;br /&gt;
			item.tags[&#039;private&#039;] = nil&lt;br /&gt;
&lt;br /&gt;
			for index, tag in ipairs(item.tags) do&lt;br /&gt;
				if tag.name == &#039;local&#039; or tag.name == &#039;private&#039; then&lt;br /&gt;
					table.remove(item.tags, index)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if item.name and (item.name:find(&#039;[.:]&#039;) or item.name:find(&#039;%[[\&#039;&amp;quot;]&#039;)) then&lt;br /&gt;
			item.hierarchy = utils.parse_hierarchy(item.name)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		item.type = item.type or ((item.alias or item.name or &#039;&#039;):find(&#039;[.[]&#039;) and &#039;member&#039; or &#039;variable&#039;)&lt;br /&gt;
&lt;br /&gt;
		utils.correct_subitem_tag(item)&lt;br /&gt;
		utils.override_item_tag(item, &#039;name&#039;)&lt;br /&gt;
		utils.override_item_tag(item, &#039;alias&#039;)&lt;br /&gt;
		utils.override_item_tag(item, &#039;summary&#039;)&lt;br /&gt;
		utils.override_item_tag(item, &#039;description&#039;)&lt;br /&gt;
		utils.override_item_tag(item, &#039;class&#039;, &#039;type&#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Sort documentation items by their access level.&lt;br /&gt;
	-- Items are sorted by whether they are exported at the module level.&lt;br /&gt;
	-- Items are then subsorted by whether the item is `@local` aka `@private`.&lt;br /&gt;
	table.sort(documentation.items, function(item1, item2)&lt;br /&gt;
		local inaccessible1 = item1.tags[&#039;local&#039;] or item1.tags[&#039;private&#039;]&lt;br /&gt;
		local inaccessible2 = item2.tags[&#039;local&#039;] or item2.tags[&#039;private&#039;]&lt;br /&gt;
	&lt;br /&gt;
			-- Send package items to the top.&lt;br /&gt;
		if item1.export and not item2.export then&lt;br /&gt;
			return true&lt;br /&gt;
		elseif item2.export and not item1.export then&lt;br /&gt;
			return false&lt;br /&gt;
	&lt;br /&gt;
		-- Send private items to the bottom.&lt;br /&gt;
		elseif inaccessible1 and not inaccessible2 then&lt;br /&gt;
			return false&lt;br /&gt;
		elseif inaccessible2 and not inaccessible1 then&lt;br /&gt;
			return true&lt;br /&gt;
	&lt;br /&gt;
		-- Optional alphabetical sort.&lt;br /&gt;
		elseif options.sort then&lt;br /&gt;
			return (item1.alias or item1.name) &amp;lt; (item2.alias or item2.name)&lt;br /&gt;
	&lt;br /&gt;
		-- Sort via source code order by default.&lt;br /&gt;
		else&lt;br /&gt;
			return item1.lineno &amp;lt; item2.lineno&lt;br /&gt;
		end&lt;br /&gt;
	end)&lt;br /&gt;
&lt;br /&gt;
	end)&lt;br /&gt;
&lt;br /&gt;
	if not p_success then&lt;br /&gt;
		mw.addWarning(&amp;quot;Docbunto error: &amp;quot; .. p_error)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return documentation&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Doclet renderer for Docbunto taglet data.&lt;br /&gt;
--  @function           p.doclet&lt;br /&gt;
--  @param              {table} data Taglet documentation data.&lt;br /&gt;
--  @param[opt]         {options} options Configuration options.&lt;br /&gt;
--  @return             {string} Wikitext documentation output.&lt;br /&gt;
function p.doclet(data, options)&lt;br /&gt;
	local documentation = mw.html.create()&lt;br /&gt;
	local namespace_ptn = utils.join{ &#039;^&#039;,  mw.site.namespaces[828].name, &#039;:&#039; }&lt;br /&gt;
	local codepage = data.filename:gsub(namespace_ptn, &#039;&#039;, 1)&lt;br /&gt;
&lt;br /&gt;
	options = options or {}&lt;br /&gt;
	options.file = data.filename&lt;br /&gt;
	frame = frame or mw.getCurrentFrame():getParent() or mw.getCurrentFrame()&lt;br /&gt;
&lt;br /&gt;
	local maybe_md = options.plain and utils.identity or frontend.markdown&lt;br /&gt;
	local tohtml = function(str)&lt;br /&gt;
		return frame:preprocess(maybe_md(str))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Disable edit sections for automatic documentation pages.&lt;br /&gt;
	if not options.code then&lt;br /&gt;
		documentation:wikitext(frame:preprocess(&#039;__NOEDITSECTION__&#039;))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
	-- Information&lt;br /&gt;
	if not options.code and options.box then&lt;br /&gt;
		local custom, infobox = pcall(require, &#039;Module:Docbunto/infobox&#039;)&lt;br /&gt;
		if custom and type(infobox) == &#039;function&#039; then&lt;br /&gt;
			documentation:wikitext(infobox(data, codepage, frame, options, title, maybe_md)):newline()&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Documentation lede.&lt;br /&gt;
	if not options.code and (#(data.summary or &#039;&#039;) + #data.description) ~= 0 then&lt;br /&gt;
		local separator = #(data.summary or &#039;&#039;) ~= 0 and #data.description ~= 0&lt;br /&gt;
			and (data.description:find(patterns.DOCBUNTO_WIKITEXT) and &#039;\n\n&#039; or patterns.DOCBUNTO_CONCAT)&lt;br /&gt;
			or  &#039;&#039;&lt;br /&gt;
		local intro = utils.join{ data.summary or &#039;&#039;, separator, data.description }&lt;br /&gt;
		intro = tohtml(intro:gsub(&#039;^(&#039; .. codepage .. &#039;)&#039;, mw.text.tag(&#039;b&#039;, nil, &#039;%1&#039;)))&lt;br /&gt;
		if options.migration then&lt;br /&gt;
			documentation:wikitext(frame:preprocess(mw.text.tag{&lt;br /&gt;
				name = &#039;syntaxhighlight&#039;,&lt;br /&gt;
				content = intro&lt;br /&gt;
			})):newline():newline()&lt;br /&gt;
		else&lt;br /&gt;
			documentation:wikitext(intro):newline():newline()&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Custom documentation preface.&lt;br /&gt;
	if options.preface then&lt;br /&gt;
		documentation:wikitext(options.preface):newline():newline()&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Start code documentation.&lt;br /&gt;
	local codedoc = mw.html.create()&lt;br /&gt;
	local function_module = data.tags[&#039;param&#039;] or data.tags[&#039;return&#039;]&lt;br /&gt;
	local header_type =&lt;br /&gt;
		documentation.type == &#039;classmod&#039;&lt;br /&gt;
			and &#039;class&#039;&lt;br /&gt;
		or  function_module&lt;br /&gt;
			and &#039;function&#039;&lt;br /&gt;
			or  &#039;items&#039;&lt;br /&gt;
	if (function_module or #data.items ~= 0) and not options.code or options.preface then&lt;br /&gt;
		codedoc&lt;br /&gt;
			:tag(&#039;h2&#039;)&lt;br /&gt;
				:wikitext(i18n:msg(&#039;header-documentation&#039;))&lt;br /&gt;
				:done()&lt;br /&gt;
			:newline()&lt;br /&gt;
	end&lt;br /&gt;
	if (function_module or #data.items ~= 0) then&lt;br /&gt;
		codedoc&lt;br /&gt;
			:tag(&#039;h3&#039;)&lt;br /&gt;
				:wikitext(i18n:msg(&#039;header-&#039; .. header_type))&lt;br /&gt;
				:done()&lt;br /&gt;
			:newline()&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Function module support.&lt;br /&gt;
	if function_module then&lt;br /&gt;
		data.type, data.types[1] = &#039;function&#039;, &#039;function&#039;&lt;br /&gt;
&lt;br /&gt;
		options.item_id = data.name&lt;br /&gt;
		if not options.code or not options.verbose then data.description = &#039;&#039; end&lt;br /&gt;
		frontend.render_item(codedoc, data, options, frontend.pretask_function_name)&lt;br /&gt;
&lt;br /&gt;
		if not options.simple and data.tags[&#039;param&#039;] then&lt;br /&gt;
			frontend.render_tag(codedoc, &#039;param&#039;, data.tags[&#039;param&#039;], options, frontend.pretask_variable_prefix)&lt;br /&gt;
		end&lt;br /&gt;
		if not options.simple and data.tags[&#039;error&#039;] then&lt;br /&gt;
			frontend.render_tag(codedoc, &#039;error&#039;, data.tags[&#039;error&#039;], options, frontend.pretask_error_line)&lt;br /&gt;
		end&lt;br /&gt;
		if not options.simple and data.tags[&#039;return&#039;] then&lt;br /&gt;
			frontend.render_tag(codedoc, &#039;return&#039;, data.tags[&#039;return&#039;], options)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Render documentation items.&lt;br /&gt;
	local other_header = false&lt;br /&gt;
	local private_header = false&lt;br /&gt;
	local inaccessible&lt;br /&gt;
	for _, item in ipairs(data.items) do&lt;br /&gt;
		inaccessible = item.tags[&#039;local&#039;] or item.tags[&#039;private&#039;]&lt;br /&gt;
		if not options.all and inaccessible then&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if&lt;br /&gt;
			not other_header and item.type ~= &#039;section&#039; and item.type ~= &#039;type&#039; and&lt;br /&gt;
			not item.export and not item.hierarchy and not inaccessible&lt;br /&gt;
		then&lt;br /&gt;
			codedoc&lt;br /&gt;
				:tag(&#039;h3&#039;)&lt;br /&gt;
					:wikitext(i18n:msg(&#039;header-other&#039;))&lt;br /&gt;
					:done()&lt;br /&gt;
				:newline()&lt;br /&gt;
			other_header = true&lt;br /&gt;
		end&lt;br /&gt;
		if not private_header and options.all and inaccessible then&lt;br /&gt;
			codedoc&lt;br /&gt;
				:tag(&#039;h3&#039;)&lt;br /&gt;
					:wikitext(i18n:msg(&#039;header-private&#039;))&lt;br /&gt;
					:done()&lt;br /&gt;
				:newline()&lt;br /&gt;
			private_header = true&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if item.type == &#039;section&#039; then&lt;br /&gt;
			codedoc&lt;br /&gt;
				:tag(&#039;h3&#039;)&lt;br /&gt;
					:wikitext((mw.ustring.gsub(item.summary or item.alias or item.name, &#039;[.։。।෴۔።]$&#039;, &#039;&#039;)))&lt;br /&gt;
					:done()&lt;br /&gt;
				:newline()&lt;br /&gt;
			if #item.description ~= 0 then&lt;br /&gt;
				codedoc:wikitext(mw.text.trim(item.description)):newline()&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
		elseif item.type == &#039;type&#039; then&lt;br /&gt;
			if options.strip and item.export and item.hierarchy then&lt;br /&gt;
				if item.alias then&lt;br /&gt;
					item.alias = item.alias:gsub(&#039;^[%w_]+[.[]?&#039;, &#039;&#039;)&lt;br /&gt;
				else&lt;br /&gt;
					item.name = item.name:gsub(&#039;^[%w_]+[.[]?&#039;, &#039;&#039;)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			codedoc&lt;br /&gt;
				:tag(&#039;h3&#039;)&lt;br /&gt;
					:wikitext(mw.text.tag(&#039;code&#039;, {}, item.alias or item.name))&lt;br /&gt;
					:done()&lt;br /&gt;
				:newline()&lt;br /&gt;
			if (#(item.summary or &#039;&#039;) + #item.description) ~= 0 then&lt;br /&gt;
				local separator = #(item.summary or &#039;&#039;) ~= 0 and #item.description ~= 0&lt;br /&gt;
					and (item.description:find(patterns.DOCBUNTO_WIKITEXT) and &#039;\n\n&#039; or patterns.DOCBUNTO_CONCAT)&lt;br /&gt;
					or  &#039;&#039;&lt;br /&gt;
				codedoc:wikitext((item.summary or &#039;&#039;) .. separator .. item.description):newline()&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
		elseif item.type == &#039;function&#039; then&lt;br /&gt;
			options.item_id = item.alias or item.name&lt;br /&gt;
			frontend.render_item(codedoc, item, options, frontend.pretask_function_name)&lt;br /&gt;
			if not options.simple and item.tags[&#039;param&#039;] then&lt;br /&gt;
				frontend.render_tag(codedoc, &#039;param&#039;, item.tags[&#039;param&#039;], options, frontend.pretask_variable_prefix)&lt;br /&gt;
			end&lt;br /&gt;
			if not options.simple and item.tags[&#039;error&#039;] then&lt;br /&gt;
				frontend.render_tag(codedoc, &#039;error&#039;, item.tags[&#039;error&#039;], options, frontend.pretask_error_line)&lt;br /&gt;
			end&lt;br /&gt;
			if not options.simple and item.tags[&#039;return&#039;] then&lt;br /&gt;
				frontend.render_tag(codedoc, &#039;return&#039;, item.tags[&#039;return&#039;], options)&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
		elseif&lt;br /&gt;
			item.type == &#039;table&#039; or&lt;br /&gt;
			item.type ~= nil and (&lt;br /&gt;
				item.type == &#039;member&#039; or&lt;br /&gt;
				item.type == &#039;variable&#039;&lt;br /&gt;
			) and (item.alias or item.name)&lt;br /&gt;
		then&lt;br /&gt;
			options.item_id = item.alias or item.name&lt;br /&gt;
			frontend.render_item(codedoc, item, options)&lt;br /&gt;
			if not options.simple and item.tags[&#039;field&#039;] then&lt;br /&gt;
				frontend.render_tag(codedoc, &#039;field&#039;, item.tags[&#039;field&#039;], options, frontend.pretask_variable_prefix)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if item.type ~= &#039;section&#039; and item.type ~= &#039;type&#039; then&lt;br /&gt;
			if not options.simple and item.tags[&#039;note&#039;] then&lt;br /&gt;
				frontend.render_tag(codedoc, &#039;note&#039;, item.tags[&#039;note&#039;], options)&lt;br /&gt;
			end&lt;br /&gt;
			if not options.simple and item.tags[&#039;warning&#039;] then&lt;br /&gt;
				frontend.render_tag(codedoc, &#039;warning&#039;, item.tags[&#039;warning&#039;], options)&lt;br /&gt;
			end&lt;br /&gt;
			if not options.simple and item.tags[&#039;fixme&#039;] then&lt;br /&gt;
				frontend.render_tag(codedoc, &#039;fixme&#039;, item.tags[&#039;fixme&#039;], options)&lt;br /&gt;
			end&lt;br /&gt;
			if not options.simple and item.tags[&#039;todo&#039;] then&lt;br /&gt;
				frontend.render_tag(codedoc, &#039;todo&#039;, item.tags[&#039;todo&#039;], options)&lt;br /&gt;
				hasTodoItems = true&lt;br /&gt;
			end&lt;br /&gt;
			if not options.simple and item.tags[&#039;usage&#039;] then&lt;br /&gt;
				frontend.render_tag(codedoc, &#039;usage&#039;, item.tags[&#039;usage&#039;], options, frontend.pretask_usage_highlight)&lt;br /&gt;
			end&lt;br /&gt;
			if not options.simple and item.tags[&#039;see&#039;] then&lt;br /&gt;
				frontend.render_tag(codedoc, &#039;see&#039;, item.tags[&#039;see&#039;], options)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Render module-level annotations.&lt;br /&gt;
	local header_level = options.code and &#039;h3&#039; or &#039;h2&#039;&lt;br /&gt;
	local header_text&lt;br /&gt;
	for _, tag_name in ipairs(p.tags._annotation_hierarchy) do&lt;br /&gt;
		if data.tags[tag_name] then&lt;br /&gt;
			header_text =  i18n:msg(&#039;tag-&#039; .. tag_name, data.tags[tag_name].value and &#039;1&#039; or &#039;2&#039;)&lt;br /&gt;
			header_text = &#039;&amp;lt;&#039; .. header_level .. &#039;&amp;gt;&#039; .. &#039; &#039; .. header_text .. &#039; &#039; .. &#039;&amp;lt;/&#039; .. header_level .. &#039;&amp;gt;&#039;&lt;br /&gt;
			codedoc:newline():wikitext(header_text):newline()&lt;br /&gt;
			if data.tags[tag_name].value then&lt;br /&gt;
				codedoc:wikitext(data.tags[tag_name].value):newline()&lt;br /&gt;
			else&lt;br /&gt;
				for _, tag_el in ipairs(data.tags[tag_name]) do&lt;br /&gt;
					codedoc:wikitext(&#039;* &#039; .. tag_el.value):newline()&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Byline for autogeneration.&lt;br /&gt;
	if options.footer then&lt;br /&gt;
		codedoc:newline()&lt;br /&gt;
		codedoc:tag(&#039;hr&#039;):done()&lt;br /&gt;
		codedoc:newline()&lt;br /&gt;
		codedoc:tag(&#039;p&#039;):css( &#039;text-align&#039;, &#039;right&#039; ):css(&#039;font-size&#039;, &#039;80%&#039;):wikitext(i18n:msg(&#039;message-autogeneration&#039;))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add nowiki tags for EOF termination in tests.&lt;br /&gt;
	codedoc:tag(&#039;nowiki&#039;, { selfClosing = true })&lt;br /&gt;
&lt;br /&gt;
	-- Code documentation formatting.&lt;br /&gt;
	codedoc = tohtml(tostring(codedoc))&lt;br /&gt;
&lt;br /&gt;
	documentation:wikitext(codedoc)&lt;br /&gt;
&lt;br /&gt;
	-- Endmatter table for module information.&lt;br /&gt;
	if options.card then&lt;br /&gt;
		local endmatter = mw.html.create(&#039;table&#039;)&lt;br /&gt;
		endmatter:addClass(&#039;wikitable&#039;)&lt;br /&gt;
		endmatter:css(&#039;width&#039;, &#039;75%&#039;)&lt;br /&gt;
		endmatter:css(&#039;margin&#039;, &#039;0 auto 1em auto&#039;)&lt;br /&gt;
		&lt;br /&gt;
		local module_type = data.type == &#039;module&#039;&lt;br /&gt;
			and i18n:msg(&#039;invocable-module&#039;)&lt;br /&gt;
			or i18n:msg(&#039;meta-module&#039;)&lt;br /&gt;
&lt;br /&gt;
		endmatter&lt;br /&gt;
			:tag(&#039;caption&#039;)&lt;br /&gt;
			:wikitext(&#039;Module information card (autogenerated)&#039;)&lt;br /&gt;
	&lt;br /&gt;
		endmatter&lt;br /&gt;
			:tag(&#039;tr&#039;)&lt;br /&gt;
				:tag(&#039;th&#039;):attr(&#039;scope&#039;, &#039;col&#039;):wikitext(&#039;Name&#039;):done()&lt;br /&gt;
				:tag(&#039;th&#039;):attr(&#039;scope&#039;, &#039;col&#039;):wikitext(&#039;Value&#039;):done()&lt;br /&gt;
	&lt;br /&gt;
		if options.image or data.info and data.info[&#039;image&#039;] then&lt;br /&gt;
			endmatter&lt;br /&gt;
				:tag(&#039;tr&#039;)&lt;br /&gt;
					:tag(&#039;td&#039;):attr(&#039;scope&#039;, &#039;row&#039;):wikitext(i18n:msg(&#039;endmatter-image&#039;)):done()&lt;br /&gt;
					:tag(&#039;td&#039;)&lt;br /&gt;
						:attr(&#039;align&#039;, &#039;center&#039;)&lt;br /&gt;
						:wikitext(&#039;[[File:&#039; .. (options.image or data.info[&#039;image&#039;]) .. &#039;|270px|center]]&#039;)&lt;br /&gt;
					:done()&lt;br /&gt;
				:done()&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
		if options.caption or data.info and data.info[&#039;caption&#039;] then&lt;br /&gt;
			 endmatter&lt;br /&gt;
				:tag(&#039;tr&#039;)&lt;br /&gt;
					:tag(&#039;td&#039;):attr(&#039;scope&#039;, &#039;row&#039;):wikitext(i18n:msg(&#039;endmatter-caption&#039;)):done()&lt;br /&gt;
					:tag(&#039;td&#039;)&lt;br /&gt;
						:attr(&#039;align&#039;, options.image or data.info[&#039;image&#039;] and &#039;center&#039; or &#039;left&#039;)&lt;br /&gt;
						:wikitext(tohtml(options.caption or data.info[&#039;caption&#039;]))&lt;br /&gt;
					:done()&lt;br /&gt;
				:done()&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
		endmatter&lt;br /&gt;
				:tag(&#039;tr&#039;)&lt;br /&gt;
					:tag(&#039;td&#039;):attr(&#039;scope&#039;, &#039;row&#039;):wikitext((gsub(i18n:msg(&#039;type-variable&#039;), &#039;^%w&#039;, mw.ustring.upper))):done()&lt;br /&gt;
					:tag(&#039;td&#039;)&lt;br /&gt;
						:attr(&#039;align&#039;, options.image or data.info and data.info[&#039;image&#039;] and &#039;center&#039; or &#039;left&#039;)&lt;br /&gt;
						:wikitext(mw.text.tag({&lt;br /&gt;
							name = options.image or data.info and data.info[&#039;image&#039;] and &#039;h1&#039; or &#039;span&#039;,&lt;br /&gt;
							content = mw.text.tag({&lt;br /&gt;
								name = &#039;b&#039;,&lt;br /&gt;
								content = mw.text.tag({&lt;br /&gt;
									name = &#039;code&#039;, &lt;br /&gt;
									content = data.name or DEFAULT_VARIABLE&lt;br /&gt;
								})&lt;br /&gt;
							})&lt;br /&gt;
						})):done()&lt;br /&gt;
					:done()&lt;br /&gt;
				:tag(&#039;tr&#039;)&lt;br /&gt;
					:tag(&#039;td&#039;):wikitext(i18n:msg(&#039;code&#039;)):done()&lt;br /&gt;
					:tag(&#039;td&#039;):wikitext(tohtml(&#039;[[&#039; .. data.filename .. &#039;]]&#039;)):done()&lt;br /&gt;
				:done()&lt;br /&gt;
	&lt;br /&gt;
		if data.info and data.info[&#039;release&#039;] then&lt;br /&gt;
			endmatter&lt;br /&gt;
				:tag(&#039;tr&#039;)&lt;br /&gt;
					:tag(&#039;td&#039;):attr(&#039;scope&#039;, &#039;row&#039;):wikitext(i18n:msg(&#039;release-status&#039;)):done()&lt;br /&gt;
					:tag(&#039;td&#039;):wikitext(tohtml(data.info[&#039;release&#039;])):done()&lt;br /&gt;
				:done()&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
		if data.summary then&lt;br /&gt;
			endmatter&lt;br /&gt;
				:tag(&#039;tr&#039;)&lt;br /&gt;
					:tag(&#039;td&#039;):attr(&#039;scope&#039;, &#039;row&#039;):wikitext(i18n:msg(&#039;description&#039;)):done()&lt;br /&gt;
					:tag(&#039;td&#039;):wikitext(tohtml(data.summary)):done()&lt;br /&gt;
				:done()&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
		if data.info and data.info[&#039;author&#039;] then&lt;br /&gt;
			endmatter&lt;br /&gt;
				:tag(&#039;tr&#039;)&lt;br /&gt;
					:tag(&#039;td&#039;):attr(&#039;scope&#039;, &#039;row&#039;):wikitext(i18n:msg(&#039;author&#039;)):done()&lt;br /&gt;
					:tag(&#039;td&#039;):newline():wikitext(tohtml(data.info[&#039;author&#039;])):done()&lt;br /&gt;
				:done()&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
		if data.info and data.info[&#039;attribution&#039;] then&lt;br /&gt;
			endmatter&lt;br /&gt;
				:tag(&#039;tr&#039;)&lt;br /&gt;
					:tag(&#039;td&#039;):attr(&#039;scope&#039;, &#039;row&#039;):wikitext(i18n:msg(&#039;using-code-by&#039;)):done()&lt;br /&gt;
					:tag(&#039;td&#039;):wikitext(tohtml(data.info[&#039;attribution&#039;])):done()&lt;br /&gt;
				:done()&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
		if data.info and data.info[&#039;credit&#039;] then&lt;br /&gt;
			endmatter&lt;br /&gt;
				:tag(&#039;tr&#039;)&lt;br /&gt;
					:tag(&#039;td&#039;):attr(&#039;scope&#039;, &#039;row&#039;):wikitext(i18n:msg(&#039;other-attribution&#039;)):done()&lt;br /&gt;
					:tag(&#039;td&#039;):wikitext(tohtml(data.info[&#039;credit&#039;])):done()&lt;br /&gt;
				:done()&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
		if data.info and data.info[&#039;require&#039;] then&lt;br /&gt;
			data.info[&#039;require&#039;] = data.info[&#039;require&#039;]&lt;br /&gt;
				:gsub(&#039;^[^[%s]+$&#039;, &#039;[[%1]]&#039;)&lt;br /&gt;
				:gsub(&#039;%* ([^[%s]+)&#039;, &#039;* [[%1]]&#039;)&lt;br /&gt;
			endmatter&lt;br /&gt;
				:tag(&#039;tr&#039;)&lt;br /&gt;
					:tag(&#039;td&#039;):attr(&#039;scope&#039;, &#039;row&#039;):wikitext(i18n:msg(&#039;dependencies&#039;)):done()&lt;br /&gt;
					:tag(&#039;td&#039;):newline():wikitext(tohtml(data.info[&#039;require&#039;])):done()&lt;br /&gt;
				:done()&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
		if data.info and data.info[&#039;demo&#039;] then&lt;br /&gt;
			endmatter&lt;br /&gt;
				:tag(&#039;tr&#039;)&lt;br /&gt;
					:tag(&#039;td&#039;):attr(&#039;scope&#039;, &#039;row&#039;):wikitext(i18n:msg(&#039;examples&#039;)):done()&lt;br /&gt;
					:tag(&#039;td&#039;):wikitext(tohtml(data.info[&#039;demo&#039;])):done()&lt;br /&gt;
				:done()&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		endmatter:newline()&lt;br /&gt;
		endmatter = tostring(endmatter)&lt;br /&gt;
		documentation:newline():newline()&lt;br /&gt;
		documentation:wikitext(endmatter)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	documentation = tostring(documentation)&lt;br /&gt;
	if hasTodoItems and options.autodoc &lt;br /&gt;
		and mw.title.new(&#039;Module:&#039; .. options.file).fullText == mw.title.getCurrentTitle().fullText then&lt;br /&gt;
		documentation = documentation .. &#039;[[Category:&#039; .. i18n:msg(&#039;todo&#039;) .. &#039;]]&#039;&lt;br /&gt;
	end&lt;br /&gt;
	if mw.title.new(&#039;Module:Docbunto/styles.css&#039;).exists then&lt;br /&gt;
		documentation = documentation .. frame:extensionTag(&#039;templatestyles&#039;, &#039;&#039;, {src = &#039;Module:Docbunto/styles.css&#039;})&lt;br /&gt;
	end&lt;br /&gt;
	return documentation&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Token dictionary for Docbunto tags.&lt;br /&gt;
--  Maps Docbunto tag names to tag tokens.&lt;br /&gt;
--   * Multi-line tags use the `&#039;M&#039;` token.&lt;br /&gt;
--   * Multi-line preformatted tags use the `&#039;ML&#039;` token.&lt;br /&gt;
--   * Identifier tags use the `&#039;ID&#039;` token.&lt;br /&gt;
--   * Single-line tags use the `&#039;S&#039;` token.&lt;br /&gt;
--   * Flags use the `&#039;N&#039;` token.&lt;br /&gt;
--   * Type tags use the `&#039;T&#039;` token.&lt;br /&gt;
--  @table              p.tags&lt;br /&gt;
p.tags = {&lt;br /&gt;
	-- Item-level tags, available for global use.&lt;br /&gt;
	[&#039;param&#039;] = &#039;M&#039;, [&#039;see&#039;] = &#039;M&#039;, [&#039;note&#039;] = &#039;M&#039;, [&#039;usage&#039;] = &#039;ML&#039;,&lt;br /&gt;
	[&#039;description&#039;] = &#039;M&#039;, [&#039;field&#039;] = &#039;M&#039;, [&#039;return&#039;] = &#039;M&#039;,&lt;br /&gt;
	[&#039;fixme&#039;] = &#039;M&#039;, [&#039;todo&#039;] = &#039;M&#039;, [&#039;warning&#039;] = &#039;M&#039;, [&#039;error&#039;] = &#039;M&#039;;&lt;br /&gt;
	[&#039;class&#039;] = &#039;ID&#039;, [&#039;name&#039;] = &#039;ID&#039;, [&#039;alias&#039;] = &#039;ID&#039;;&lt;br /&gt;
	[&#039;summary&#039;] = &#039;S&#039;, [&#039;pragma&#039;] = &#039;S&#039;, [&#039;factory&#039;] = &#039;S&#039;,&lt;br /&gt;
	[&#039;release&#039;] = &#039;S&#039;, [&#039;author&#039;] = &#039;S&#039;, [&#039;copyright&#039;] = &#039;S&#039;, [&#039;license&#039;] = &#039;S&#039;,&lt;br /&gt;
	[&#039;image&#039;] = &#039;S&#039;, [&#039;caption&#039;] = &#039;S&#039;, [&#039;require&#039;] = &#039;S&#039;, [&#039;attribution&#039;] = &#039;S&#039;,&lt;br /&gt;
	[&#039;credit&#039;] = &#039;S&#039;, [&#039;demo&#039;] = &#039;S&#039;;&lt;br /&gt;
	[&#039;local&#039;] = &#039;N&#039;, [&#039;export&#039;] = &#039;N&#039;, [&#039;private&#039;] = &#039;N&#039;, [&#039;constructor&#039;] = &#039;N&#039;,&lt;br /&gt;
	[&#039;static&#039;] = &#039;N&#039;;&lt;br /&gt;
	-- Project-level tags, all scoped to a file.&lt;br /&gt;
	[&#039;module&#039;] = &#039;T&#039;, [&#039;script&#039;] = &#039;T&#039;, [&#039;classmod&#039;] = &#039;T&#039;, [&#039;topic&#039;] = &#039;T&#039;,&lt;br /&gt;
	[&#039;submodule&#039;] = &#039;T&#039;, [&#039;example&#039;] = &#039;T&#039;, [&#039;file&#039;] = &#039;T&#039;;&lt;br /&gt;
	-- Module-level tags, used to register module items.&lt;br /&gt;
	[&#039;function&#039;] = &#039;T&#039;, [&#039;table&#039;] = &#039;T&#039;, [&#039;member&#039;] = &#039;T&#039;, [&#039;variable&#039;] = &#039;T&#039;,&lt;br /&gt;
	[&#039;section&#039;] = &#039;T&#039;, [&#039;type&#039;] = &#039;T&#039;;&lt;br /&gt;
}&lt;br /&gt;
p.tags._alias = {&lt;br /&gt;
	-- Normal aliases.&lt;br /&gt;
	[&#039;about&#039;]       = &#039;summary&#039;,&lt;br /&gt;
	[&#039;abstract&#039;]    = &#039;summary&#039;,&lt;br /&gt;
	[&#039;brief&#039;]       = &#039;summary&#039;,&lt;br /&gt;
	[&#039;bug&#039;]         = &#039;fixme&#039;,&lt;br /&gt;
	[&#039;argument&#039;]    = &#039;param&#039;,&lt;br /&gt;
	[&#039;credits&#039;]     = &#039;credit&#039;,&lt;br /&gt;
	[&#039;code&#039;]        = &#039;usage&#039;,&lt;br /&gt;
	[&#039;details&#039;]     = &#039;description&#039;,&lt;br /&gt;
	[&#039;discussion&#039;]  = &#039;description&#039;,&lt;br /&gt;
	[&#039;exception&#039;]   = &#039;error&#039;,&lt;br /&gt;
	[&#039;lfunction&#039;]   = &#039;function&#039;,&lt;br /&gt;
	[&#039;package&#039;]     = &#039;module&#039;,&lt;br /&gt;
	[&#039;property&#039;]    = &#039;member&#039;,&lt;br /&gt;
	[&#039;raise&#039;]       = &#039;error&#039;,&lt;br /&gt;
	[&#039;requires&#039;]    = &#039;require&#039;,&lt;br /&gt;
	[&#039;returns&#039;]     = &#039;return&#039;,&lt;br /&gt;
	[&#039;throws&#039;]      = &#039;error&#039;,&lt;br /&gt;
	[&#039;typedef&#039;]     = &#039;type&#039;,&lt;br /&gt;
	-- Typed aliases.&lt;br /&gt;
	[&#039;bool&#039;]        = &#039;field&#039;,&lt;br /&gt;
	[&#039;func&#039;]        = &#039;field&#039;,&lt;br /&gt;
	[&#039;int&#039;]         = &#039;field&#039;,&lt;br /&gt;
	[&#039;number&#039;]      = &#039;field&#039;,&lt;br /&gt;
	[&#039;string&#039;]      = &#039;field&#039;,&lt;br /&gt;
	[&#039;tab&#039;]         = &#039;field&#039;,&lt;br /&gt;
	[&#039;vararg&#039;]      = &#039;param&#039;,&lt;br /&gt;
	[&#039;tfield&#039;]      = &#039;field&#039;,&lt;br /&gt;
	[&#039;tparam&#039;]      = &#039;param&#039;,&lt;br /&gt;
	[&#039;treturn&#039;]     = &#039;return&#039;&lt;br /&gt;
}&lt;br /&gt;
p.tags._type_alias = {&lt;br /&gt;
	-- Implicit type value alias.&lt;br /&gt;
	[&#039;bool&#039;]        = &#039;boolean&#039;,&lt;br /&gt;
	[&#039;func&#039;]        = &#039;function&#039;,&lt;br /&gt;
	[&#039;int&#039;]         = &#039;number&#039;,&lt;br /&gt;
	[&#039;number&#039;]      = &#039;number&#039;,&lt;br /&gt;
	[&#039;string&#039;]      = &#039;string&#039;,&lt;br /&gt;
	[&#039;tab&#039;]         = &#039;table&#039;,&lt;br /&gt;
	[&#039;vararg&#039;]      = &#039;...&#039;,&lt;br /&gt;
	-- Pure typed modifier alias.&lt;br /&gt;
	[&#039;tfield&#039;]      = &#039;variable&#039;,&lt;br /&gt;
	[&#039;tparam&#039;]      = &#039;variable&#039;,&lt;br /&gt;
	[&#039;treturn&#039;]     = &#039;variable&#039;&lt;br /&gt;
}&lt;br /&gt;
p.tags._project_level = {&lt;br /&gt;
	-- Contains code.&lt;br /&gt;
	[&#039;module&#039;]      = true,&lt;br /&gt;
	[&#039;script&#039;]      = true,&lt;br /&gt;
	[&#039;classmod&#039;]    = true,&lt;br /&gt;
	[&#039;submodule&#039;]   = true,&lt;br /&gt;
	[&#039;file&#039;]        = true,&lt;br /&gt;
	-- Contains documentation.&lt;br /&gt;
	[&#039;topic&#039;]       = true,&lt;br /&gt;
	[&#039;example&#039;]     = true&lt;br /&gt;
}&lt;br /&gt;
p.tags._code_types = {&lt;br /&gt;
	[&#039;module&#039;]      = true,&lt;br /&gt;
	[&#039;script&#039;]      = true,&lt;br /&gt;
	[&#039;classmod&#039;]    = true&lt;br /&gt;
}&lt;br /&gt;
p.tags._module_info = {&lt;br /&gt;
	[&#039;image&#039;]       = true,&lt;br /&gt;
	[&#039;caption&#039;]     = true,&lt;br /&gt;
	[&#039;release&#039;]     = true,&lt;br /&gt;
	[&#039;author&#039;]      = true,&lt;br /&gt;
	[&#039;copyright&#039;]   = true,&lt;br /&gt;
	[&#039;license&#039;]     = true,&lt;br /&gt;
	[&#039;require&#039;]     = true,&lt;br /&gt;
	[&#039;credit&#039;]      = true,&lt;br /&gt;
	[&#039;attribution&#039;] = true,&lt;br /&gt;
	[&#039;demo&#039;]        = true&lt;br /&gt;
}&lt;br /&gt;
p.tags._annotation_tags = {&lt;br /&gt;
	[&#039;field&#039;]       = true,&lt;br /&gt;
	[&#039;warning&#039;]     = true,&lt;br /&gt;
	[&#039;fixme&#039;]       = true,&lt;br /&gt;
	[&#039;note&#039;]        = true,&lt;br /&gt;
	[&#039;todo&#039;]        = true,&lt;br /&gt;
	[&#039;see&#039;]         = true&lt;br /&gt;
}&lt;br /&gt;
p.tags._annotation_hierarchy = {&lt;br /&gt;
	&#039;warning&#039;,&lt;br /&gt;
	&#039;fixme&#039;,&lt;br /&gt;
	&#039;note&#039;,&lt;br /&gt;
	&#039;todo&#039;,&lt;br /&gt;
	&#039;see&#039;&lt;br /&gt;
}&lt;br /&gt;
p.tags._privacy_tags = {&lt;br /&gt;
	[&#039;private&#039;]     = true,&lt;br /&gt;
	[&#039;local&#039;]       = true&lt;br /&gt;
}&lt;br /&gt;
p.tags._generic_tags = {&lt;br /&gt;
	[&#039;variable&#039;]    = true,&lt;br /&gt;
	[&#039;member&#039;]      = true&lt;br /&gt;
}&lt;br /&gt;
p.tags._subtype_tags = {&lt;br /&gt;
	[&#039;factory&#039;]     = true,&lt;br /&gt;
	[&#039;local&#039;]       = true,&lt;br /&gt;
	[&#039;private&#039;]     = true,&lt;br /&gt;
	[&#039;constructor&#039;] = true,&lt;br /&gt;
	[&#039;static&#039;]      = true&lt;br /&gt;
}&lt;br /&gt;
p.tags._subtype_hierarchy = {&lt;br /&gt;
	&#039;private&#039;,&lt;br /&gt;
	&#039;local&#039;,&lt;br /&gt;
	&#039;static&#039;,&lt;br /&gt;
	&#039;factory&#039;,&lt;br /&gt;
	&#039;constructor&#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
	<entry>
		<id>https://austenasia.wiki/index.php?title=Module:I18n&amp;diff=824</id>
		<title>Module:I18n</title>
		<link rel="alternate" type="text/html" href="https://austenasia.wiki/index.php?title=Module:I18n&amp;diff=824"/>
		<updated>2026-09-18T17:39:11Z</updated>

		<summary type="html">&lt;p&gt;Austenasia: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--- I18n library for message storage in Lua datastores.&lt;br /&gt;
--  The module is designed to enable message separation from modules &amp;amp;&lt;br /&gt;
--  templates. It has support for handling language fallbacks. This&lt;br /&gt;
--  module is a Lua port of [[wikia:dev:I18n-js]] and i18n modules that can be loaded&lt;br /&gt;
--  by it are editable through [[wikia:dev:I18nEdit]].&lt;br /&gt;
--  &lt;br /&gt;
--  On Wikimedia projects, i18n messages are editable &lt;br /&gt;
--  through [[c:Special:PrefixIndex/Data:i18n/|Data:i18n/]] subpages on&lt;br /&gt;
--  Wikimedia Commons.&lt;br /&gt;
--  &lt;br /&gt;
--  @module		 i18n&lt;br /&gt;
--  @version		1.4.0&lt;br /&gt;
--  @require		Module:Entrypoint&lt;br /&gt;
--  @require		Module:Fallbacklist&lt;br /&gt;
--  @author		 [[wikia:dev:User:KockaAdmiralac|KockaAdmiralac]] (original Fandom implementation)&lt;br /&gt;
--  @author		 [[wikia:dev:User:Speedit|Speedit]] (original Fandom implementation)&lt;br /&gt;
--  @author			[[User:Awesome Aasim|Awesome Aasim]] (Wikimedia port)&lt;br /&gt;
--  @attribution	[[wikia:dev:User:Cqm|Cqm]]&lt;br /&gt;
--  @release		beta&lt;br /&gt;
--  @see			[[wikia:dev:I18n|I18n guide]]&lt;br /&gt;
--  @see			[[wikia:dev:I18n-js]]&lt;br /&gt;
--  @see			[[wikia:dev:I18nEdit]]&lt;br /&gt;
--  &amp;lt;nowiki&amp;gt;&lt;br /&gt;
local i18n, _i18n = {}, {}&lt;br /&gt;
&lt;br /&gt;
--  Module variables &amp;amp; dependencies.&lt;br /&gt;
local title = mw.title.getCurrentTitle()&lt;br /&gt;
local fallbacks = require(&#039;Module:Fallbacklist&#039;)&lt;br /&gt;
local entrypoint = require(&#039;Module:Entrypoint&#039;)&lt;br /&gt;
local uselang&lt;br /&gt;
&lt;br /&gt;
--- Argument substitution as $n where n &amp;gt; 0.&lt;br /&gt;
--  @function		   _i18n.handleArgs&lt;br /&gt;
--  @param			  {string} msg Message to substitute arguments into.&lt;br /&gt;
--  @param			  {table} args Arguments table to substitute.&lt;br /&gt;
--  @return			 {string} Resulting message.&lt;br /&gt;
--  @local&lt;br /&gt;
function _i18n.handleArgs(msg, args)&lt;br /&gt;
	for i, a in ipairs(args) do&lt;br /&gt;
		msg = (string.gsub(msg, &#039;%$&#039; .. tostring(i), tostring(a)))&lt;br /&gt;
	end&lt;br /&gt;
	return msg&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Checks whether a language code is valid.&lt;br /&gt;
--  @function		   _i18n.isValidCode&lt;br /&gt;
--  @param			  {string} code Language code to check.&lt;br /&gt;
--  @return			 {boolean} Whether the language code is valid.&lt;br /&gt;
--  @local&lt;br /&gt;
function _i18n.isValidCode(code)&lt;br /&gt;
	return type(code) == &#039;string&#039; and #mw.language.fetchLanguageName(code) ~= 0&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Checks whether a message contains unprocessed wikitext.&lt;br /&gt;
--  Used to optimise message getter by not preprocessing pure text.&lt;br /&gt;
--  @function		   _i18n.isWikitext&lt;br /&gt;
--  @param			  {string} msg Message to check.&lt;br /&gt;
--  @return			 {boolean} Whether the message contains wikitext.&lt;br /&gt;
function _i18n.isWikitext(msg)&lt;br /&gt;
	return&lt;br /&gt;
		type(msg) == &#039;string&#039; and&lt;br /&gt;
		(&lt;br /&gt;
			msg:find(&#039;%-%-%-%-&#039;) or&lt;br /&gt;
			msg:find(&#039;%f[^\n%z][;:*#] &#039;) or&lt;br /&gt;
			msg:find(&#039;%f[^\n%z]==* *[^\n|]+ =*=%f[\n]&#039;) or&lt;br /&gt;
			msg:find(&#039;%b&amp;lt;&amp;gt;&#039;) or msg:find(&#039;\&#039;\&#039;&#039;) or&lt;br /&gt;
			msg:find(&#039;%[%b[]%]&#039;) or msg:find(&#039;{%b{}}&#039;)&lt;br /&gt;
		)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- I18n datastore class.&lt;br /&gt;
--  This is used to control language translation and access to individual&lt;br /&gt;
--  messages. The datastore instance provides language and message&lt;br /&gt;
--  getter-setter methods, which can be used to internationalize Lua modules.&lt;br /&gt;
--  The language methods (any ending in `Lang`) are all **chainable**.&lt;br /&gt;
--  @type			Data&lt;br /&gt;
local Data = {}&lt;br /&gt;
Data.__index = Data&lt;br /&gt;
&lt;br /&gt;
--- Datastore message getter utility.&lt;br /&gt;
--  This method returns localized messages from the datastore corresponding&lt;br /&gt;
--  to a `key`. These messages may have `$n` parameters, which can be&lt;br /&gt;
--  replaced by optional argument strings supplied by the `msg` call.&lt;br /&gt;
--  &lt;br /&gt;
--  This function supports [[mw:Extension:Scribunto/Lua reference manual#named_arguments|named&lt;br /&gt;
--  arguments]]. The named argument syntax is more versatile despite its&lt;br /&gt;
--  verbosity; it can be used to select message language &amp;amp; source(s).&lt;br /&gt;
--  @function		   Data:msg&lt;br /&gt;
--  @usage&lt;br /&gt;
--  &lt;br /&gt;
--	  ds:msg{&lt;br /&gt;
--		  key = &#039;message-name&#039;,&lt;br /&gt;
--		  lang = &#039;&#039;,&lt;br /&gt;
--		  args = {...},&lt;br /&gt;
--		  sources = {}&lt;br /&gt;
--	  }&lt;br /&gt;
--  &lt;br /&gt;
--  @usage&lt;br /&gt;
--  &lt;br /&gt;
--	  ds:msg(&#039;message-name&#039;, ...)&lt;br /&gt;
--  &lt;br /&gt;
--  @param			  {string|table} opts Message configuration or key.&lt;br /&gt;
--  @param[opt]		 {string} opts.key Message key to return from the&lt;br /&gt;
--					  datastore.&lt;br /&gt;
--  @param[opt]		 {table} opts.args Arguments to substitute into the&lt;br /&gt;
--					  message (`$n`).&lt;br /&gt;
--  @param[opt]		 {table} opts.sources Source names to limit to (see&lt;br /&gt;
--					  `Data:fromSources`).&lt;br /&gt;
--  @param[opt]		 {table} opts.lang Temporary language to use (see&lt;br /&gt;
--					  `Data:inLang`).&lt;br /&gt;
--  @param[opt]		 {string} ... Arguments to substitute into the message&lt;br /&gt;
--					  (`$n`).&lt;br /&gt;
--  @error[115]		 {string} &#039;missing arguments in Data:msg&#039;&lt;br /&gt;
--  @return			 {string} Localised datastore message or `&#039;&amp;lt;key&amp;gt;&#039;`.&lt;br /&gt;
function Data:msg(opts, ...)&lt;br /&gt;
	local frame = mw.getCurrentFrame()&lt;br /&gt;
	-- Argument normalization.&lt;br /&gt;
	if not self or not opts then&lt;br /&gt;
		error(&#039;missing arguments in Data:msg&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	local key = type(opts) == &#039;table&#039; and opts.key or opts&lt;br /&gt;
	local args = opts.args or {...}&lt;br /&gt;
	-- Configuration parameters.&lt;br /&gt;
	if opts.sources then&lt;br /&gt;
		self:fromSources(unpack(opts.sources))&lt;br /&gt;
	end&lt;br /&gt;
	if opts.lang then&lt;br /&gt;
		self:inLang(opts.lang)&lt;br /&gt;
	end&lt;br /&gt;
	-- Source handling.&lt;br /&gt;
	local source_n = self.tempSources or self._sources&lt;br /&gt;
	local source_i = {}&lt;br /&gt;
	for n, i in pairs(source_n) do&lt;br /&gt;
		source_i[i] = n&lt;br /&gt;
	end&lt;br /&gt;
	self.tempSources = nil&lt;br /&gt;
	-- Language handling.&lt;br /&gt;
	local lang = self.tempLang or self.defaultLang&lt;br /&gt;
	self.tempLang = nil&lt;br /&gt;
	-- Message fetching.&lt;br /&gt;
	local msg&lt;br /&gt;
	for i, messages in ipairs(self._messages) do&lt;br /&gt;
		-- Message data.&lt;br /&gt;
		local msg = (messages[lang] or {})[key]&lt;br /&gt;
		-- Fallback support (experimental).&lt;br /&gt;
		for _, l in ipairs((fallbacks[lang] or {})) do&lt;br /&gt;
			if msg == nil then&lt;br /&gt;
				msg = (messages[l] or {})[key]&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		-- Internal fallback to &#039;en&#039;.&lt;br /&gt;
		msg = msg ~= nil and msg or messages.en[key]&lt;br /&gt;
		-- Handling argument substitution from Lua.&lt;br /&gt;
		if msg and source_i[i] and #args &amp;gt; 0 then&lt;br /&gt;
			msg = _i18n.handleArgs(msg, args)&lt;br /&gt;
		end&lt;br /&gt;
		if msg and source_i[i] and lang ~= &#039;qqx&#039; then&lt;br /&gt;
			return frame and _i18n.isWikitext(msg)&lt;br /&gt;
				and frame:preprocess(mw.text.trim(msg))&lt;br /&gt;
				or  mw.text.trim(msg)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;&amp;amp;#x29FC;&#039; .. mw.text.nowiki(key) .. &#039;&amp;amp;#x29FD;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Datastore template parameter getter utility.&lt;br /&gt;
--  This method, given a table of arguments, tries to find a parameter&#039;s&lt;br /&gt;
--  localized name in the datastore and returns its value, or nil if&lt;br /&gt;
--  not present.&lt;br /&gt;
--&lt;br /&gt;
--  This method always uses the wiki&#039;s content language.&lt;br /&gt;
--  @function		   Data:parameter&lt;br /&gt;
--  @param			  {string} parameter Parameter&#039;s key in the datastore&lt;br /&gt;
--  @param			  {table} args Arguments to find the parameter in&lt;br /&gt;
--  @error[176]		 {string} &#039;missing arguments in Data:parameter&#039;&lt;br /&gt;
--  @return			 {string|nil} Parameter&#039;s value or nil if not present&lt;br /&gt;
function Data:parameter(key, args)&lt;br /&gt;
	-- Argument normalization.&lt;br /&gt;
	if not self or not key or not args then&lt;br /&gt;
		error(&#039;missing arguments in Data:parameter&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	local contentLang = mw.language.getContentLanguage():getCode()&lt;br /&gt;
	-- Message fetching.&lt;br /&gt;
	for i, messages in ipairs(self._messages) do&lt;br /&gt;
		local msg = (messages[contentLang] or {})[key]&lt;br /&gt;
		if msg ~= nil and args[msg] ~= nil then&lt;br /&gt;
			return args[msg]&lt;br /&gt;
		end&lt;br /&gt;
		for _, l in ipairs((fallbacks[contentLang] or {})) do&lt;br /&gt;
			if msg == nil or args[msg] == nil then&lt;br /&gt;
				-- Check next fallback.&lt;br /&gt;
				msg = (messages[l] or {})[key]&lt;br /&gt;
			else&lt;br /&gt;
				-- A localized message was found.&lt;br /&gt;
				return args[msg]&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		-- Fallback to English.&lt;br /&gt;
		msg = messages.en[key]&lt;br /&gt;
		if msg ~= nil and args[msg] ~= nil then&lt;br /&gt;
			return args[msg]&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Datastore temporary source setter to a specificed subset of datastores.&lt;br /&gt;
--  By default, messages are fetched from the datastore in the same&lt;br /&gt;
--  order of priority as `i18n.loadMessages`.&lt;br /&gt;
--  @function		   Data:fromSource&lt;br /&gt;
--  @param			  {string} ... Source name(s) to use.&lt;br /&gt;
--  @return			 {Data} Datastore instance.&lt;br /&gt;
function Data:fromSource(...)&lt;br /&gt;
	local c = select(&#039;#&#039;, ...)&lt;br /&gt;
	if c ~= 0 then&lt;br /&gt;
		self.tempSources = {}&lt;br /&gt;
		for i = 1, c do&lt;br /&gt;
			local n = select(i, ...)&lt;br /&gt;
			if type(n) == &#039;string&#039; and type(self._sources[n]) == &#039;number&#039; then&lt;br /&gt;
				self.tempSources[n] = self._sources[n]&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return self&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Datastore default language getter.&lt;br /&gt;
--  @function		   Data:getLang&lt;br /&gt;
--  @return			 {string} Default language to serve datastore messages in.&lt;br /&gt;
function Data:getLang()&lt;br /&gt;
	return self.defaultLang&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Datastore language setter to `wgUserLanguage`.&lt;br /&gt;
--  @function		   Data:useUserLang&lt;br /&gt;
--  @return			 {Data} Datastore instance.&lt;br /&gt;
--  @note			   Scribunto only registers `wgUserLanguage` when an&lt;br /&gt;
--					  invocation is at the top of the call stack.&lt;br /&gt;
function Data:useUserLang()&lt;br /&gt;
	self.defaultLang = i18n.getLang() or self.defaultLang&lt;br /&gt;
	return self&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Datastore language setter to `wgContentLanguage`.&lt;br /&gt;
--  @function		   Data:useContentLang&lt;br /&gt;
--  @return			 {Data} Datastore instance.&lt;br /&gt;
function Data:useContentLang()&lt;br /&gt;
	self.defaultLang = mw.language.getContentLanguage():getCode()&lt;br /&gt;
	return self&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Datastore language setter to specificed language.&lt;br /&gt;
--  @function		   Data:useLang&lt;br /&gt;
--  @param			  {string} code Language code to use.&lt;br /&gt;
--  @return			 {Data} Datastore instance.&lt;br /&gt;
function Data:useLang(code)&lt;br /&gt;
	self.defaultLang = _i18n.isValidCode(code)&lt;br /&gt;
		and code&lt;br /&gt;
		or  self.defaultLang&lt;br /&gt;
	return self&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Temporary datastore language setter to `wgUserLanguage`.&lt;br /&gt;
--  The datastore language reverts to the default language in the next&lt;br /&gt;
--  @{Data:msg} call.&lt;br /&gt;
--  @function		   Data:inUserLang&lt;br /&gt;
--  @return			 {Data} Datastore instance.&lt;br /&gt;
function Data:inUserLang()&lt;br /&gt;
	self.tempLang = i18n.getLang() or self.tempLang&lt;br /&gt;
	return self&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Temporary datastore language setter to `wgContentLanguage`.&lt;br /&gt;
--  Only affects the next @{Data:msg} call.&lt;br /&gt;
--  @function		   Data:inContentLang&lt;br /&gt;
--  @return			 {Data} Datastore instance.&lt;br /&gt;
function Data:inContentLang()&lt;br /&gt;
	self.tempLang = mw.language.getContentLanguage():getCode()&lt;br /&gt;
	return self&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Temporary datastore language setter to a specificed language.&lt;br /&gt;
--  Only affects the next @{Data:msg} call.&lt;br /&gt;
--  @function		   Data:inLang&lt;br /&gt;
--  @param			  {string} code Language code to use.&lt;br /&gt;
--  @return			 {Data} Datastore instance.&lt;br /&gt;
function Data:inLang(code)&lt;br /&gt;
	self.tempLang = _i18n.isValidCode(code)&lt;br /&gt;
		and code&lt;br /&gt;
		or  self.tempLang&lt;br /&gt;
	return self&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--  Package functions.&lt;br /&gt;
&lt;br /&gt;
--- Localized message getter by key.&lt;br /&gt;
--  Can be used to fetch messages in a specific language code through `uselang`&lt;br /&gt;
--  parameter. Extra numbered parameters can be supplied for substitution into&lt;br /&gt;
--  the datastore message.&lt;br /&gt;
--  @function		   i18n.getMsg&lt;br /&gt;
--  @param			  {table} frame Frame table from invocation.&lt;br /&gt;
--  @param			  {table} frame.args Metatable containing arguments.&lt;br /&gt;
--  @param			  {string} frame.args[1] ROOTPAGENAME of i18n submodule.&lt;br /&gt;
--  @param			  {string} frame.args[2] Key of i18n message.&lt;br /&gt;
--  @param[opt]		 {string} frame.args.lang Default language of message.&lt;br /&gt;
--  @error[271]		 {string} &#039;missing arguments in i18n.getMsg&#039;&lt;br /&gt;
--  @return			 {string} I18n message in localised language.&lt;br /&gt;
function i18n.getMsg(frame)&lt;br /&gt;
	if&lt;br /&gt;
		not frame or&lt;br /&gt;
		not frame.args or&lt;br /&gt;
		not frame.args[1] or&lt;br /&gt;
		not frame.args[2]&lt;br /&gt;
	then&lt;br /&gt;
		error(&#039;missing arguments in i18n.getMsg&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	local source = frame.args[1]&lt;br /&gt;
	local key = frame.args[2]&lt;br /&gt;
	-- Pass through extra arguments.&lt;br /&gt;
	local repl = {}&lt;br /&gt;
	for i, a in ipairs(frame.args) do&lt;br /&gt;
		if i &amp;gt;= 3 then&lt;br /&gt;
			repl[i-2] = a&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- Load message data.&lt;br /&gt;
	local ds = i18n.loadMessages(source)&lt;br /&gt;
	-- Pass through language argument.&lt;br /&gt;
	ds:inLang(frame.args.uselang)&lt;br /&gt;
	-- Return message.&lt;br /&gt;
	return ds:msg { key = key, args = repl }&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
--- I18n message datastore loader.&lt;br /&gt;
--  @function		   i18n.loadMessages&lt;br /&gt;
--  @param			  {string} ... ROOTPAGENAME/path for target i18n&lt;br /&gt;
--					  submodules.&lt;br /&gt;
--  @error[322]		 {string} &#039;no source supplied to i18n.loadMessages&#039;&lt;br /&gt;
--  @return			 {table} I18n datastore instance.&lt;br /&gt;
--  @usage			  require(&#039;Module:I18n&#039;).loadMessages(&#039;1&#039;, &#039;2&#039;)&lt;br /&gt;
function i18n.loadMessages(...)&lt;br /&gt;
	local ds&lt;br /&gt;
	local i = 0&lt;br /&gt;
	local s = {}&lt;br /&gt;
	for j = 1, select(&#039;#&#039;, ...) do&lt;br /&gt;
		local source = select(j, ...)&lt;br /&gt;
		if type(source) == &#039;string&#039; and source ~= &#039;&#039; then&lt;br /&gt;
			i = i + 1&lt;br /&gt;
			s[source] = i&lt;br /&gt;
			if not ds then&lt;br /&gt;
				-- Instantiate datastore.&lt;br /&gt;
				ds = {}&lt;br /&gt;
				ds._messages = {}&lt;br /&gt;
				-- Set default language.&lt;br /&gt;
				setmetatable(ds, Data)&lt;br /&gt;
				ds:useUserLang()&lt;br /&gt;
			end&lt;br /&gt;
			source = string.gsub(source, &#039;^.&#039;, mw.ustring.upper)&lt;br /&gt;
			local success, messages = pcall(mw.loadData, mw.ustring.find(source, &#039;:&#039;)&lt;br /&gt;
				and source&lt;br /&gt;
				or  &#039;Module:&#039; .. source .. &#039;/i18n&#039;)&lt;br /&gt;
			if success then&lt;br /&gt;
				local msgCopy = {}&lt;br /&gt;
				local langSecond = nil&lt;br /&gt;
				for lang_id, msgtbl in pairs(messages) do&lt;br /&gt;
					if langSecond == nil then&lt;br /&gt;
						if lang_id == &amp;quot;qqq&amp;quot; or fallbacks[lang_id] ~= nil then&lt;br /&gt;
							langSecond = false&lt;br /&gt;
						else&lt;br /&gt;
							langSecond = true&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
					for id_lang, msg in pairs(msgtbl) do&lt;br /&gt;
						if langSecond then&lt;br /&gt;
							msgCopy[id_lang] = msgCopy[id_lang] or {}&lt;br /&gt;
							msgCopy[id_lang][lang_id] = msg&lt;br /&gt;
						else&lt;br /&gt;
							msgCopy[lang_id] = msgCopy[lang_id] or {}&lt;br /&gt;
							msgCopy[lang_id][id_lang] = msg&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
				ds._messages[i] = msgCopy&lt;br /&gt;
			end&lt;br /&gt;
			local tab = mw.ext.data.get(&#039;I18n/&#039; .. source .. &#039;.tab&#039;, &#039;_&#039;)&lt;br /&gt;
			local T = {}&lt;br /&gt;
			if not success and not tab then error(&amp;quot;i18n for &amp;quot; .. source .. &amp;quot; is missing&amp;quot;) end&lt;br /&gt;
			for _, row in pairs(tab.data) do -- convert the output into a dictionary table&lt;br /&gt;
				local id, t = unpack(row)&lt;br /&gt;
				for lang, msg in pairs(t) do&lt;br /&gt;
					if not T[lang] then T[lang] = {} end&lt;br /&gt;
					T[lang][id] = msg&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if not success then&lt;br /&gt;
				ds._messages[i] = T&lt;br /&gt;
			else&lt;br /&gt;
				for lang, msgTbl in pairs(T) do&lt;br /&gt;
					ds._messages[i][lang] = ds._messages[i][lang] or msgTbl&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if not ds then&lt;br /&gt;
		error(&#039;no source supplied to i18n.loadMessages&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		-- Attach source index map.&lt;br /&gt;
		ds._sources = s&lt;br /&gt;
		-- Return datastore instance.&lt;br /&gt;
		return ds&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Language code getter.&lt;br /&gt;
--  Can validate a template&#039;s language code through `uselang` parameter.&lt;br /&gt;
--  @function		   i18n.getLang&lt;br /&gt;
--  @return			 {string} Language code.&lt;br /&gt;
function i18n.getLang()&lt;br /&gt;
	local frame = mw.getCurrentFrame() or {}&lt;br /&gt;
	local parentFrame = frame.getParent and frame:getParent() or {}&lt;br /&gt;
&lt;br /&gt;
	local code = mw.language.getContentLanguage():getCode()&lt;br /&gt;
	local subPage = title.subpageText&lt;br /&gt;
&lt;br /&gt;
	-- Language argument test.&lt;br /&gt;
	local langOverride =&lt;br /&gt;
		(frame.args or {}).uselang or&lt;br /&gt;
		(parentFrame.args or {}).uselang&lt;br /&gt;
	if _i18n.isValidCode(langOverride) then&lt;br /&gt;
		code = langOverride&lt;br /&gt;
&lt;br /&gt;
	-- Subpage language test.&lt;br /&gt;
	elseif title.isSubpage and _i18n.isValidCode(subPage) then&lt;br /&gt;
		code = _i18n.isValidCode(subPage) and subPage or code&lt;br /&gt;
&lt;br /&gt;
	-- User language test.&lt;br /&gt;
	elseif parentFrame.preprocess or frame.preprocess then&lt;br /&gt;
		uselang = uselang&lt;br /&gt;
			or  parentFrame.preprocess&lt;br /&gt;
				and parentFrame:preprocess(&#039;{{int:lang}}&#039;)&lt;br /&gt;
				or  frame:preprocess(&#039;{{int:lang}}&#039;)&lt;br /&gt;
		local decodedLang = mw.text.decode(uselang) &lt;br /&gt;
		if decodedLang ~= &#039;&amp;lt;lang&amp;gt;&#039; and decodedLang ~= &#039;⧼lang⧽&#039; then&lt;br /&gt;
			code = decodedLang == &#039;(lang)&#039;&lt;br /&gt;
				and &#039;qqx&#039;&lt;br /&gt;
				or  uselang&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return code&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Credit to http://stackoverflow.com/a/1283608/2644759&lt;br /&gt;
-- cc-by-sa 3.0&lt;br /&gt;
local function tableMerge(t1, t2, overwrite)&lt;br /&gt;
	for k,v in pairs(t2) do&lt;br /&gt;
		if type(v) == &amp;quot;table&amp;quot; and type(t1[k]) == &amp;quot;table&amp;quot; then&lt;br /&gt;
			-- since type(t1[k]) == type(v) == &amp;quot;table&amp;quot;, so t1[k] and v is true&lt;br /&gt;
			tableMerge(t1[k], v, overwrite) -- t2[k] == v&lt;br /&gt;
		else&lt;br /&gt;
			if overwrite or t1[k] == nil then t1[k] = v end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return t1&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Given an i18n table instantiates the values (deprecated)&lt;br /&gt;
--  @function i18n.loadI18n&lt;br /&gt;
--  @param {string} name name of module with i18n&lt;br /&gt;
--  @param {table} i18n_arg existing i18n&lt;br /&gt;
function i18n.loadI18n(name, i18n_arg)&lt;br /&gt;
	local exist, res = pcall(require, name)&lt;br /&gt;
	if exist and next(res) ~= nil then&lt;br /&gt;
		if i18n_arg then&lt;br /&gt;
			tableMerge(i18n_arg, res.i18n, true)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Loads an i18n for a specific frame (deprecated)&lt;br /&gt;
--  @function i18n.loadI18nFrame&lt;br /&gt;
--  @param {string} name name of module with i18n&lt;br /&gt;
--  @param {table} i18n_arg existing i18n&lt;br /&gt;
function i18n.loadI18nFrame(frame, i18n_arg)&lt;br /&gt;
	return i18n.loadI18n(frame:getTitle()..&amp;quot;/i18n&amp;quot;, i18n_arg)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Wrapper for the module.&lt;br /&gt;
--  @function		   i18n.main&lt;br /&gt;
--  @param			  {table} frame Frame invocation object.&lt;br /&gt;
--  @return			 {string} Module output in template context.&lt;br /&gt;
--  @usage			  {{#invoke:i18n|main}}&lt;br /&gt;
i18n.main = entrypoint(i18n)&lt;br /&gt;
&lt;br /&gt;
return require(&amp;quot;Module:Deprecated&amp;quot;)(i18n, &lt;br /&gt;
	{&lt;br /&gt;
		[&amp;quot;loadI18n&amp;quot;] = {&lt;br /&gt;
			deprecated = true,&lt;br /&gt;
			replacement = &amp;quot;use &amp;lt;code&amp;gt;i18n.loadMessages&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		[&amp;quot;loadI18nFrame&amp;quot;] = {&lt;br /&gt;
			deprecated = true,&lt;br /&gt;
			replacement = &amp;quot;use &amp;lt;code&amp;gt;i18n.loadMessages&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
)&lt;br /&gt;
-- &amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Austenasia</name></author>
	</entry>
</feed>