<?xml version="1.0"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title>Regio  - Recent changes [en]</title>
		<link>https://regio.w.kmwc.org/w/Special:RecentChanges</link>
		<description>Track the most recent changes to the wiki in this feed.</description>
		<language>en</language>
		<generator>MediaWiki 1.41.1</generator>
		<lastBuildDate>Tue, 21 Jul 2026 15:55:44 GMT</lastBuildDate>
		<item>
			<title>Wave Decay</title>
			<link>https://regio.w.kmwc.org/index.php?title=Wave_Decay&amp;diff=45&amp;oldid=44</link>
			<guid isPermaLink="false">https://regio.w.kmwc.org/index.php?title=Wave_Decay&amp;diff=45&amp;oldid=44</guid>
			<description>&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 23:53, 20 July 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;Wave Decay&#039;&#039;&#039; is a phenomena created when living beings are exposed to altered versions of the [[Universal Wave Construction]]. Exposure to these altered waves for prolonged periods of time are known to have extremely dangerous side-effects, utilized in the [[Wave Bomb|Wave Bombs]] that rendered much of the world uninhabitable.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;Wave Decay&#039;&#039;&#039; is a phenomena created when living beings are exposed to altered versions of the [[Universal Wave Construction]]. Exposure to these altered waves for prolonged periods of time are known to have extremely dangerous side-effects, utilized in the [[Wave Bomb|Wave Bombs]] that rendered much of the world uninhabitable&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. When exposed to altered waves, all living matter is known to experience mutations and alterations depending on the differences between the wave exposed to and the Universal Wave Construction&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key regio:diff:1.41:old-44:rev-45:php=table --&gt;
&lt;/table&gt;</description>
			<pubDate>Mon, 20 Jul 2026 23:53:23 GMT</pubDate>
			<dc:creator>Marie</dc:creator>
			<comments>https://regio.w.kmwc.org/w/Talk:Wave_Decay</comments>
		</item>
		<item>
			<title>Wave Decay</title>
			<link>https://regio.w.kmwc.org/index.php?title=Wave_Decay&amp;diff=44&amp;oldid=0</link>
			<guid isPermaLink="false">https://regio.w.kmwc.org/index.php?title=Wave_Decay&amp;diff=44&amp;oldid=0</guid>
			<description>&lt;p&gt;Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;Wave Decay&amp;#039;&amp;#039;&amp;#039; is a phenomena created when living beings are exposed to altered versions of the &lt;a href=&quot;/index.php?title=Universal_Wave_Construction&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Universal Wave Construction (page does not exist)&quot;&gt;Universal Wave Construction&lt;/a&gt;. Exposure to these altered waves for prolonged periods of time are known to have extremely dangerous side-effects, utilized in the &lt;a href=&quot;/index.php?title=Wave_Bomb&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Wave Bomb (page does not exist)&quot;&gt;Wave Bombs&lt;/a&gt; that rendered much of the world uninhabitable.&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Wave Decay&amp;#039;&amp;#039;&amp;#039; is a phenomena created when living beings are exposed to altered versions of the [[Universal Wave Construction]]. Exposure to these altered waves for prolonged periods of time are known to have extremely dangerous side-effects, utilized in the [[Wave Bomb|Wave Bombs]] that rendered much of the world uninhabitable.&lt;/div&gt;</description>
			<pubDate>Mon, 20 Jul 2026 23:50:01 GMT</pubDate>
			<dc:creator>Marie</dc:creator>
			<comments>https://regio.w.kmwc.org/w/Talk:Wave_Decay</comments>
		</item>
		<item>
			<title>War of All Colors</title>
			<link>https://regio.w.kmwc.org/index.php?title=War_of_All_Colors&amp;diff=43&amp;oldid=0</link>
			<guid isPermaLink="false">https://regio.w.kmwc.org/index.php?title=War_of_All_Colors&amp;diff=43&amp;oldid=0</guid>
			<description>&lt;p&gt;Created page with &amp;quot;The &amp;#039;&amp;#039;&amp;#039;War of All Colors&amp;#039;&amp;#039;&amp;#039; was a globe-spanning conflict and the deadliest conflict in history. The war was fought between all major powers of the Pre-&lt;a href=&quot;/w/Wave_Decay&quot; title=&quot;Wave Decay&quot;&gt;Wave Decay&lt;/a&gt; world. The war saw the first use of large-scale organized machine warfare, which culminated in the deployment of the &lt;a href=&quot;/index.php?title=Wave_Bomb&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Wave Bomb (page does not exist)&quot;&gt;Wave Bomb&lt;/a&gt; by several nations of the world. The exact causes behind the war have been long forgotten, as many of the nations involved were rendered completely uninhabitable due to Wave Decay.&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;The &amp;#039;&amp;#039;&amp;#039;War of All Colors&amp;#039;&amp;#039;&amp;#039; was a globe-spanning conflict and the deadliest conflict in history. The war was fought between all major powers of the Pre-[[Wave Decay]] world. The war saw the first use of large-scale organized machine warfare, which culminated in the deployment of the [[Wave Bomb]] by several nations of the world. The exact causes behind the war have been long forgotten, as many of the nations involved were rendered completely uninhabitable due to Wave Decay.&lt;/div&gt;</description>
			<pubDate>Mon, 20 Jul 2026 23:27:43 GMT</pubDate>
			<dc:creator>Marie</dc:creator>
			<comments>https://regio.w.kmwc.org/w/Talk:War_of_All_Colors</comments>
		</item>
		<item>
			<title>Module:Documentation</title>
			<link>https://regio.w.kmwc.org/index.php?title=Module:Documentation&amp;diff=22&amp;oldid=0</link>
			<guid isPermaLink="false">https://regio.w.kmwc.org/index.php?title=Module:Documentation&amp;diff=22&amp;oldid=0</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Marie&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new mw-userlink&quot; title=&quot;User:Marie (page does not exist)&quot;&gt;&lt;bdi&gt;Marie&lt;/bdi&gt;&lt;/a&gt; imported &lt;a href=&quot;/w/Module:Documentation&quot; title=&quot;Module:Documentation&quot;&gt;Module:Documentation&lt;/a&gt; by file upload (1 revision)&lt;/p&gt;
&lt;a href=&quot;https://regio.w.kmwc.org/index.php?title=Module:Documentation&amp;amp;diff=22&quot;&gt;Show changes&lt;/a&gt;</description>
			<pubDate>Mon, 20 Jul 2026 23:19:14 GMT</pubDate>
			<dc:creator>Marie</dc:creator>
			<comments>https://regio.w.kmwc.org/w/Module_talk:Documentation</comments>
		</item>
		<item>
			<title>Module:Documentation/config</title>
			<link>https://regio.w.kmwc.org/index.php?title=Module:Documentation/config&amp;diff=24&amp;oldid=0</link>
			<guid isPermaLink="false">https://regio.w.kmwc.org/index.php?title=Module:Documentation/config&amp;diff=24&amp;oldid=0</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Marie&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new mw-userlink&quot; title=&quot;User:Marie (page does not exist)&quot;&gt;&lt;bdi&gt;Marie&lt;/bdi&gt;&lt;/a&gt; imported &lt;a href=&quot;/w/Module:Documentation/config&quot; title=&quot;Module:Documentation/config&quot;&gt;Module:Documentation/config&lt;/a&gt; by file upload (1 revision)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;----------------------------------------------------------------------------------------------------&lt;br /&gt;
--&lt;br /&gt;
--                               Configuration for Module:Documentation&lt;br /&gt;
--&lt;br /&gt;
-- Here you can set the values of the parameters and messages used in Module:Documentation to&lt;br /&gt;
-- localise it to your wiki and your language. Unless specified otherwise, values given here&lt;br /&gt;
-- should be string values.&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local cfg = {} -- Do not edit this line.&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Protection template configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;protection-template&amp;#039;]&lt;br /&gt;
-- The name of the template that displays the protection icon (a padlock on enwiki).&lt;br /&gt;
cfg[&amp;#039;protection-template&amp;#039;] = &amp;#039;pp-template&amp;#039;&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- cfg[&amp;#039;protection-template-args&amp;#039;]&lt;br /&gt;
-- Any arguments to send to the protection template. This should be a Lua table.&lt;br /&gt;
-- For example, if the protection template is &amp;quot;pp-template&amp;quot;, and the wikitext template invocation&lt;br /&gt;
-- looks like &amp;quot;{{pp-template|docusage=yes}}&amp;quot;, then this table should look like &amp;quot;{docusage = &amp;#039;yes&amp;#039;}&amp;quot;.&lt;br /&gt;
--]]&lt;br /&gt;
cfg[&amp;#039;protection-template-args&amp;#039;] = {docusage = &amp;#039;yes&amp;#039;}&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Sandbox notice configuration&lt;br /&gt;
--&lt;br /&gt;
-- On sandbox pages the module can display a template notifying users that the current page is a&lt;br /&gt;
-- sandbox, and the location of test cases pages, etc. The module decides whether the page is a&lt;br /&gt;
-- sandbox or not based on the value of cfg[&amp;#039;sandbox-subpage&amp;#039;]. The following settings configure the&lt;br /&gt;
-- messages that the notices contains.&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;sandbox-notice-image&amp;#039;]&lt;br /&gt;
-- The image displayed in the sandbox notice.&lt;br /&gt;
cfg[&amp;#039;sandbox-notice-image&amp;#039;] = &amp;#039;[[Image:Sandbox.png|50px|alt=|link=]]&amp;#039;&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- cfg[&amp;#039;sandbox-notice-pagetype-template&amp;#039;]&lt;br /&gt;
-- cfg[&amp;#039;sandbox-notice-pagetype-module&amp;#039;]&lt;br /&gt;
-- cfg[&amp;#039;sandbox-notice-pagetype-other&amp;#039;]&lt;br /&gt;
-- The page type of the sandbox page. The message that is displayed depends on the current subject&lt;br /&gt;
-- namespace. This message is used in either cfg[&amp;#039;sandbox-notice-blurb&amp;#039;] or&lt;br /&gt;
-- cfg[&amp;#039;sandbox-notice-diff-blurb&amp;#039;].&lt;br /&gt;
--]]&lt;br /&gt;
cfg[&amp;#039;sandbox-notice-pagetype-template&amp;#039;] = &amp;#039;[[Blazblue_Wiki:Template test cases|template sandbox]] page&amp;#039;&lt;br /&gt;
cfg[&amp;#039;sandbox-notice-pagetype-module&amp;#039;] = &amp;#039;[[Blazblue_Wiki:Template test cases|module sandbox]] page&amp;#039;&lt;br /&gt;
cfg[&amp;#039;sandbox-notice-pagetype-other&amp;#039;] = &amp;#039;sandbox page&amp;#039;&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- cfg[&amp;#039;sandbox-notice-blurb&amp;#039;]&lt;br /&gt;
-- cfg[&amp;#039;sandbox-notice-diff-blurb&amp;#039;]&lt;br /&gt;
-- cfg[&amp;#039;sandbox-notice-diff-display&amp;#039;]&lt;br /&gt;
-- Either cfg[&amp;#039;sandbox-notice-blurb&amp;#039;] or cfg[&amp;#039;sandbox-notice-diff-blurb&amp;#039;] is the opening sentence&lt;br /&gt;
-- of the sandbox notice. The latter has a diff link, but the former does not. $1 is the page&lt;br /&gt;
-- type, which is either cfg[&amp;#039;sandbox-notice-pagetype-template&amp;#039;],&lt;br /&gt;
-- cfg[&amp;#039;sandbox-notice-pagetype-module&amp;#039;] or cfg[&amp;#039;sandbox-notice-pagetype-other&amp;#039;] depending what&lt;br /&gt;
-- namespace we are in. $2 is a link to the main template page, and $3 is a diff link between&lt;br /&gt;
-- the sandbox and the main template. The display value of the diff link is set by &lt;br /&gt;
-- cfg[&amp;#039;sandbox-notice-compare-link-display&amp;#039;].&lt;br /&gt;
--]]&lt;br /&gt;
cfg[&amp;#039;sandbox-notice-blurb&amp;#039;] = &amp;#039;This is the $1 for $2.&amp;#039;&lt;br /&gt;
cfg[&amp;#039;sandbox-notice-diff-blurb&amp;#039;] = &amp;#039;This is the $1 for $2 ($3).&amp;#039;&lt;br /&gt;
cfg[&amp;#039;sandbox-notice-compare-link-display&amp;#039;] = &amp;#039;diff&amp;#039;&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- cfg[&amp;#039;sandbox-notice-testcases-blurb&amp;#039;]&lt;br /&gt;
-- cfg[&amp;#039;sandbox-notice-testcases-link-display&amp;#039;]&lt;br /&gt;
-- cfg[&amp;#039;sandbox-notice-testcases-blurb&amp;#039;] is a sentence notifying the user that there is a test cases page&lt;br /&gt;
-- corresponding to this sandbox that they can edit. $1 is a link to the test cases page.&lt;br /&gt;
-- cfg[&amp;#039;sandbox-notice-testcases-link-display&amp;#039;] is the display value for that link.&lt;br /&gt;
--]]&lt;br /&gt;
cfg[&amp;#039;sandbox-notice-testcases-blurb&amp;#039;] = &amp;#039;See also the companion subpage for $1.&amp;#039;&lt;br /&gt;
cfg[&amp;#039;sandbox-notice-testcases-link-display&amp;#039;] = &amp;#039;test cases&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;sandbox-category&amp;#039;]&lt;br /&gt;
-- A category to add to all template sandboxes.&lt;br /&gt;
cfg[&amp;#039;sandbox-category&amp;#039;] = &amp;#039;Template sandboxes&amp;#039;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Start box configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;documentation-icon-wikitext&amp;#039;]&lt;br /&gt;
-- The wikitext for the icon shown at the top of the template.&lt;br /&gt;
cfg[&amp;#039;documentation-icon-wikitext&amp;#039;] = &amp;#039;[[File:Template-info.png|50px|link=|alt=Documentation icon]]&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;template-namespace-heading&amp;#039;]&lt;br /&gt;
-- The heading shown in the template namespace.&lt;br /&gt;
cfg[&amp;#039;template-namespace-heading&amp;#039;] = &amp;#039;Template documentation&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;module-namespace-heading&amp;#039;]&lt;br /&gt;
-- The heading shown in the module namespace.&lt;br /&gt;
cfg[&amp;#039;module-namespace-heading&amp;#039;] = &amp;#039;Module documentation&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;file-namespace-heading&amp;#039;]&lt;br /&gt;
-- The heading shown in the file namespace.&lt;br /&gt;
cfg[&amp;#039;file-namespace-heading&amp;#039;] = &amp;#039;Summary&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;other-namespaces-heading&amp;#039;]&lt;br /&gt;
-- The heading shown in other namespaces.&lt;br /&gt;
cfg[&amp;#039;other-namespaces-heading&amp;#039;] = &amp;#039;Documentation&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;view-link-display&amp;#039;]&lt;br /&gt;
-- The text to display for &amp;quot;view&amp;quot; links.&lt;br /&gt;
cfg[&amp;#039;view-link-display&amp;#039;] = &amp;#039;view&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;edit-link-display&amp;#039;]&lt;br /&gt;
-- The text to display for &amp;quot;edit&amp;quot; links.&lt;br /&gt;
cfg[&amp;#039;edit-link-display&amp;#039;] = &amp;#039;edit&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;history-link-display&amp;#039;]&lt;br /&gt;
-- The text to display for &amp;quot;history&amp;quot; links.&lt;br /&gt;
cfg[&amp;#039;history-link-display&amp;#039;] = &amp;#039;history&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;purge-link-display&amp;#039;]&lt;br /&gt;
-- The text to display for &amp;quot;purge&amp;quot; links.&lt;br /&gt;
cfg[&amp;#039;purge-link-display&amp;#039;] = &amp;#039;purge&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;create-link-display&amp;#039;]&lt;br /&gt;
-- The text to display for &amp;quot;create&amp;quot; links.&lt;br /&gt;
cfg[&amp;#039;create-link-display&amp;#039;] = &amp;#039;create&amp;#039;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Link box (end box) configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;transcluded-from-blurb&amp;#039;]&lt;br /&gt;
-- Notice displayed when the docs are transcluded from another page. $1 is a wikilink to that page.&lt;br /&gt;
cfg[&amp;#039;transcluded-from-blurb&amp;#039;] = &amp;#039;The above [[Blazblue_Wiki:Template documentation|documentation]] is [[Blazblue_Wiki:Transclusion|transcluded]] from $1.&amp;#039;&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- cfg[&amp;#039;create-module-doc-blurb&amp;#039;]&lt;br /&gt;
-- Notice displayed in the module namespace when the documentation subpage does not exist.&lt;br /&gt;
-- $1 is a link to create the documentation page with the preload cfg[&amp;#039;module-preload&amp;#039;] and the&lt;br /&gt;
-- display cfg[&amp;#039;create-link-display&amp;#039;].&lt;br /&gt;
--]]&lt;br /&gt;
cfg[&amp;#039;create-module-doc-blurb&amp;#039;] = &amp;#039;You might want to $1 a documentation page for this [[Blazblue_Wiki:Lua|Scribunto module]].&amp;#039;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Experiment blurb configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- cfg[&amp;#039;experiment-blurb-template&amp;#039;]&lt;br /&gt;
-- cfg[&amp;#039;experiment-blurb-module&amp;#039;]&lt;br /&gt;
-- The experiment blurb is the text inviting editors to experiment in sandbox and test cases pages.&lt;br /&gt;
-- It is only shown in the template and module namespaces. With the default English settings, it&lt;br /&gt;
-- might look like this:&lt;br /&gt;
--&lt;br /&gt;
-- Editors can experiment in this template&amp;#039;s sandbox (edit | diff) and testcases (edit) pages.&lt;br /&gt;
--&lt;br /&gt;
-- In this example, &amp;quot;sandbox&amp;quot;, &amp;quot;edit&amp;quot;, &amp;quot;diff&amp;quot;, &amp;quot;testcases&amp;quot;, and &amp;quot;edit&amp;quot; would all be links.&lt;br /&gt;
--&lt;br /&gt;
-- There are two versions, cfg[&amp;#039;experiment-blurb-template&amp;#039;] and cfg[&amp;#039;experiment-blurb-module&amp;#039;], depending&lt;br /&gt;
-- on what namespace we are in.&lt;br /&gt;
-- &lt;br /&gt;
-- Parameters:&lt;br /&gt;
--&lt;br /&gt;
-- $1 is a link to the sandbox page. If the sandbox exists, it is in the following format:&lt;br /&gt;
--&lt;br /&gt;
--     cfg[&amp;#039;sandbox-link-display&amp;#039;] (cfg[&amp;#039;sandbox-edit-link-display&amp;#039;] | cfg[&amp;#039;compare-link-display&amp;#039;])&lt;br /&gt;
-- &lt;br /&gt;
-- If the sandbox doesn&amp;#039;t exist, it is in the format:&lt;br /&gt;
--&lt;br /&gt;
--     cfg[&amp;#039;sandbox-link-display&amp;#039;] (cfg[&amp;#039;sandbox-create-link-display&amp;#039;] | cfg[&amp;#039;mirror-link-display&amp;#039;])&lt;br /&gt;
-- &lt;br /&gt;
-- The link for cfg[&amp;#039;sandbox-create-link-display&amp;#039;] link preloads the page with cfg[&amp;#039;template-sandbox-preload&amp;#039;]&lt;br /&gt;
-- or cfg[&amp;#039;module-sandbox-preload&amp;#039;], depending on the current namespace. The link for cfg[&amp;#039;mirror-link-display&amp;#039;]&lt;br /&gt;
-- loads a default edit summary of cfg[&amp;#039;mirror-edit-summary&amp;#039;].&lt;br /&gt;
--&lt;br /&gt;
-- $2 is a link to the test cases page. If the test cases page exists, it is in the following format:&lt;br /&gt;
--&lt;br /&gt;
--     cfg[&amp;#039;testcases-link-display&amp;#039;] (cfg[&amp;#039;testcases-edit-link-display&amp;#039;])&lt;br /&gt;
--&lt;br /&gt;
-- If the test cases page doesn&amp;#039;t exist, it is in the format:&lt;br /&gt;
-- &lt;br /&gt;
--     cfg[&amp;#039;testcases-link-display&amp;#039;] (cfg[&amp;#039;testcases-create-link-display&amp;#039;])&lt;br /&gt;
--&lt;br /&gt;
-- If the test cases page doesn&amp;#039;t exist, the link for cfg[&amp;#039;testcases-create-link-display&amp;#039;] preloads the&lt;br /&gt;
-- page with cfg[&amp;#039;template-testcases-preload&amp;#039;] or cfg[&amp;#039;module-testcases-preload&amp;#039;], depending on the current&lt;br /&gt;
-- namespace.&lt;br /&gt;
--]]&lt;br /&gt;
cfg[&amp;#039;experiment-blurb-template&amp;#039;] = &amp;quot;Editors can experiment in this template&amp;#039;s $1 and $2 pages.&amp;quot;&lt;br /&gt;
cfg[&amp;#039;experiment-blurb-module&amp;#039;] = &amp;quot;Editors can experiment in this module&amp;#039;s $1 and $2 pages.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Sandbox link configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;sandbox-subpage&amp;#039;]&lt;br /&gt;
-- The name of the template subpage typically used for sandboxes.&lt;br /&gt;
cfg[&amp;#039;sandbox-subpage&amp;#039;] = &amp;#039;sandbox&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;template-sandbox-preload&amp;#039;]&lt;br /&gt;
-- Preload file for template sandbox pages.&lt;br /&gt;
cfg[&amp;#039;template-sandbox-preload&amp;#039;] = &amp;#039;Template:Documentation/preload-sandbox&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;module-sandbox-preload&amp;#039;]&lt;br /&gt;
-- Preload file for Lua module sandbox pages.&lt;br /&gt;
cfg[&amp;#039;module-sandbox-preload&amp;#039;] = &amp;#039;Template:Documentation/preload-module-sandbox&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;sandbox-link-display&amp;#039;]&lt;br /&gt;
-- The text to display for &amp;quot;sandbox&amp;quot; links.&lt;br /&gt;
cfg[&amp;#039;sandbox-link-display&amp;#039;] = &amp;#039;sandbox&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;sandbox-edit-link-display&amp;#039;]&lt;br /&gt;
-- The text to display for sandbox &amp;quot;edit&amp;quot; links.&lt;br /&gt;
cfg[&amp;#039;sandbox-edit-link-display&amp;#039;] = &amp;#039;edit&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;sandbox-create-link-display&amp;#039;]&lt;br /&gt;
-- The text to display for sandbox &amp;quot;create&amp;quot; links.&lt;br /&gt;
cfg[&amp;#039;sandbox-create-link-display&amp;#039;] = &amp;#039;create&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;compare-link-display&amp;#039;]&lt;br /&gt;
-- The text to display for &amp;quot;compare&amp;quot; links.&lt;br /&gt;
cfg[&amp;#039;compare-link-display&amp;#039;] = &amp;#039;diff&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;mirror-edit-summary&amp;#039;]&lt;br /&gt;
-- The default edit summary to use when a user clicks the &amp;quot;mirror&amp;quot; link. $1 is a wikilink to the&lt;br /&gt;
-- template page.&lt;br /&gt;
cfg[&amp;#039;mirror-edit-summary&amp;#039;] = &amp;#039;Create sandbox version of $1&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;mirror-link-display&amp;#039;]&lt;br /&gt;
-- The text to display for &amp;quot;mirror&amp;quot; links.&lt;br /&gt;
cfg[&amp;#039;mirror-link-display&amp;#039;] = &amp;#039;mirror&amp;#039;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Test cases link configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;testcases-subpage&amp;#039;]&lt;br /&gt;
-- The name of the template subpage typically used for test cases.&lt;br /&gt;
cfg[&amp;#039;testcases-subpage&amp;#039;] = &amp;#039;testcases&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;template-testcases-preload&amp;#039;]&lt;br /&gt;
-- Preload file for template test cases pages.&lt;br /&gt;
cfg[&amp;#039;template-testcases-preload&amp;#039;] = &amp;#039;Template:Documentation/preload-testcases&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;module-testcases-preload&amp;#039;]&lt;br /&gt;
-- Preload file for Lua module test cases pages.&lt;br /&gt;
cfg[&amp;#039;module-testcases-preload&amp;#039;] = &amp;#039;Template:Documentation/preload-module-testcases&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;testcases-link-display&amp;#039;]&lt;br /&gt;
-- The text to display for &amp;quot;testcases&amp;quot; links.&lt;br /&gt;
cfg[&amp;#039;testcases-link-display&amp;#039;] = &amp;#039;testcases&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;testcases-edit-link-display&amp;#039;]&lt;br /&gt;
-- The text to display for test cases &amp;quot;edit&amp;quot; links.&lt;br /&gt;
cfg[&amp;#039;testcases-edit-link-display&amp;#039;] = &amp;#039;edit&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;testcases-create-link-display&amp;#039;]&lt;br /&gt;
-- The text to display for test cases &amp;quot;create&amp;quot; links.&lt;br /&gt;
cfg[&amp;#039;testcases-create-link-display&amp;#039;] = &amp;#039;create&amp;#039;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Add categories blurb configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- cfg[&amp;#039;add-categories-blurb&amp;#039;]&lt;br /&gt;
-- Text to direct users to add categories to the /doc subpage. Not used if the &amp;quot;content&amp;quot; or&lt;br /&gt;
-- &amp;quot;docname fed&amp;quot; arguments are set, as then it is not clear where to add the categories. $1 is a&lt;br /&gt;
-- link to the /doc subpage with a display value of cfg[&amp;#039;doc-link-display&amp;#039;].&lt;br /&gt;
--]]&lt;br /&gt;
cfg[&amp;#039;add-categories-blurb&amp;#039;] = &amp;#039;Please add categories to the $1 subpage.&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;doc-link-display&amp;#039;]&lt;br /&gt;
-- The text to display when linking to the /doc subpage.&lt;br /&gt;
cfg[&amp;#039;doc-link-display&amp;#039;] = &amp;#039;/doc&amp;#039;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Subpages link configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- cfg[&amp;#039;subpages-blurb&amp;#039;]&lt;br /&gt;
-- The &amp;quot;Subpages of this template&amp;quot; blurb. $1 is a link to the main template&amp;#039;s subpages with a&lt;br /&gt;
-- display value of cfg[&amp;#039;subpages-link-display&amp;#039;]. In the English version this blurb is simply&lt;br /&gt;
-- the link followed by a period, and the link display provides the actual text.&lt;br /&gt;
--]]&lt;br /&gt;
cfg[&amp;#039;subpages-blurb&amp;#039;] = &amp;#039;$1.&amp;#039;&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- cfg[&amp;#039;subpages-link-display&amp;#039;]&lt;br /&gt;
-- The text to display for the &amp;quot;subpages of this page&amp;quot; link. $1 is cfg[&amp;#039;template-pagetype&amp;#039;],&lt;br /&gt;
-- cfg[&amp;#039;module-pagetype&amp;#039;] or cfg[&amp;#039;default-pagetype&amp;#039;], depending on whether the current page is in&lt;br /&gt;
-- the template namespace, the module namespace, or another namespace.&lt;br /&gt;
--]]&lt;br /&gt;
cfg[&amp;#039;subpages-link-display&amp;#039;] = &amp;#039;Subpages of this $1&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;template-pagetype&amp;#039;]&lt;br /&gt;
-- The pagetype to display for template pages.&lt;br /&gt;
cfg[&amp;#039;template-pagetype&amp;#039;] = &amp;#039;template&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;module-pagetype&amp;#039;]&lt;br /&gt;
-- The pagetype to display for Lua module pages.&lt;br /&gt;
cfg[&amp;#039;module-pagetype&amp;#039;] = &amp;#039;module&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;default-pagetype&amp;#039;]&lt;br /&gt;
-- The pagetype to display for pages other than templates or Lua modules.&lt;br /&gt;
cfg[&amp;#039;default-pagetype&amp;#039;] = &amp;#039;page&amp;#039;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Doc link configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;doc-subpage&amp;#039;]&lt;br /&gt;
-- The name of the subpage typically used for documentation pages.&lt;br /&gt;
cfg[&amp;#039;doc-subpage&amp;#039;] = &amp;#039;doc&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;file-docpage-preload&amp;#039;]&lt;br /&gt;
-- Preload file for documentation page in the file namespace.&lt;br /&gt;
cfg[&amp;#039;file-docpage-preload&amp;#039;] = &amp;#039;Template:Documentation/preload-filespace&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;docpage-preload&amp;#039;]&lt;br /&gt;
-- Preload file for template documentation pages in all namespaces.&lt;br /&gt;
cfg[&amp;#039;docpage-preload&amp;#039;] = &amp;#039;Template:Documentation/preload&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;module-preload&amp;#039;]&lt;br /&gt;
-- Preload file for Lua module documentation pages.&lt;br /&gt;
cfg[&amp;#039;module-preload&amp;#039;] = &amp;#039;Template:Documentation/preload-module-doc&amp;#039;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Print version configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;print-subpage&amp;#039;]&lt;br /&gt;
-- The name of the template subpage used for print versions.&lt;br /&gt;
cfg[&amp;#039;print-subpage&amp;#039;] = &amp;#039;Print&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;print-link-display&amp;#039;]&lt;br /&gt;
-- The text to display when linking to the /Print subpage.&lt;br /&gt;
cfg[&amp;#039;print-link-display&amp;#039;] = &amp;#039;/Print&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;print-blurb&amp;#039;]&lt;br /&gt;
-- Text to display if a /Print subpage exists. $1 is a link to the subpage with a display value of cfg[&amp;#039;print-link-display&amp;#039;].&lt;br /&gt;
cfg[&amp;#039;print-blurb&amp;#039;] = &amp;#039;A [[Help:Books/for experts#Improving the book layout|print version]] of this template exists at $1.&amp;#039;&lt;br /&gt;
	.. &amp;#039; If you make a change to this template, please update the print version as well.&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;display-print-category&amp;#039;]&lt;br /&gt;
-- Set to true to enable output of cfg[&amp;#039;print-category&amp;#039;] if a /Print subpage exists.&lt;br /&gt;
-- This should be a boolean value (either true or false).&lt;br /&gt;
cfg[&amp;#039;display-print-category&amp;#039;] = true&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;print-category&amp;#039;]&lt;br /&gt;
-- Category to output if cfg[&amp;#039;display-print-category&amp;#039;] is set to true, and a /Print subpage exists.&lt;br /&gt;
cfg[&amp;#039;print-category&amp;#039;] = &amp;#039;Templates with print versions&amp;#039;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- HTML and CSS configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;main-div-id&amp;#039;]&lt;br /&gt;
-- The &amp;quot;id&amp;quot; attribute of the main HTML &amp;quot;div&amp;quot; tag.&lt;br /&gt;
cfg[&amp;#039;main-div-id&amp;#039;] = &amp;#039;template-documentation&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;main-div-classes&amp;#039;]&lt;br /&gt;
-- The CSS classes added to the main HTML &amp;quot;div&amp;quot; tag.&lt;br /&gt;
cfg[&amp;#039;main-div-classes&amp;#039;] = &amp;#039;template-documentation iezoomfix&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;start-box-linkclasses&amp;#039;]&lt;br /&gt;
-- The CSS classes used for the [view][edit][history] or [create] links in the start box.&lt;br /&gt;
cfg[&amp;#039;start-box-linkclasses&amp;#039;] = &amp;#039;mw-editsection-like plainlinks&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;start-box-link-id&amp;#039;]&lt;br /&gt;
-- The HTML &amp;quot;id&amp;quot; attribute for the links in the start box.&lt;br /&gt;
cfg[&amp;#039;start-box-link-id&amp;#039;] = &amp;#039;doc_editlinks&amp;#039;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- {{fmbox}} template configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;fmbox-id&amp;#039;]&lt;br /&gt;
-- The id sent to the &amp;quot;id&amp;quot; parameter of the {{fmbox}} template.&lt;br /&gt;
cfg[&amp;#039;fmbox-id&amp;#039;] = &amp;#039;documentation-meta-data&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;fmbox-style&amp;#039;]&lt;br /&gt;
-- The value sent to the style parameter of {{fmbox}}. --#ecfcf4&lt;br /&gt;
cfg[&amp;#039;fmbox-style&amp;#039;] = &amp;#039;background-color: inherit&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;fmbox-textstyle&amp;#039;]&lt;br /&gt;
-- The value sent to the &amp;quot;textstyle parameter of {{fmbox}}.&lt;br /&gt;
cfg[&amp;#039;fmbox-textstyle&amp;#039;] = &amp;#039;font-style: italic&amp;#039;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Tracking category configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;display-strange-usage-category&amp;#039;]&lt;br /&gt;
-- Set to true to enable output of cfg[&amp;#039;strange-usage-category&amp;#039;] if the module is used on a /doc subpage&lt;br /&gt;
-- or a /testcases subpage. This should be a boolean value (either true or false).&lt;br /&gt;
cfg[&amp;#039;display-strange-usage-category&amp;#039;] = true&lt;br /&gt;
&lt;br /&gt;
-- cfg[&amp;#039;strange-usage-category&amp;#039;]&lt;br /&gt;
-- Category to output if cfg[&amp;#039;display-strange-usage-category&amp;#039;] is set to true and the module is used on a&lt;br /&gt;
-- /doc subpage or a /testcases subpage.&lt;br /&gt;
cfg[&amp;#039;strange-usage-category&amp;#039;] = &amp;#039;Blazblue Wiki pages with strange ((documentation)) usage&amp;#039;&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- End configuration&lt;br /&gt;
--&lt;br /&gt;
-- Don&amp;#039;t edit anything below this line.&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
return cfg&lt;/div&gt;</description>
			<pubDate>Mon, 20 Jul 2026 23:19:14 GMT</pubDate>
			<dc:creator>Marie</dc:creator>
			<comments>https://regio.w.kmwc.org/w/Module_talk:Documentation/config</comments>
		</item>
		<item>
			<title>Module:HtmlBuilder</title>
			<link>https://regio.w.kmwc.org/index.php?title=Module:HtmlBuilder&amp;diff=26&amp;oldid=0</link>
			<guid isPermaLink="false">https://regio.w.kmwc.org/index.php?title=Module:HtmlBuilder&amp;diff=26&amp;oldid=0</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Marie&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new mw-userlink&quot; title=&quot;User:Marie (page does not exist)&quot;&gt;&lt;bdi&gt;Marie&lt;/bdi&gt;&lt;/a&gt; imported &lt;a href=&quot;/w/Module:HtmlBuilder&quot; title=&quot;Module:HtmlBuilder&quot;&gt;Module:HtmlBuilder&lt;/a&gt; by file upload (1 revision)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- Module for building complex HTML (e.g. infoboxes, navboxes) using a fluent interface.&lt;br /&gt;
&lt;br /&gt;
local HtmlBuilder = {}&lt;br /&gt;
&lt;br /&gt;
local metatable = {}&lt;br /&gt;
&lt;br /&gt;
metatable.__index = function(t, key)&lt;br /&gt;
    local ret = rawget(t, key)&lt;br /&gt;
    if ret then&lt;br /&gt;
        return ret&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    ret = metatable[key]&lt;br /&gt;
    if type(ret) == &amp;#039;function&amp;#039; then&lt;br /&gt;
        return function(...) &lt;br /&gt;
            return ret(t, ...) &lt;br /&gt;
        end &lt;br /&gt;
    else&lt;br /&gt;
        return ret&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
metatable.__tostring = function(t)&lt;br /&gt;
    local ret = {}&lt;br /&gt;
    t._build(ret)&lt;br /&gt;
    return table.concat(ret)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
metatable._build = function(t, ret)&lt;br /&gt;
    if t.tagName then &lt;br /&gt;
        table.insert(ret, &amp;#039;&amp;lt;&amp;#039; .. t.tagName)&lt;br /&gt;
        for i, attr in ipairs(t.attributes) do&lt;br /&gt;
            table.insert(ret, &amp;#039; &amp;#039; .. attr.name .. &amp;#039;=&amp;quot;&amp;#039; .. attr.val .. &amp;#039;&amp;quot;&amp;#039;) &lt;br /&gt;
        end&lt;br /&gt;
        if #t.styles &amp;gt; 0 then&lt;br /&gt;
            table.insert(ret, &amp;#039; style=&amp;quot;&amp;#039;)&lt;br /&gt;
            for i, prop in ipairs(t.styles) do&lt;br /&gt;
                if type(prop) == &amp;#039;string&amp;#039; then -- added with cssText()&lt;br /&gt;
                    table.insert(ret, prop .. &amp;#039;;&amp;#039;)&lt;br /&gt;
                else -- added with css()&lt;br /&gt;
                    table.insert(ret, prop.name .. &amp;#039;:&amp;#039; .. prop.val .. &amp;#039;;&amp;#039;)&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
            table.insert(ret, &amp;#039;&amp;quot;&amp;#039;)&lt;br /&gt;
        end&lt;br /&gt;
        if t.selfClosing then&lt;br /&gt;
            table.insert(ret, &amp;#039; /&amp;#039;)&lt;br /&gt;
        end&lt;br /&gt;
        table.insert(ret, &amp;#039;&amp;gt;&amp;#039;) &lt;br /&gt;
    end&lt;br /&gt;
    for i, node in ipairs(t.nodes) do&lt;br /&gt;
        if node then&lt;br /&gt;
            if type(node) == &amp;#039;table&amp;#039; then&lt;br /&gt;
                node._build(ret)&lt;br /&gt;
            else&lt;br /&gt;
                table.insert(ret, tostring(node))&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    if t.tagName and not t.unclosed and not t.selfClosing then&lt;br /&gt;
        table.insert(ret, &amp;#039;&amp;lt;/&amp;#039; .. t.tagName .. &amp;#039;&amp;gt;&amp;#039;)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
metatable.node = function(t, builder)&lt;br /&gt;
    if builder then&lt;br /&gt;
        table.insert(t.nodes, builder)&lt;br /&gt;
    end&lt;br /&gt;
    return t&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
metatable.wikitext = function(t, ...) &lt;br /&gt;
    local vals = {...}&lt;br /&gt;
    for i = 1, #vals do&lt;br /&gt;
        if vals[i] then&lt;br /&gt;
            table.insert(t.nodes, vals[i])&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    return t&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
metatable.newline = function(t)&lt;br /&gt;
    table.insert(t.nodes, &amp;#039;\n&amp;#039;)&lt;br /&gt;
    return t&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
metatable.tag = function(t, tagName, args)&lt;br /&gt;
    args = args or {}&lt;br /&gt;
    args.parent = t&lt;br /&gt;
    local builder = HtmlBuilder.create(tagName, args)&lt;br /&gt;
    table.insert(t.nodes, builder)&lt;br /&gt;
    return builder&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getAttr(t, name)&lt;br /&gt;
    for i, attr in ipairs(t.attributes) do&lt;br /&gt;
        if attr.name == name then&lt;br /&gt;
            return attr&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
metatable.attr = function(t, name, val)&lt;br /&gt;
    if type(val) == &amp;#039;string&amp;#039; or type(val) == &amp;#039;number&amp;#039; then&lt;br /&gt;
        -- if caller sets the style attribute explicitly, then replace all styles previously added with css() and cssText()&lt;br /&gt;
        if name == &amp;#039;style&amp;#039; then&lt;br /&gt;
            t.styles = {val}&lt;br /&gt;
            return t&lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        local attr = getAttr(t, name)&lt;br /&gt;
        if attr then&lt;br /&gt;
            attr.val = val&lt;br /&gt;
        else&lt;br /&gt;
            table.insert(t.attributes, {name = name, val = val})&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    return t&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
metatable.addClass = function(t, class)&lt;br /&gt;
    if class then&lt;br /&gt;
        local attr = getAttr(t, &amp;#039;class&amp;#039;)&lt;br /&gt;
        if attr then&lt;br /&gt;
            attr.val = attr.val .. &amp;#039; &amp;#039; .. class&lt;br /&gt;
        else&lt;br /&gt;
            t.attr(&amp;#039;class&amp;#039;, class)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    return t&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
metatable.css = function(t, name, val)&lt;br /&gt;
    if type(val) == &amp;#039;string&amp;#039; or type(val) == &amp;#039;number&amp;#039; then&lt;br /&gt;
        for i, prop in ipairs(t.styles) do&lt;br /&gt;
            if prop.name == name then&lt;br /&gt;
                prop.val = val&lt;br /&gt;
                return t&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        table.insert(t.styles, {name = name, val = val})&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    return t&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
metatable.cssText = function(t, css)&lt;br /&gt;
    if css then&lt;br /&gt;
        table.insert(t.styles, css)&lt;br /&gt;
    end&lt;br /&gt;
    return t&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
metatable.done = function(t)&lt;br /&gt;
    return t.parent or t&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
metatable.allDone = function(t)&lt;br /&gt;
    while t.parent do&lt;br /&gt;
        t = t.parent&lt;br /&gt;
    end&lt;br /&gt;
    return t&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function HtmlBuilder.create(tagName, args)&lt;br /&gt;
    args = args or {}&lt;br /&gt;
    local builder = {}&lt;br /&gt;
    setmetatable(builder, metatable)&lt;br /&gt;
    builder.nodes = {}&lt;br /&gt;
    builder.attributes = {}&lt;br /&gt;
    builder.styles = {}&lt;br /&gt;
    builder.tagName = tagName&lt;br /&gt;
    builder.parent = args.parent&lt;br /&gt;
    builder.unclosed = args.unclosed or false&lt;br /&gt;
    builder.selfClosing = args.selfClosing or false&lt;br /&gt;
    return builder&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return HtmlBuilder&lt;/div&gt;</description>
			<pubDate>Mon, 20 Jul 2026 23:19:14 GMT</pubDate>
			<dc:creator>Marie</dc:creator>
			<comments>https://regio.w.kmwc.org/w/Module_talk:HtmlBuilder</comments>
		</item>
		<item>
			<title>Module:Message box</title>
			<link>https://regio.w.kmwc.org/index.php?title=Module:Message_box&amp;diff=28&amp;oldid=0</link>
			<guid isPermaLink="false">https://regio.w.kmwc.org/index.php?title=Module:Message_box&amp;diff=28&amp;oldid=0</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Marie&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new mw-userlink&quot; title=&quot;User:Marie (page does not exist)&quot;&gt;&lt;bdi&gt;Marie&lt;/bdi&gt;&lt;/a&gt; imported &lt;a href=&quot;/w/Module:Message_box&quot; title=&quot;Module:Message box&quot;&gt;Module:Message box&lt;/a&gt; by file upload (1 revision)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- This is a meta-module for producing message box templates, including&lt;br /&gt;
-- {{mbox}}, {{ambox}}, {{imbox}}, {{tmbox}}, {{ombox}}, {{cmbox}} and {{fmbox}}.&lt;br /&gt;
&lt;br /&gt;
-- Require necessary modules.&lt;br /&gt;
local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
local htmlBuilder = require(&amp;#039;Module:HtmlBuilder&amp;#039;)&lt;br /&gt;
local categoryHandler = require(&amp;#039;Module:Category handler&amp;#039;).main&lt;br /&gt;
local yesno = require(&amp;#039;Module:Yesno&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
-- Load the configuration page.&lt;br /&gt;
local cfgTables = mw.loadData(&amp;#039;Module:Message box/configuration&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
-- Get a language object for formatDate and ucfirst.&lt;br /&gt;
local lang = mw.language.getContentLanguage()&lt;br /&gt;
&lt;br /&gt;
-- Set aliases for often-used functions to reduce table lookups.&lt;br /&gt;
local format = mw.ustring.format&lt;br /&gt;
local tinsert = table.insert&lt;br /&gt;
local tconcat = table.concat&lt;br /&gt;
local trim = mw.text.trim&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Helper functions&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function getTitleObject(page, ...)&lt;br /&gt;
	if type(page) == &amp;#039;string&amp;#039; then&lt;br /&gt;
		-- Get the title object, passing the function through pcall &lt;br /&gt;
		-- in case we are over the expensive function count limit.&lt;br /&gt;
		local success, title = pcall(mw.title.new, page, ...)&lt;br /&gt;
		if success then&lt;br /&gt;
			return title&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function union(t1, t2)&lt;br /&gt;
	-- Returns the union of two arrays.&lt;br /&gt;
	local vals = {}&lt;br /&gt;
	for i, v in ipairs(t1) do&lt;br /&gt;
		vals[v] = true&lt;br /&gt;
	end&lt;br /&gt;
	for i, v in ipairs(t2) do&lt;br /&gt;
		vals[v] = true&lt;br /&gt;
	end&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	for k in pairs(vals) do&lt;br /&gt;
		tinsert(ret, k)&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(ret)&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getArgNums(args, prefix)&lt;br /&gt;
	local nums = {}&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		local num = mw.ustring.match(tostring(k), &amp;#039;^&amp;#039; .. prefix .. &amp;#039;([1-9]%d*)$&amp;#039;)&lt;br /&gt;
		if num then&lt;br /&gt;
			tinsert(nums, tonumber(num))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(nums)&lt;br /&gt;
	return nums&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Box class definition&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local box = {}&lt;br /&gt;
box.__index = box&lt;br /&gt;
&lt;br /&gt;
function box.new()&lt;br /&gt;
	local obj = {}&lt;br /&gt;
	setmetatable(obj, box)&lt;br /&gt;
	return obj&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function box.getNamespaceId(ns)&lt;br /&gt;
	if not ns then return end&lt;br /&gt;
	if type(ns) == &amp;#039;string&amp;#039; then&lt;br /&gt;
		ns = lang:ucfirst(mw.ustring.lower(ns))&lt;br /&gt;
		if ns == &amp;#039;Main&amp;#039; then&lt;br /&gt;
			ns = 0&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local nsTable = mw.site.namespaces[ns]&lt;br /&gt;
	if nsTable then&lt;br /&gt;
		return nsTable.id&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function box.getMboxType(nsid)&lt;br /&gt;
	-- Gets the mbox type from a namespace number.&lt;br /&gt;
	if nsid == 0 then&lt;br /&gt;
		return &amp;#039;ambox&amp;#039; -- main namespace&lt;br /&gt;
	elseif nsid == 6 then&lt;br /&gt;
		return &amp;#039;imbox&amp;#039; -- file namespace&lt;br /&gt;
	elseif nsid == 14 then&lt;br /&gt;
		return &amp;#039;cmbox&amp;#039; -- category namespace&lt;br /&gt;
	else&lt;br /&gt;
		local nsTable = mw.site.namespaces[nsid]&lt;br /&gt;
		if nsTable and nsTable.isTalk then&lt;br /&gt;
			return &amp;#039;tmbox&amp;#039; -- any talk namespace&lt;br /&gt;
		else&lt;br /&gt;
			return &amp;#039;ombox&amp;#039; -- other namespaces or invalid input&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function box:addCat(ns, cat, sort)&lt;br /&gt;
	if type(cat) ~= &amp;#039;string&amp;#039; then return end&lt;br /&gt;
	local nsVals = {&amp;#039;main&amp;#039;, &amp;#039;template&amp;#039;, &amp;#039;all&amp;#039;}&lt;br /&gt;
	local tname&lt;br /&gt;
	for i, val in ipairs(nsVals) do&lt;br /&gt;
		if ns == val then&lt;br /&gt;
			tname = ns .. &amp;#039;Cats&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if not tname then&lt;br /&gt;
		for i, val in ipairs(nsVals) do&lt;br /&gt;
			nsVals[i] = format(&amp;#039;&amp;quot;%s&amp;quot;&amp;#039;, val)&lt;br /&gt;
		end&lt;br /&gt;
		error(&lt;br /&gt;
			&amp;#039;invalid ns parameter passed to box:addCat; valid values are &amp;#039;&lt;br /&gt;
			.. mw.text.listToText(nsVals, nil, &amp;#039; or &amp;#039;)&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	self[tname] = self[tname] or {}&lt;br /&gt;
	if type(sort) == &amp;#039;string&amp;#039; then&lt;br /&gt;
		tinsert(self[tname], format(&amp;#039;[[Category:%s|%s]]&amp;#039;, cat, sort))&lt;br /&gt;
	else&lt;br /&gt;
		tinsert(self[tname], format(&amp;#039;[[Category:%s]]&amp;#039;, cat))&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function box:addClass(class)&lt;br /&gt;
	if type(class) ~= &amp;#039;string&amp;#039; then return end&lt;br /&gt;
	self.classes = self.classes or {}&lt;br /&gt;
	tinsert(self.classes, class)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function box:addAttr(attr, val)&lt;br /&gt;
	if type(attr) ~= &amp;#039;string&amp;#039; or type(val) ~= &amp;#039;string&amp;#039; then return end&lt;br /&gt;
	self.attrs = self.attrs or {}&lt;br /&gt;
	tinsert(self.attrs, attr)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function box:setTitle(args)&lt;br /&gt;
	-- Get the title object and the namespace.&lt;br /&gt;
	self.pageTitle = getTitleObject(args.page ~= &amp;#039;&amp;#039; and args.page)&lt;br /&gt;
	self.title = self.pageTitle or mw.title.getCurrentTitle()&lt;br /&gt;
	self.demospace = args.demospace ~= &amp;#039;&amp;#039; and args.demospace or nil&lt;br /&gt;
	self.nsid = box.getNamespaceId(self.demospace) or self.title.namespace&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function box:getConfig(boxType)&lt;br /&gt;
	-- Get the box config data from the data page.&lt;br /&gt;
	if boxType == &amp;#039;mbox&amp;#039; then&lt;br /&gt;
		boxType = box.getMboxType(self.nsid)&lt;br /&gt;
	end&lt;br /&gt;
	local cfg = cfgTables[boxType]&lt;br /&gt;
	if not cfg then&lt;br /&gt;
		local boxTypes = {}&lt;br /&gt;
		for k, v in pairs(dataTables) do&lt;br /&gt;
			tinsert(boxTypes, format(&amp;#039;&amp;quot;%s&amp;quot;&amp;#039;, k))&lt;br /&gt;
		end&lt;br /&gt;
		tinsert(boxTypes, &amp;#039;&amp;quot;mbox&amp;quot;&amp;#039;)&lt;br /&gt;
		error(format(&lt;br /&gt;
			&amp;#039;invalid message box type &amp;quot;%s&amp;quot;; valid types are %s&amp;#039;,&lt;br /&gt;
			tostring(boxType),&lt;br /&gt;
			mw.text.listToText(boxTypes)&lt;br /&gt;
		), 2)&lt;br /&gt;
	end&lt;br /&gt;
	return cfg&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function box:removeBlankArgs(cfg, args)&lt;br /&gt;
	-- Only allow blank arguments for the parameter names listed in&lt;br /&gt;
	-- cfg.allowBlankParams.&lt;br /&gt;
	local newArgs = {}&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		if v ~= &amp;#039;&amp;#039; then&lt;br /&gt;
			newArgs[k] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	for i, param in ipairs(cfg.allowBlankParams or {}) do&lt;br /&gt;
		newArgs[param] = args[param]&lt;br /&gt;
	end&lt;br /&gt;
	return newArgs&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function box:setBoxParameters(cfg, args)&lt;br /&gt;
	-- Get type data.&lt;br /&gt;
	self.type = args.type&lt;br /&gt;
	local typeData = cfg.types[self.type]&lt;br /&gt;
	self.invalidTypeError = cfg.showInvalidTypeError&lt;br /&gt;
		and self.type&lt;br /&gt;
		and not typeData&lt;br /&gt;
		and true&lt;br /&gt;
		or false&lt;br /&gt;
	typeData = typeData or cfg.types[cfg.default]&lt;br /&gt;
	self.typeClass = typeData.class&lt;br /&gt;
	self.typeImage = typeData.image&lt;br /&gt;
&lt;br /&gt;
	-- Find if the box has been wrongly substituted.&lt;br /&gt;
	if cfg.substCheck and args.subst == &amp;#039;SUBST&amp;#039; then&lt;br /&gt;
		self.isSubstituted = true&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Find whether we are using a small message box.&lt;br /&gt;
	if cfg.allowSmall and (&lt;br /&gt;
		cfg.smallParam and args.small == cfg.smallParam&lt;br /&gt;
		or not cfg.smallParam and yesno(args.small)&lt;br /&gt;
	)&lt;br /&gt;
	then&lt;br /&gt;
		self.isSmall = true&lt;br /&gt;
	else&lt;br /&gt;
		self.isSmall = false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add attributes, classes and styles.&lt;br /&gt;
	if cfg.allowId then&lt;br /&gt;
		self.id = args.id&lt;br /&gt;
	end&lt;br /&gt;
	self:addClass(&lt;br /&gt;
		cfg.usePlainlinksParam and yesno(args.plainlinks or true) and &amp;#039;plainlinks&amp;#039;&lt;br /&gt;
	)&lt;br /&gt;
	for _, class in ipairs(cfg.classes or {}) do&lt;br /&gt;
		self:addClass(class)&lt;br /&gt;
	end&lt;br /&gt;
	if self.isSmall then&lt;br /&gt;
		self:addClass(cfg.smallClass or &amp;#039;mbox-small&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	self:addClass(self.typeClass)&lt;br /&gt;
	self:addClass(args.class)&lt;br /&gt;
	self.style = args.style&lt;br /&gt;
	self.attrs = args.attrs&lt;br /&gt;
&lt;br /&gt;
	-- Set text style.&lt;br /&gt;
	self.textstyle = args.textstyle&lt;br /&gt;
&lt;br /&gt;
	-- Find if we are on the template page or not. This functionality is only&lt;br /&gt;
	-- used if useCollapsibleTextFields is set, or if both cfg.templateCategory&lt;br /&gt;
	-- and cfg.templateCategoryRequireName are set.&lt;br /&gt;
	self.useCollapsibleTextFields = cfg.useCollapsibleTextFields&lt;br /&gt;
	if self.useCollapsibleTextFields&lt;br /&gt;
		or cfg.templateCategory&lt;br /&gt;
		and cfg.templateCategoryRequireName&lt;br /&gt;
	then&lt;br /&gt;
		self.name = args.name&lt;br /&gt;
		if self.name then&lt;br /&gt;
			local templateName = mw.ustring.match(&lt;br /&gt;
				self.name,&lt;br /&gt;
				&amp;#039;^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$&amp;#039;&lt;br /&gt;
			) or self.name&lt;br /&gt;
			templateName = &amp;#039;Template:&amp;#039; .. templateName&lt;br /&gt;
			self.templateTitle = getTitleObject(templateName)&lt;br /&gt;
		end&lt;br /&gt;
		self.isTemplatePage = self.templateTitle&lt;br /&gt;
			and mw.title.equals(self.title, self.templateTitle)&lt;br /&gt;
			or false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Process data for collapsible text fields. At the moment these are only&lt;br /&gt;
	-- used in {{ambox}}.&lt;br /&gt;
	if self.useCollapsibleTextFields then&lt;br /&gt;
		-- Get the self.issue value.&lt;br /&gt;
		if self.isSmall and args.smalltext then&lt;br /&gt;
			self.issue = args.smalltext&lt;br /&gt;
		else&lt;br /&gt;
			local sect&lt;br /&gt;
			if args.sect == &amp;#039;&amp;#039; then&lt;br /&gt;
				sect = &amp;#039;This &amp;#039; .. (cfg.sectionDefault or &amp;#039;page&amp;#039;)&lt;br /&gt;
			elseif type(args.sect) == &amp;#039;string&amp;#039; then&lt;br /&gt;
				sect = &amp;#039;This &amp;#039; .. args.sect&lt;br /&gt;
			end&lt;br /&gt;
			local issue = args.issue&lt;br /&gt;
			issue = type(issue) == &amp;#039;string&amp;#039; and issue ~= &amp;#039;&amp;#039; and issue or nil&lt;br /&gt;
			local text = args.text&lt;br /&gt;
			text = type(text) == &amp;#039;string&amp;#039; and text or nil&lt;br /&gt;
			local issues = {}&lt;br /&gt;
			tinsert(issues, sect)&lt;br /&gt;
			tinsert(issues, issue)&lt;br /&gt;
			tinsert(issues, text)&lt;br /&gt;
			self.issue = tconcat(issues, &amp;#039; &amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Get the self.talk value.&lt;br /&gt;
		local talk = args.talk&lt;br /&gt;
		-- Show talk links on the template page or template subpages if the talk&lt;br /&gt;
		-- parameter is blank.&lt;br /&gt;
		if talk == &amp;#039;&amp;#039;&lt;br /&gt;
			and self.templateTitle &lt;br /&gt;
			and (&lt;br /&gt;
				mw.title.equals(self.templateTitle, self.title)&lt;br /&gt;
				or self.title:isSubpageOf(self.templateTitle)&lt;br /&gt;
			)&lt;br /&gt;
		then&lt;br /&gt;
			talk = &amp;#039;#&amp;#039;&lt;br /&gt;
		elseif talk == &amp;#039;&amp;#039; then&lt;br /&gt;
			talk = nil&lt;br /&gt;
		end&lt;br /&gt;
		if talk then&lt;br /&gt;
			-- If the talk value is a talk page, make a link to that page. Else&lt;br /&gt;
			-- assume that it&amp;#039;s a section heading, and make a link to the talk&lt;br /&gt;
			-- page of the current page with that section heading.&lt;br /&gt;
			local talkTitle = getTitleObject(talk)&lt;br /&gt;
			local talkArgIsTalkPage = true&lt;br /&gt;
			if not talkTitle or not talkTitle.isTalkPage then&lt;br /&gt;
				talkArgIsTalkPage = false&lt;br /&gt;
				talkTitle = getTitleObject(&lt;br /&gt;
					self.title.text,&lt;br /&gt;
					mw.site.namespaces[self.title.namespace].talk.id&lt;br /&gt;
				)&lt;br /&gt;
			end&lt;br /&gt;
			if talkTitle and talkTitle.exists then&lt;br /&gt;
				local talkText = &amp;#039;Relevant discussion may be found on&amp;#039;&lt;br /&gt;
				if talkArgIsTalkPage then&lt;br /&gt;
					talkText = format(&lt;br /&gt;
						&amp;#039;%s [[%s|%s]].&amp;#039;,&lt;br /&gt;
						talkText,&lt;br /&gt;
						talk,&lt;br /&gt;
						talkTitle.prefixedText&lt;br /&gt;
					)&lt;br /&gt;
				else&lt;br /&gt;
					talkText = format(&lt;br /&gt;
						&amp;#039;%s the [[%s#%s|talk page]].&amp;#039;,&lt;br /&gt;
						talkText,&lt;br /&gt;
						talkTitle.prefixedText,&lt;br /&gt;
						talk&lt;br /&gt;
					)&lt;br /&gt;
				end&lt;br /&gt;
				self.talk = talkText&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Get other values.&lt;br /&gt;
		self.fix = args.fix ~= &amp;#039;&amp;#039; and args.fix or nil&lt;br /&gt;
		local date&lt;br /&gt;
		if args.date and args.date ~= &amp;#039;&amp;#039; then&lt;br /&gt;
			date = args.date&lt;br /&gt;
		elseif args.date == &amp;#039;&amp;#039; and self.isTemplatePage then&lt;br /&gt;
			date = lang:formatDate(&amp;#039;F Y&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
		if date then&lt;br /&gt;
			self.date = format(&amp;quot; &amp;lt;small&amp;gt;&amp;#039;&amp;#039;(%s)&amp;#039;&amp;#039;&amp;lt;/small&amp;gt;&amp;quot;, date)&lt;br /&gt;
		end&lt;br /&gt;
		self.info = args.info&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set the non-collapsible text field. At the moment this is used by all box&lt;br /&gt;
	-- types other than ambox, and also by ambox when small=yes.&lt;br /&gt;
	if self.isSmall then&lt;br /&gt;
		self.text = args.smalltext or args.text&lt;br /&gt;
	else&lt;br /&gt;
		self.text = args.text&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set the below row.&lt;br /&gt;
	self.below = cfg.below and args.below&lt;br /&gt;
&lt;br /&gt;
	-- General image settings.&lt;br /&gt;
	self.imageCellDiv = not self.isSmall and cfg.imageCellDiv and true or false&lt;br /&gt;
	self.imageEmptyCell = cfg.imageEmptyCell&lt;br /&gt;
	if cfg.imageEmptyCellStyle then&lt;br /&gt;
		self.imageEmptyCellStyle = &amp;#039;border:none;padding:0px;width:1px&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Left image settings.&lt;br /&gt;
	local imageLeft = self.isSmall and args.smallimage or args.image&lt;br /&gt;
	if cfg.imageCheckBlank and imageLeft ~= &amp;#039;blank&amp;#039; and imageLeft ~= &amp;#039;none&amp;#039;&lt;br /&gt;
		or not cfg.imageCheckBlank and imageLeft ~= &amp;#039;none&amp;#039;&lt;br /&gt;
	then&lt;br /&gt;
		self.imageLeft = imageLeft&lt;br /&gt;
		if not imageLeft then&lt;br /&gt;
			local imageSize = self.isSmall&lt;br /&gt;
				and (cfg.imageSmallSize or &amp;#039;30x30px&amp;#039;)&lt;br /&gt;
				or &amp;#039;40x40px&amp;#039;&lt;br /&gt;
			self.imageLeft = format(&amp;#039;[[File:%s|%s|link=|alt=]]&amp;#039;, self.typeImage&lt;br /&gt;
				or &amp;#039;Imbox notice.svg&amp;#039;, imageSize)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Right image settings.&lt;br /&gt;
	local imageRight = self.isSmall and args.smallimageright or args.imageright&lt;br /&gt;
	if not (cfg.imageRightNone and imageRight == &amp;#039;none&amp;#039;) then&lt;br /&gt;
		self.imageRight = imageRight&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add mainspace categories. At the moment these are only used in {{ambox}}.&lt;br /&gt;
	if cfg.allowMainspaceCategories then&lt;br /&gt;
		if args.cat then&lt;br /&gt;
			args.cat1 = args.cat&lt;br /&gt;
		end&lt;br /&gt;
		self.catNums = getArgNums(args, &amp;#039;cat&amp;#039;)&lt;br /&gt;
		if args.category then&lt;br /&gt;
			args.category1 = args.category&lt;br /&gt;
		end&lt;br /&gt;
		self.categoryNums = getArgNums(args, &amp;#039;category&amp;#039;)&lt;br /&gt;
		if args.all then&lt;br /&gt;
			args.all1 = args.all&lt;br /&gt;
		end&lt;br /&gt;
		self.allNums = getArgNums(args, &amp;#039;all&amp;#039;)&lt;br /&gt;
		self.categoryParamNums = union(self.catNums, self.categoryNums)&lt;br /&gt;
		self.categoryParamNums = union(self.categoryParamNums, self.allNums)&lt;br /&gt;
		-- The following is roughly equivalent to the old {{Ambox/category}}.&lt;br /&gt;
		local date = args.date&lt;br /&gt;
		date = type(date) == &amp;#039;string&amp;#039; and date&lt;br /&gt;
		local preposition = &amp;#039;from&amp;#039;&lt;br /&gt;
		for _, num in ipairs(self.categoryParamNums) do&lt;br /&gt;
			local mainCat = args[&amp;#039;cat&amp;#039; .. tostring(num)]&lt;br /&gt;
				or args[&amp;#039;category&amp;#039; .. tostring(num)]&lt;br /&gt;
			local allCat = args[&amp;#039;all&amp;#039; .. tostring(num)]&lt;br /&gt;
			mainCat = type(mainCat) == &amp;#039;string&amp;#039; and mainCat&lt;br /&gt;
			allCat = type(allCat) == &amp;#039;string&amp;#039; and allCat&lt;br /&gt;
			if mainCat and date and date ~= &amp;#039;&amp;#039; then&lt;br /&gt;
				local catTitle = format(&amp;#039;%s %s %s&amp;#039;, mainCat, preposition, date)&lt;br /&gt;
				self:addCat(&amp;#039;main&amp;#039;, catTitle)&lt;br /&gt;
				catTitle = getTitleObject(&amp;#039;Category:&amp;#039; .. catTitle)&lt;br /&gt;
				if not catTitle or not catTitle.exists then&lt;br /&gt;
					self:addCat(&lt;br /&gt;
						&amp;#039;main&amp;#039;,&lt;br /&gt;
						&amp;#039;Articles with invalid date parameter in template&amp;#039;&lt;br /&gt;
					)&lt;br /&gt;
				end&lt;br /&gt;
			elseif mainCat and (not date or date == &amp;#039;&amp;#039;) then&lt;br /&gt;
				self:addCat(&amp;#039;main&amp;#039;, mainCat)&lt;br /&gt;
			end&lt;br /&gt;
			if allCat then&lt;br /&gt;
				self:addCat(&amp;#039;main&amp;#039;, allCat)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add template-namespace categories.&lt;br /&gt;
	if cfg.templateCategory then&lt;br /&gt;
		if cfg.templateCategoryRequireName then&lt;br /&gt;
			if self.isTemplatePage then&lt;br /&gt;
				self:addCat(&amp;#039;template&amp;#039;, cfg.templateCategory)&lt;br /&gt;
			end&lt;br /&gt;
		elseif not self.title.isSubpage then&lt;br /&gt;
			self:addCat(&amp;#039;template&amp;#039;, cfg.templateCategory)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add template error category.&lt;br /&gt;
	if cfg.templateErrorCategory then&lt;br /&gt;
		local templateErrorCategory = cfg.templateErrorCategory&lt;br /&gt;
		local templateCat, templateSort&lt;br /&gt;
		if not self.name and not self.title.isSubpage then&lt;br /&gt;
			templateCat = templateErrorCategory&lt;br /&gt;
		elseif self.isTemplatePage then&lt;br /&gt;
			local paramsToCheck = cfg.templateErrorParamsToCheck or {}&lt;br /&gt;
			local count = 0&lt;br /&gt;
			for i, param in ipairs(paramsToCheck) do&lt;br /&gt;
				if not args[param] then&lt;br /&gt;
					count = count + 1&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if count &amp;gt; 0 then&lt;br /&gt;
				templateCat = templateErrorCategory&lt;br /&gt;
				templateSort = tostring(count)&lt;br /&gt;
			end&lt;br /&gt;
			if self.categoryNums and #self.categoryNums &amp;gt; 0 then&lt;br /&gt;
				templateCat = templateErrorCategory&lt;br /&gt;
				templateSort = &amp;#039;C&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		self:addCat(&amp;#039;template&amp;#039;, templateCat, templateSort)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Categories for all namespaces.&lt;br /&gt;
	if self.invalidTypeError then&lt;br /&gt;
		local allSort = (self.nsid == 0 and &amp;#039;Main:&amp;#039; or &amp;#039;&amp;#039;) .. self.title.prefixedText&lt;br /&gt;
		self:addCat(&amp;#039;all&amp;#039;, &amp;#039;Wikipedia message box parameter needs fixing&amp;#039;, allSort)&lt;br /&gt;
	end&lt;br /&gt;
	if self.isSubstituted then&lt;br /&gt;
		self:addCat(&amp;#039;all&amp;#039;, &amp;#039;Pages with incorrectly substituted templates&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Convert category tables to strings and pass them through&lt;br /&gt;
	-- [[Module:Category handler]].&lt;br /&gt;
	self.categories = categoryHandler{&lt;br /&gt;
		main = tconcat(self.mainCats or {}),&lt;br /&gt;
		template = tconcat(self.templateCats or {}),&lt;br /&gt;
		all = tconcat(self.allCats or {}),&lt;br /&gt;
		nocat = args.nocat,&lt;br /&gt;
		demospace = self.demospace,&lt;br /&gt;
		page = self.pageTitle and self.pageTitle.prefixedText or nil&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function box:export()&lt;br /&gt;
	local root = htmlBuilder.create()&lt;br /&gt;
&lt;br /&gt;
	-- Add the subst check error.&lt;br /&gt;
	if self.isSubstituted and self.name then&lt;br /&gt;
		root&lt;br /&gt;
			.tag(&amp;#039;b&amp;#039;)&lt;br /&gt;
				.addClass(&amp;#039;error&amp;#039;)&lt;br /&gt;
				.wikitext(format(&lt;br /&gt;
					&amp;#039;Template &amp;lt;code&amp;gt;%s[[Template:%s|%s]]%s&amp;lt;/code&amp;gt; has been incorrectly substituted.&amp;#039;,&lt;br /&gt;
					mw.text.nowiki(&amp;#039;{{&amp;#039;), self.name, self.name, mw.text.nowiki(&amp;#039;}}&amp;#039;)&lt;br /&gt;
				))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Create the box table.&lt;br /&gt;
	local boxTable = root.tag(&amp;#039;table&amp;#039;)&lt;br /&gt;
	boxTable&lt;br /&gt;
		.attr(&amp;#039;id&amp;#039;, self.id)&lt;br /&gt;
	for i, class in ipairs(self.classes or {}) do&lt;br /&gt;
		boxTable&lt;br /&gt;
			.addClass(class)&lt;br /&gt;
	end&lt;br /&gt;
	boxTable&lt;br /&gt;
		.cssText(self.style)&lt;br /&gt;
		.attr(&amp;#039;role&amp;#039;, &amp;#039;presentation&amp;#039;)&lt;br /&gt;
	for attr, val in pairs(self.attrs or {}) do&lt;br /&gt;
		boxTable&lt;br /&gt;
			.attr(attr, val)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add the left-hand image.&lt;br /&gt;
	local row = boxTable.tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
	if self.imageLeft then&lt;br /&gt;
		local imageLeftCell = row.tag(&amp;#039;td&amp;#039;).addClass(&amp;#039;mbox-image&amp;#039;)&lt;br /&gt;
		if self.imageCellDiv then&lt;br /&gt;
			-- If we are using a div, redefine imageLeftCell so that the image&lt;br /&gt;
			-- is inside it. Divs use style=&amp;quot;width: 52px;&amp;quot;, which limits the&lt;br /&gt;
			-- image width to 52px. If any images in a div are wider than that,&lt;br /&gt;
			-- they may overlap with the text or cause other display problems.&lt;br /&gt;
			imageLeftCell = imageLeftCell.tag(&amp;#039;div&amp;#039;).css(&amp;#039;width&amp;#039;, &amp;#039;52px&amp;#039;) &lt;br /&gt;
		end&lt;br /&gt;
		imageLeftCell&lt;br /&gt;
			.wikitext(self.imageLeft)&lt;br /&gt;
	elseif self.imageEmptyCell then&lt;br /&gt;
		-- Some message boxes define an empty cell if no image is specified, and&lt;br /&gt;
		-- some don&amp;#039;t. The old template code in templates where empty cells are&lt;br /&gt;
		-- specified gives the following hint: &amp;quot;No image. Cell with some width&lt;br /&gt;
		-- or padding necessary for text cell to have 100% width.&amp;quot;&lt;br /&gt;
		row.tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
			.addClass(&amp;#039;mbox-empty-cell&amp;#039;) &lt;br /&gt;
			.cssText(self.imageEmptyCellStyle)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add the text.&lt;br /&gt;
	local textCell = row.tag(&amp;#039;td&amp;#039;).addClass(&amp;#039;mbox-text&amp;#039;)&lt;br /&gt;
	if self.useCollapsibleTextFields then&lt;br /&gt;
		-- The message box uses advanced text parameters that allow things to be&lt;br /&gt;
		-- collapsible. At the moment, only ambox uses this.&lt;br /&gt;
		textCell&lt;br /&gt;
			.cssText(self.textstyle)&lt;br /&gt;
		local textCellSpan = textCell.tag(&amp;#039;span&amp;#039;)&lt;br /&gt;
		textCellSpan&lt;br /&gt;
			.addClass(&amp;#039;mbox-text-span&amp;#039;)&lt;br /&gt;
			.wikitext(self.issue)&lt;br /&gt;
		if not self.isSmall then&lt;br /&gt;
			textCellSpan&lt;br /&gt;
				.tag(&amp;#039;span&amp;#039;)&lt;br /&gt;
					.addClass(&amp;#039;hide-when-compact&amp;#039;)&lt;br /&gt;
					.wikitext(self.talk and &amp;#039; &amp;#039; .. self.talk)&lt;br /&gt;
					.wikitext(self.fix and &amp;#039; &amp;#039; .. self.fix)&lt;br /&gt;
		end&lt;br /&gt;
		textCellSpan&lt;br /&gt;
			.wikitext(self.date and &amp;#039; &amp;#039; .. self.date)&lt;br /&gt;
		if not self.isSmall then&lt;br /&gt;
			textCellSpan&lt;br /&gt;
				.tag(&amp;#039;span&amp;#039;)&lt;br /&gt;
				.addClass(&amp;#039;hide-when-compact&amp;#039;)&lt;br /&gt;
				.wikitext(self.info and &amp;#039; &amp;#039; .. self.info)&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		-- Default text formatting - anything goes.&lt;br /&gt;
		textCell&lt;br /&gt;
			.cssText(self.textstyle)&lt;br /&gt;
			.wikitext(self.text)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add the right-hand image.&lt;br /&gt;
	if self.imageRight then&lt;br /&gt;
		local imageRightCell = row.tag(&amp;#039;td&amp;#039;).addClass(&amp;#039;mbox-imageright&amp;#039;)&lt;br /&gt;
		if self.imageCellDiv then&lt;br /&gt;
			-- If we are using a div, redefine imageRightCell so that the image&lt;br /&gt;
			-- is inside it.&lt;br /&gt;
			imageRightCell = imageRightCell.tag(&amp;#039;div&amp;#039;).css(&amp;#039;width&amp;#039;, &amp;#039;52px&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
		imageRightCell&lt;br /&gt;
			.wikitext(self.imageRight)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add the below row.&lt;br /&gt;
	if self.below then&lt;br /&gt;
		boxTable.tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
			.tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
				.attr(&amp;#039;colspan&amp;#039;, self.imageRight and &amp;#039;3&amp;#039; or &amp;#039;2&amp;#039;)&lt;br /&gt;
				.addClass(&amp;#039;mbox-text&amp;#039;)&lt;br /&gt;
				.cssText(self.textstyle)&lt;br /&gt;
				.wikitext(self.below)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add error message for invalid type parameters.&lt;br /&gt;
	if self.invalidTypeError then&lt;br /&gt;
		root&lt;br /&gt;
			.tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
				.css(&amp;#039;text-align&amp;#039;, &amp;#039;center&amp;#039;)&lt;br /&gt;
				.wikitext(format(&lt;br /&gt;
					&amp;#039;This message box is using an invalid &amp;quot;type=%s&amp;quot; parameter and needs fixing.&amp;#039;,&lt;br /&gt;
					self.type or &amp;#039;&amp;#039;&lt;br /&gt;
				))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add categories.&lt;br /&gt;
	root&lt;br /&gt;
		.wikitext(self.categories)&lt;br /&gt;
&lt;br /&gt;
	return tostring(root)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function main(boxType, args)&lt;br /&gt;
	local outputBox = box.new()&lt;br /&gt;
	outputBox:setTitle(args)&lt;br /&gt;
	local cfg = outputBox:getConfig(boxType)&lt;br /&gt;
	args = outputBox:removeBlankArgs(cfg, args)&lt;br /&gt;
	outputBox:setBoxParameters(cfg, args)&lt;br /&gt;
	return outputBox:export()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeWrapper(boxType)&lt;br /&gt;
	return function (frame)&lt;br /&gt;
		local args = getArgs(frame, {trim = false, removeBlanks = false})&lt;br /&gt;
		return main(boxType, args)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local p = {&lt;br /&gt;
	main = main,&lt;br /&gt;
	mbox = makeWrapper(&amp;#039;mbox&amp;#039;)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
for boxType in pairs(cfgTables) do&lt;br /&gt;
	p[boxType] = makeWrapper(boxType)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</description>
			<pubDate>Mon, 20 Jul 2026 23:19:14 GMT</pubDate>
			<dc:creator>Marie</dc:creator>
			<comments>https://regio.w.kmwc.org/w/Module_talk:Message_box</comments>
		</item>
		<item>
			<title>Module:Message box/configuration</title>
			<link>https://regio.w.kmwc.org/index.php?title=Module:Message_box/configuration&amp;diff=30&amp;oldid=0</link>
			<guid isPermaLink="false">https://regio.w.kmwc.org/index.php?title=Module:Message_box/configuration&amp;diff=30&amp;oldid=0</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Marie&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new mw-userlink&quot; title=&quot;User:Marie (page does not exist)&quot;&gt;&lt;bdi&gt;Marie&lt;/bdi&gt;&lt;/a&gt; imported &lt;a href=&quot;/w/Module:Message_box/configuration&quot; title=&quot;Module:Message box/configuration&quot;&gt;Module:Message box/configuration&lt;/a&gt; by file upload (1 revision)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local ambox = {&lt;br /&gt;
	types = {&lt;br /&gt;
		speedy = {&lt;br /&gt;
			class = &amp;#039;ambox-speedy&amp;#039;,&lt;br /&gt;
			image = &amp;#039;Ambox speedy deletion.png&amp;#039;&lt;br /&gt;
		},&lt;br /&gt;
		delete = {&lt;br /&gt;
			class = &amp;#039;ambox-delete&amp;#039;,&lt;br /&gt;
			image = &amp;#039;Ambox deletion.png&amp;#039;&lt;br /&gt;
		},&lt;br /&gt;
		content = {&lt;br /&gt;
			class = &amp;#039;ambox-content&amp;#039;,&lt;br /&gt;
			image = &amp;#039;Ambox content.png&amp;#039;&lt;br /&gt;
		},&lt;br /&gt;
		style = {&lt;br /&gt;
			class = &amp;#039;ambox-style&amp;#039;,&lt;br /&gt;
			image = &amp;#039;Edit-clear.svg&amp;#039;&lt;br /&gt;
		},&lt;br /&gt;
		move = {&lt;br /&gt;
			class = &amp;#039;ambox-move&amp;#039;,&lt;br /&gt;
			image = &amp;#039;Ambox move.png&amp;#039;&lt;br /&gt;
		},&lt;br /&gt;
		protection = {&lt;br /&gt;
			class = &amp;#039;ambox-protection&amp;#039;,&lt;br /&gt;
			image = &amp;#039;Ambox protection.png&amp;#039;&lt;br /&gt;
		},&lt;br /&gt;
		notice = {&lt;br /&gt;
			class = &amp;#039;ambox-notice&amp;#039;,&lt;br /&gt;
			image = &amp;#039;Ambox notice.png&amp;#039;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	default                     = &amp;#039;notice&amp;#039;,&lt;br /&gt;
	allowBlankParams            = {&amp;#039;talk&amp;#039;, &amp;#039;sect&amp;#039;, &amp;#039;date&amp;#039;, &amp;#039;issue&amp;#039;, &amp;#039;fix&amp;#039;, &amp;#039;subst&amp;#039;, &amp;#039;hidden&amp;#039;},&lt;br /&gt;
	allowSmall                  = true,&lt;br /&gt;
	smallParam                  = &amp;#039;left&amp;#039;,&lt;br /&gt;
	smallClass                  = &amp;#039;mbox-small-left&amp;#039;,&lt;br /&gt;
	substCheck                  = true,&lt;br /&gt;
	classes                     = {&amp;#039;metadata&amp;#039;, &amp;#039;plainlinks&amp;#039;, &amp;#039;ambox&amp;#039;},&lt;br /&gt;
	imageEmptyCell              = true,&lt;br /&gt;
	imageCheckBlank             = true,&lt;br /&gt;
	imageSmallSize              = &amp;#039;20x20px&amp;#039;,&lt;br /&gt;
	imageCellDiv                = true,&lt;br /&gt;
	useCollapsibleTextFields    = true,&lt;br /&gt;
	imageRightNone              = true,&lt;br /&gt;
	sectionDefault              = &amp;#039;article&amp;#039;,&lt;br /&gt;
	allowMainspaceCategories    = true,&lt;br /&gt;
	templateCategory            = &amp;#039;Article message templates&amp;#039;,&lt;br /&gt;
        templateCategoryRequireName = true,&lt;br /&gt;
	templateErrorCategory       = &amp;#039;Article message templates with missing parameters&amp;#039;,&lt;br /&gt;
	templateErrorParamsToCheck  = {&amp;#039;issue&amp;#039;, &amp;#039;fix&amp;#039;, &amp;#039;subst&amp;#039;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local cmbox = {&lt;br /&gt;
	types = {&lt;br /&gt;
		speedy = {&lt;br /&gt;
			class = &amp;#039;cmbox-speedy&amp;#039;,&lt;br /&gt;
			image = &amp;#039;Cmbox deletion.png&amp;#039;&lt;br /&gt;
		},&lt;br /&gt;
		delete = {&lt;br /&gt;
			class = &amp;#039;cmbox-delete&amp;#039;,&lt;br /&gt;
			image = &amp;#039;Cmbox deletion.png&amp;#039;&lt;br /&gt;
		},&lt;br /&gt;
		content = {&lt;br /&gt;
			class = &amp;#039;cmbox-content&amp;#039;,&lt;br /&gt;
			image = &amp;#039;Cmbox content.png&amp;#039;&lt;br /&gt;
		},&lt;br /&gt;
		style = {&lt;br /&gt;
			class = &amp;#039;cmbox-style&amp;#039;,&lt;br /&gt;
			image = &amp;#039;Edit-clear.svg&amp;#039;&lt;br /&gt;
		},&lt;br /&gt;
		move = {&lt;br /&gt;
			class = &amp;#039;cmbox-move&amp;#039;,&lt;br /&gt;
			image = &amp;#039;Cmbox move.png&amp;#039;&lt;br /&gt;
		},&lt;br /&gt;
		protection = {&lt;br /&gt;
			class = &amp;#039;cmbox-protection&amp;#039;,&lt;br /&gt;
			image = &amp;#039;Cmbox protection.png&amp;#039;&lt;br /&gt;
		},&lt;br /&gt;
		notice = {&lt;br /&gt;
			class = &amp;#039;cmbox-notice&amp;#039;,&lt;br /&gt;
			image = &amp;#039;Cmbox notice.png&amp;#039;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	default              = &amp;#039;notice&amp;#039;,&lt;br /&gt;
	showInvalidTypeError = true,&lt;br /&gt;
	classes              = {&amp;#039;plainlinks&amp;#039;, &amp;#039;cmbox&amp;#039;},&lt;br /&gt;
	imageEmptyCell       = true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local fmbox = {&lt;br /&gt;
	types = {&lt;br /&gt;
		warning = {&lt;br /&gt;
			class = &amp;#039;fmbox-warning&amp;#039;,&lt;br /&gt;
			image = &amp;#039;Cmbox deletion.png&amp;#039;&lt;br /&gt;
		},&lt;br /&gt;
		editnotice = {&lt;br /&gt;
			class = &amp;#039;fmbox-editnotice&amp;#039;,&lt;br /&gt;
			image = &amp;#039;Imbox notice.svg&amp;#039;&lt;br /&gt;
		},&lt;br /&gt;
		system = {&lt;br /&gt;
			class = &amp;#039;fmbox-system&amp;#039;,&lt;br /&gt;
			image = &amp;#039;Imbox notice.svg&amp;#039;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	default              = &amp;#039;system&amp;#039;,&lt;br /&gt;
	showInvalidTypeError = true,&lt;br /&gt;
	allowId                = true,&lt;br /&gt;
	classes              = {&amp;#039;plainlinks&amp;#039;, &amp;#039;fmbox&amp;#039;},&lt;br /&gt;
	imageEmptyCell       = false,&lt;br /&gt;
	imageRightNone       = false&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local imbox = {&lt;br /&gt;
	types = {&lt;br /&gt;
		speedy = {&lt;br /&gt;
			class = &amp;#039;imbox-speedy&amp;#039;,&lt;br /&gt;
			image = &amp;#039;Imbox speedy deletion.png&amp;#039;&lt;br /&gt;
		},&lt;br /&gt;
		delete = {&lt;br /&gt;
			class = &amp;#039;imbox-delete&amp;#039;,&lt;br /&gt;
			image = &amp;#039;Imbox deletion.png&amp;#039;&lt;br /&gt;
		},&lt;br /&gt;
		content = {&lt;br /&gt;
			class = &amp;#039;imbox-content&amp;#039;,&lt;br /&gt;
			image = &amp;#039;Imbox content.svg&amp;#039;&lt;br /&gt;
		},&lt;br /&gt;
		style = {&lt;br /&gt;
			class = &amp;#039;imbox-style&amp;#039;,&lt;br /&gt;
			image = &amp;#039;Edit-clear.svg&amp;#039;&lt;br /&gt;
		},&lt;br /&gt;
		move = {&lt;br /&gt;
			class = &amp;#039;imbox-move&amp;#039;,&lt;br /&gt;
			image = &amp;#039;Imbox move.png&amp;#039;&lt;br /&gt;
		},&lt;br /&gt;
		protection = {&lt;br /&gt;
			class = &amp;#039;imbox-protection&amp;#039;,&lt;br /&gt;
			image = &amp;#039;Imbox protection.png&amp;#039;&lt;br /&gt;
		},&lt;br /&gt;
		license = {&lt;br /&gt;
			class = &amp;#039;imbox-license&amp;#039;,&lt;br /&gt;
			image = &amp;#039;Imbox license.png&amp;#039;&lt;br /&gt;
		},&lt;br /&gt;
		featured = {&lt;br /&gt;
			class = &amp;#039;imbox-featured&amp;#039;,&lt;br /&gt;
			image = &amp;#039;Imbox featured.png&amp;#039;&lt;br /&gt;
		},&lt;br /&gt;
		notice = {&lt;br /&gt;
			class = &amp;#039;imbox-notice&amp;#039;,&lt;br /&gt;
			image = &amp;#039;Imbox notice.svg&amp;#039;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	default              = &amp;#039;notice&amp;#039;,&lt;br /&gt;
	showInvalidTypeError = true,&lt;br /&gt;
	classes              = {&amp;#039;imbox&amp;#039;},&lt;br /&gt;
	usePlainlinksParam   = true,&lt;br /&gt;
	imageEmptyCell       = true,&lt;br /&gt;
	below                = true,&lt;br /&gt;
	templateCategory     = &amp;#039;File message boxes&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local ombox = {&lt;br /&gt;
	types = {&lt;br /&gt;
		speedy = {&lt;br /&gt;
			class = &amp;#039;ombox-speedy&amp;#039;,&lt;br /&gt;
			image = &amp;#039;Imbox speedy deletion.png&amp;#039;&lt;br /&gt;
		},&lt;br /&gt;
		delete = {&lt;br /&gt;
			class = &amp;#039;ombox-delete&amp;#039;,&lt;br /&gt;
			image = &amp;#039;Imbox deletion.png&amp;#039;&lt;br /&gt;
		},&lt;br /&gt;
		content = {&lt;br /&gt;
			class = &amp;#039;ombox-content&amp;#039;,&lt;br /&gt;
			image = &amp;#039;Imbox content.svg&amp;#039;&lt;br /&gt;
		},&lt;br /&gt;
		style = {&lt;br /&gt;
			class = &amp;#039;ombox-style&amp;#039;,&lt;br /&gt;
			image = &amp;#039;Edit-clear.svg&amp;#039;&lt;br /&gt;
		},&lt;br /&gt;
		move = {&lt;br /&gt;
			class = &amp;#039;ombox-move&amp;#039;,&lt;br /&gt;
			image = &amp;#039;Imbox move.png&amp;#039;&lt;br /&gt;
		},&lt;br /&gt;
		protection = {&lt;br /&gt;
			class = &amp;#039;ombox-protection&amp;#039;,&lt;br /&gt;
			image = &amp;#039;Imbox protection.png&amp;#039;&lt;br /&gt;
		},&lt;br /&gt;
		notice = {&lt;br /&gt;
			class = &amp;#039;ombox-notice&amp;#039;,&lt;br /&gt;
			image = &amp;#039;Imbox notice.svg&amp;#039;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	default              = &amp;#039;notice&amp;#039;,&lt;br /&gt;
	showInvalidTypeError = true,&lt;br /&gt;
	classes              = {&amp;#039;plainlinks&amp;#039;, &amp;#039;ombox&amp;#039;},&lt;br /&gt;
	allowSmall           = true,&lt;br /&gt;
	imageEmptyCell       = true,&lt;br /&gt;
	imageRightNone       = true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local tmbox = {&lt;br /&gt;
	types = {&lt;br /&gt;
		speedy = {&lt;br /&gt;
			class = &amp;#039;tmbox-speedy&amp;#039;,&lt;br /&gt;
			image = &amp;#039;Imbox speedy deletion.png&amp;#039;&lt;br /&gt;
		},&lt;br /&gt;
		delete = {&lt;br /&gt;
			class = &amp;#039;tmbox-delete&amp;#039;,&lt;br /&gt;
			image = &amp;#039;Imbox deletion.png&amp;#039;&lt;br /&gt;
		},&lt;br /&gt;
		content = {&lt;br /&gt;
			class = &amp;#039;tmbox-content&amp;#039;,&lt;br /&gt;
			image = &amp;#039;Imbox content.svg&amp;#039;&lt;br /&gt;
		},&lt;br /&gt;
		style = {&lt;br /&gt;
			class = &amp;#039;tmbox-style&amp;#039;,&lt;br /&gt;
			image = &amp;#039;Edit-clear.svg &amp;#039;&lt;br /&gt;
		},&lt;br /&gt;
		move = {&lt;br /&gt;
			class = &amp;#039;tmbox-move&amp;#039;,&lt;br /&gt;
			image = &amp;#039;Imbox move.png&amp;#039;&lt;br /&gt;
		},&lt;br /&gt;
		protection = {&lt;br /&gt;
			class = &amp;#039;tmbox-protection&amp;#039;,&lt;br /&gt;
			image = &amp;#039;Imbox protection.png&amp;#039;&lt;br /&gt;
		},&lt;br /&gt;
		notice = {&lt;br /&gt;
			class = &amp;#039;tmbox-notice&amp;#039;,&lt;br /&gt;
			image = &amp;#039;Imbox notice.svg&amp;#039;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	default              = &amp;#039;notice&amp;#039;,&lt;br /&gt;
	showInvalidTypeError = true,&lt;br /&gt;
	classes              = {&amp;#039;plainlinks&amp;#039;, &amp;#039;tmbox&amp;#039;},&lt;br /&gt;
	allowId              = true,&lt;br /&gt;
	allowSmall           = true,&lt;br /&gt;
	imageRightNone       = true,&lt;br /&gt;
	imageEmptyCell       = true,&lt;br /&gt;
	imageEmptyCellStyle  = true,&lt;br /&gt;
	templateCategory     = &amp;#039;Talk message boxes&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
	ambox = ambox,&lt;br /&gt;
	cmbox = cmbox,&lt;br /&gt;
	fmbox = fmbox,&lt;br /&gt;
	imbox = imbox,&lt;br /&gt;
	ombox = ombox,&lt;br /&gt;
	tmbox = tmbox&lt;br /&gt;
}&lt;/div&gt;</description>
			<pubDate>Mon, 20 Jul 2026 23:19:14 GMT</pubDate>
			<dc:creator>Marie</dc:creator>
			<comments>https://regio.w.kmwc.org/w/Module_talk:Message_box/configuration</comments>
		</item>
		<item>
			<title>Module:Namespace detect</title>
			<link>https://regio.w.kmwc.org/index.php?title=Module:Namespace_detect&amp;diff=32&amp;oldid=0</link>
			<guid isPermaLink="false">https://regio.w.kmwc.org/index.php?title=Module:Namespace_detect&amp;diff=32&amp;oldid=0</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Marie&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new mw-userlink&quot; title=&quot;User:Marie (page does not exist)&quot;&gt;&lt;bdi&gt;Marie&lt;/bdi&gt;&lt;/a&gt; imported &lt;a href=&quot;/w/Module:Namespace_detect&quot; title=&quot;Module:Namespace detect&quot;&gt;Module:Namespace detect&lt;/a&gt; by file upload (1 revision)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--[[&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
--                                                                            --&lt;br /&gt;
--                            NAMESPACE DETECT                                --&lt;br /&gt;
--                                                                            --&lt;br /&gt;
-- This module implements the {{namespace detect}} template in Lua, with a    --&lt;br /&gt;
-- few improvements: all namespaces and all namespace aliases are supported,  --&lt;br /&gt;
-- and namespace names are detected automatically for the local wiki. The     --&lt;br /&gt;
-- module can also use the corresponding subject namespace value if it is     --&lt;br /&gt;
-- used on a talk page. Parameter names can be configured for different wikis --&lt;br /&gt;
-- by altering the values in the &amp;quot;cfg&amp;quot; table in                               --&lt;br /&gt;
-- Module:Namespace detect/config.                                            --&lt;br /&gt;
--                                                                            --&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
local data = mw.loadData(&amp;#039;Module:Namespace detect/data&amp;#039;)&lt;br /&gt;
local argKeys = data.argKeys&lt;br /&gt;
local cfg = data.cfg&lt;br /&gt;
local mappings = data.mappings&lt;br /&gt;
&lt;br /&gt;
local yesno = require(&amp;#039;Module:Yesno&amp;#039;)&lt;br /&gt;
local mArguments -- Lazily initialise Module:Arguments&lt;br /&gt;
local mTableTools -- Lazily initilalise Module:TableTools&lt;br /&gt;
local ustringLower = mw.ustring.lower&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local function fetchValue(t1, t2)&lt;br /&gt;
	-- Fetches a value from the table t1 for the first key in array t2 where&lt;br /&gt;
	-- a non-nil value of t1 exists.&lt;br /&gt;
	for i, key in ipairs(t2) do&lt;br /&gt;
		local value = t1[key]&lt;br /&gt;
		if value ~= nil then&lt;br /&gt;
			return value&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function equalsArrayValue(t, value)&lt;br /&gt;
	-- Returns true if value equals a value in the array t. Otherwise&lt;br /&gt;
	-- returns false.&lt;br /&gt;
	for i, arrayValue in ipairs(t) do&lt;br /&gt;
		if value == arrayValue then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getPageObject(page)&lt;br /&gt;
	-- Get the page object, passing the function through pcall in case of&lt;br /&gt;
	-- errors, e.g. being over the expensive function count limit.&lt;br /&gt;
	if page then&lt;br /&gt;
		local success, pageObject = pcall(mw.title.new, page)&lt;br /&gt;
		if success then&lt;br /&gt;
			return pageObject&lt;br /&gt;
		else&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return mw.title.getCurrentTitle()&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Provided for backward compatibility with other modules&lt;br /&gt;
function p.getParamMappings()&lt;br /&gt;
	return mappings&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getNamespace(args)&lt;br /&gt;
	-- This function gets the namespace name from the page object.&lt;br /&gt;
	local page = fetchValue(args, argKeys.demopage)&lt;br /&gt;
	if page == &amp;#039;&amp;#039; then&lt;br /&gt;
		page = nil&lt;br /&gt;
	end&lt;br /&gt;
	local demospace = fetchValue(args, argKeys.demospace)&lt;br /&gt;
	if demospace == &amp;#039;&amp;#039; then&lt;br /&gt;
		demospace = nil&lt;br /&gt;
	end&lt;br /&gt;
	local subjectns = fetchValue(args, argKeys.subjectns)&lt;br /&gt;
	local ret&lt;br /&gt;
	if demospace then&lt;br /&gt;
		-- Handle &amp;quot;demospace = main&amp;quot; properly.&lt;br /&gt;
		if equalsArrayValue(argKeys.main, ustringLower(demospace)) then&lt;br /&gt;
			ret = mw.site.namespaces[0].name&lt;br /&gt;
		else&lt;br /&gt;
			ret = demospace&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		local pageObject = p.getPageObject(page)&lt;br /&gt;
		if pageObject then&lt;br /&gt;
			if pageObject.isTalkPage then&lt;br /&gt;
				-- Get the subject namespace if the option is set,&lt;br /&gt;
				-- otherwise use &amp;quot;talk&amp;quot;.&lt;br /&gt;
				if yesno(subjectns) then&lt;br /&gt;
					ret = mw.site.namespaces[pageObject.namespace].subject.name&lt;br /&gt;
				else&lt;br /&gt;
					ret = &amp;#039;talk&amp;#039;&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				ret = pageObject.nsText&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			return nil -- return nil if the page object doesn&amp;#039;t exist.&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	ret = ret:gsub(&amp;#039;_&amp;#039;, &amp;#039; &amp;#039;)&lt;br /&gt;
	return ustringLower(ret)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(args)&lt;br /&gt;
	-- Check the parameters stored in the mappings table for any matches.&lt;br /&gt;
	local namespace = getNamespace(args) or &amp;#039;other&amp;#039; -- &amp;quot;other&amp;quot; avoids nil table keys&lt;br /&gt;
	local params = mappings[namespace] or {}&lt;br /&gt;
	local ret = fetchValue(args, params)&lt;br /&gt;
	--[[&lt;br /&gt;
	-- If there were no matches, return parameters for other namespaces.&lt;br /&gt;
	-- This happens if there was no text specified for the namespace that&lt;br /&gt;
	-- was detected or if the demospace parameter is not a valid&lt;br /&gt;
	-- namespace. Note that the parameter for the detected namespace must be&lt;br /&gt;
	-- completely absent for this to happen, not merely blank.&lt;br /&gt;
	--]]&lt;br /&gt;
	if ret == nil then&lt;br /&gt;
		ret = fetchValue(args, argKeys.other)&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	mArguments = require(&amp;#039;Module:Arguments&amp;#039;)&lt;br /&gt;
	local args = mArguments.getArgs(frame, {removeBlanks = false})&lt;br /&gt;
	local ret = p._main(args)&lt;br /&gt;
	return ret or &amp;#039;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.table(frame)&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Create a wikitable of all subject namespace parameters, for&lt;br /&gt;
	-- documentation purposes. The talk parameter is optional, in case it&lt;br /&gt;
	-- needs to be excluded in the documentation.&lt;br /&gt;
	--]]&lt;br /&gt;
	&lt;br /&gt;
	-- Load modules and initialise variables.&lt;br /&gt;
	mTableTools = require(&amp;#039;Module:TableTools&amp;#039;)&lt;br /&gt;
	local namespaces = mw.site.namespaces&lt;br /&gt;
	local cfg = data.cfg&lt;br /&gt;
	local useTalk = type(frame) == &amp;#039;table&amp;#039; &lt;br /&gt;
		and type(frame.args) == &amp;#039;table&amp;#039; &lt;br /&gt;
		and yesno(frame.args.talk) -- Whether to use the talk parameter.&lt;br /&gt;
	&lt;br /&gt;
	-- Get the header names.&lt;br /&gt;
	local function checkValue(value, default)&lt;br /&gt;
		if type(value) == &amp;#039;string&amp;#039; then&lt;br /&gt;
			return value&lt;br /&gt;
		else&lt;br /&gt;
			return default&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local nsHeader = checkValue(cfg.wikitableNamespaceHeader, &amp;#039;Namespace&amp;#039;)&lt;br /&gt;
	local aliasesHeader = checkValue(cfg.wikitableAliasesHeader, &amp;#039;Aliases&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	-- Put the namespaces in order.&lt;br /&gt;
	local mappingsOrdered = {}&lt;br /&gt;
	for nsname, params in pairs(mappings) do&lt;br /&gt;
		if useTalk or nsname ~= &amp;#039;talk&amp;#039; then&lt;br /&gt;
			local nsid = namespaces[nsname].id&lt;br /&gt;
			-- Add 1, as the array must start with 1; nsid 0 would be lost otherwise.&lt;br /&gt;
			nsid = nsid + 1 &lt;br /&gt;
			mappingsOrdered[nsid] = params&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	mappingsOrdered = mTableTools.compressSparseArray(mappingsOrdered)&lt;br /&gt;
&lt;br /&gt;
	-- Build the table.&lt;br /&gt;
	local ret = &amp;#039;{| class=&amp;quot;wikitable&amp;quot;&amp;#039;&lt;br /&gt;
		.. &amp;#039;\n|-&amp;#039;&lt;br /&gt;
		.. &amp;#039;\n! &amp;#039; .. nsHeader&lt;br /&gt;
		.. &amp;#039;\n! &amp;#039; .. aliasesHeader&lt;br /&gt;
	for i, params in ipairs(mappingsOrdered) do&lt;br /&gt;
		for j, param in ipairs(params) do&lt;br /&gt;
			if j == 1 then&lt;br /&gt;
				ret = ret .. &amp;#039;\n|-&amp;#039;&lt;br /&gt;
					.. &amp;#039;\n| &amp;lt;code&amp;gt;&amp;#039; .. param .. &amp;#039;&amp;lt;/code&amp;gt;&amp;#039;&lt;br /&gt;
					.. &amp;#039;\n| &amp;#039;&lt;br /&gt;
			elseif j == 2 then&lt;br /&gt;
				ret = ret .. &amp;#039;&amp;lt;code&amp;gt;&amp;#039; .. param .. &amp;#039;&amp;lt;/code&amp;gt;&amp;#039;&lt;br /&gt;
			else&lt;br /&gt;
				ret = ret .. &amp;#039;, &amp;lt;code&amp;gt;&amp;#039; .. param .. &amp;#039;&amp;lt;/code&amp;gt;&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	ret = ret .. &amp;#039;\n|-&amp;#039;&lt;br /&gt;
		.. &amp;#039;\n|}&amp;#039;&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</description>
			<pubDate>Mon, 20 Jul 2026 23:19:14 GMT</pubDate>
			<dc:creator>Marie</dc:creator>
			<comments>https://regio.w.kmwc.org/w/Module_talk:Namespace_detect</comments>
		</item>
		<item>
			<title>Module:Namespace detect/config</title>
			<link>https://regio.w.kmwc.org/index.php?title=Module:Namespace_detect/config&amp;diff=34&amp;oldid=0</link>
			<guid isPermaLink="false">https://regio.w.kmwc.org/index.php?title=Module:Namespace_detect/config&amp;diff=34&amp;oldid=0</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Marie&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new mw-userlink&quot; title=&quot;User:Marie (page does not exist)&quot;&gt;&lt;bdi&gt;Marie&lt;/bdi&gt;&lt;/a&gt; imported &lt;a href=&quot;/w/Module:Namespace_detect/config&quot; title=&quot;Module:Namespace detect/config&quot;&gt;Module:Namespace detect/config&lt;/a&gt; by file upload (1 revision)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--------------------------------------------------------------------------------&lt;br /&gt;
--                    Namespace detect configuration data                     --&lt;br /&gt;
--                                                                            --&lt;br /&gt;
-- This module stores configuration data for Module:Namespace detect. Here    --&lt;br /&gt;
-- you can localise the module to your wiki&amp;#039;s language.                       --&lt;br /&gt;
--                                                                            --&lt;br /&gt;
-- To activate a configuration item, you need to uncomment it. This means     --&lt;br /&gt;
-- that you need to remove the text &amp;quot;-- &amp;quot; at the start of the line.           --&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local cfg = {} -- Don&amp;#039;t edit this line.&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
--                              Parameter names                               --&lt;br /&gt;
-- These configuration items specify custom parameter names. Values added     --&lt;br /&gt;
-- here will work in addition to the default English parameter names.         --&lt;br /&gt;
-- To add one extra name, you can use this format:                            --&lt;br /&gt;
--                                                                            --&lt;br /&gt;
-- cfg.foo = &amp;#039;parameter name&amp;#039;                                                 --&lt;br /&gt;
--                                                                            --&lt;br /&gt;
-- To add multiple names, you can use this format:                            --&lt;br /&gt;
--                                                                            --&lt;br /&gt;
-- cfg.foo = {&amp;#039;parameter name 1&amp;#039;, &amp;#039;parameter name 2&amp;#039;, &amp;#039;parameter name 3&amp;#039;}     --&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
---- This parameter displays content for the main namespace:&lt;br /&gt;
-- cfg.main = &amp;#039;main&amp;#039;&lt;br /&gt;
&lt;br /&gt;
---- This parameter displays in talk namespaces:&lt;br /&gt;
-- cfg.talk = &amp;#039;talk&amp;#039;&lt;br /&gt;
&lt;br /&gt;
---- This parameter displays content for &amp;quot;other&amp;quot; namespaces (namespaces for which&lt;br /&gt;
---- parameters have not been specified):&lt;br /&gt;
-- cfg.other = &amp;#039;other&amp;#039;&lt;br /&gt;
&lt;br /&gt;
---- This parameter makes talk pages behave as though they are the corresponding&lt;br /&gt;
---- subject namespace. Note that this parameter is used with [[Module:Yesno]].&lt;br /&gt;
---- Edit that module to change the default values of &amp;quot;yes&amp;quot;, &amp;quot;no&amp;quot;, etc.&lt;br /&gt;
-- cfg.subjectns = &amp;#039;subjectns&amp;#039;&lt;br /&gt;
&lt;br /&gt;
---- This parameter sets a demonstration namespace:&lt;br /&gt;
-- cfg.demospace = &amp;#039;demospace&amp;#039;&lt;br /&gt;
&lt;br /&gt;
---- This parameter sets a specific page to compare:&lt;br /&gt;
cfg.demopage = &amp;#039;page&amp;#039;&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
--                           Table configuration                              --&lt;br /&gt;
-- These configuration items allow customisation of the &amp;quot;table&amp;quot; function,     --&lt;br /&gt;
-- used to generate a table of possible parameters in the module              --&lt;br /&gt;
-- documentation.                                                             --&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
---- The header for the namespace column in the wikitable containing the list of&lt;br /&gt;
---- possible subject-space parameters.&lt;br /&gt;
-- cfg.wikitableNamespaceHeader = &amp;#039;Namespace&amp;#039;&lt;br /&gt;
&lt;br /&gt;
---- The header for the wikitable containing the list of possible subject-space&lt;br /&gt;
---- parameters.&lt;br /&gt;
-- cfg.wikitableAliasesHeader = &amp;#039;Aliases&amp;#039;&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
--                        End of configuration data                           --&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
return cfg -- Don&amp;#039;t edit this line.&lt;/div&gt;</description>
			<pubDate>Mon, 20 Jul 2026 23:19:14 GMT</pubDate>
			<dc:creator>Marie</dc:creator>
			<comments>https://regio.w.kmwc.org/w/Module_talk:Namespace_detect/config</comments>
		</item>
		<item>
			<title>Module:Namespace detect/data</title>
			<link>https://regio.w.kmwc.org/index.php?title=Module:Namespace_detect/data&amp;diff=36&amp;oldid=0</link>
			<guid isPermaLink="false">https://regio.w.kmwc.org/index.php?title=Module:Namespace_detect/data&amp;diff=36&amp;oldid=0</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Marie&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new mw-userlink&quot; title=&quot;User:Marie (page does not exist)&quot;&gt;&lt;bdi&gt;Marie&lt;/bdi&gt;&lt;/a&gt; imported &lt;a href=&quot;/w/Module:Namespace_detect/data&quot; title=&quot;Module:Namespace detect/data&quot;&gt;Module:Namespace detect/data&lt;/a&gt; by file upload (1 revision)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--------------------------------------------------------------------------------&lt;br /&gt;
--                          Namespace detect data                             --&lt;br /&gt;
-- This module holds data for [[Module:Namespace detect]] to be loaded per    --&lt;br /&gt;
-- page, rather than per #invoke, for performance reasons.                    --&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local cfg = require(&amp;#039;Module:Namespace detect/config&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local function addKey(t, key, defaultKey)&lt;br /&gt;
	if key ~= defaultKey then&lt;br /&gt;
		t[#t + 1] = key&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Get a table of parameters to query for each default parameter name.&lt;br /&gt;
-- This allows wikis to customise parameter names in the cfg table while&lt;br /&gt;
-- ensuring that default parameter names will always work. The cfg table&lt;br /&gt;
-- values can be added as a string, or as an array of strings.&lt;br /&gt;
&lt;br /&gt;
local defaultKeys = {&lt;br /&gt;
	&amp;#039;main&amp;#039;,&lt;br /&gt;
	&amp;#039;talk&amp;#039;,&lt;br /&gt;
	&amp;#039;other&amp;#039;,&lt;br /&gt;
	&amp;#039;subjectns&amp;#039;,&lt;br /&gt;
	&amp;#039;demospace&amp;#039;,&lt;br /&gt;
	&amp;#039;demopage&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local argKeys = {}&lt;br /&gt;
for i, defaultKey in ipairs(defaultKeys) do&lt;br /&gt;
	argKeys[defaultKey] = {defaultKey}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
for defaultKey, t in pairs(argKeys) do&lt;br /&gt;
	local cfgValue = cfg[defaultKey]&lt;br /&gt;
	local cfgValueType = type(cfgValue)&lt;br /&gt;
	if cfgValueType == &amp;#039;string&amp;#039; then&lt;br /&gt;
		addKey(t, cfgValue, defaultKey)&lt;br /&gt;
	elseif cfgValueType == &amp;#039;table&amp;#039; then&lt;br /&gt;
		for i, key in ipairs(cfgValue) do&lt;br /&gt;
			addKey(t, key, defaultKey)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	cfg[defaultKey] = nil -- Free the cfg value as we don&amp;#039;t need it any more.&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getParamMappings()&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Returns a table of how parameter names map to namespace names. The keys&lt;br /&gt;
	-- are the actual namespace names, in lower case, and the values are the&lt;br /&gt;
	-- possible parameter names for that namespace, also in lower case. The&lt;br /&gt;
	-- table entries are structured like this:&lt;br /&gt;
	-- {&lt;br /&gt;
	--   [&amp;#039;&amp;#039;] = {&amp;#039;main&amp;#039;},&lt;br /&gt;
	--   [&amp;#039;wikipedia&amp;#039;] = {&amp;#039;wikipedia&amp;#039;, &amp;#039;project&amp;#039;, &amp;#039;wp&amp;#039;},&lt;br /&gt;
	--   ...&lt;br /&gt;
	-- }&lt;br /&gt;
	--]]&lt;br /&gt;
	local mappings = {}&lt;br /&gt;
	local mainNsName = mw.site.subjectNamespaces[0].name&lt;br /&gt;
	mainNsName = mw.ustring.lower(mainNsName)&lt;br /&gt;
	mappings[mainNsName] = mw.clone(argKeys.main)&lt;br /&gt;
	mappings[&amp;#039;talk&amp;#039;] = mw.clone(argKeys.talk)&lt;br /&gt;
	for nsid, ns in pairs(mw.site.subjectNamespaces) do&lt;br /&gt;
		if nsid ~= 0 then -- Exclude main namespace.&lt;br /&gt;
			local nsname = mw.ustring.lower(ns.name)&lt;br /&gt;
			local canonicalName = mw.ustring.lower(ns.canonicalName)&lt;br /&gt;
			mappings[nsname] = {nsname}&lt;br /&gt;
			if canonicalName ~= nsname then&lt;br /&gt;
				table.insert(mappings[nsname], canonicalName)&lt;br /&gt;
			end&lt;br /&gt;
			for _, alias in ipairs(ns.aliases) do&lt;br /&gt;
				table.insert(mappings[nsname], mw.ustring.lower(alias))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return mappings&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
	argKeys = argKeys,&lt;br /&gt;
	cfg = cfg,&lt;br /&gt;
	mappings = getParamMappings()&lt;br /&gt;
}&lt;/div&gt;</description>
			<pubDate>Mon, 20 Jul 2026 23:19:14 GMT</pubDate>
			<dc:creator>Marie</dc:creator>
			<comments>https://regio.w.kmwc.org/w/Module_talk:Namespace_detect/data</comments>
		</item>
		<item>
			<title>Module:Yesno</title>
			<link>https://regio.w.kmwc.org/index.php?title=Module:Yesno&amp;diff=38&amp;oldid=0</link>
			<guid isPermaLink="false">https://regio.w.kmwc.org/index.php?title=Module:Yesno&amp;diff=38&amp;oldid=0</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Marie&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new mw-userlink&quot; title=&quot;User:Marie (page does not exist)&quot;&gt;&lt;bdi&gt;Marie&lt;/bdi&gt;&lt;/a&gt; imported &lt;a href=&quot;/w/Module:Yesno&quot; title=&quot;Module:Yesno&quot;&gt;Module:Yesno&lt;/a&gt; by file upload (1 revision)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- Function allowing for consistent treatment of boolean-like wikitext input.&lt;br /&gt;
-- It works similarly to the template {{yesno}}.&lt;br /&gt;
&lt;br /&gt;
return function (val, default)&lt;br /&gt;
	-- If your wiki uses non-ascii characters for any of &amp;quot;yes&amp;quot;, &amp;quot;no&amp;quot;, etc., you&lt;br /&gt;
	-- should replace &amp;quot;val:lower()&amp;quot; with &amp;quot;mw.ustring.lower(val)&amp;quot; in the&lt;br /&gt;
	-- following line.&lt;br /&gt;
	val = type(val) == &amp;#039;string&amp;#039; and val:lower() or val&lt;br /&gt;
	if val == nil then&lt;br /&gt;
		return nil&lt;br /&gt;
	elseif val == true &lt;br /&gt;
		or val == &amp;#039;yes&amp;#039;&lt;br /&gt;
		or val == &amp;#039;y&amp;#039;&lt;br /&gt;
		or val == &amp;#039;true&amp;#039;&lt;br /&gt;
		or tonumber(val) == 1&lt;br /&gt;
	then&lt;br /&gt;
		return true&lt;br /&gt;
	elseif val == false&lt;br /&gt;
		or val == &amp;#039;no&amp;#039;&lt;br /&gt;
		or val == &amp;#039;n&amp;#039;&lt;br /&gt;
		or val == &amp;#039;false&amp;#039;&lt;br /&gt;
		or tonumber(val) == 0&lt;br /&gt;
	then&lt;br /&gt;
		return false&lt;br /&gt;
	else&lt;br /&gt;
		return default&lt;br /&gt;
	end&lt;br /&gt;
end&lt;/div&gt;</description>
			<pubDate>Mon, 20 Jul 2026 23:19:14 GMT</pubDate>
			<dc:creator>Marie</dc:creator>
			<comments>https://regio.w.kmwc.org/w/Module_talk:Yesno</comments>
		</item>
		<item>
			<title>Template:Documentation</title>
			<link>https://regio.w.kmwc.org/index.php?title=Template:Documentation&amp;diff=40&amp;oldid=0</link>
			<guid isPermaLink="false">https://regio.w.kmwc.org/index.php?title=Template:Documentation&amp;diff=40&amp;oldid=0</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Marie&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new mw-userlink&quot; title=&quot;User:Marie (page does not exist)&quot;&gt;&lt;bdi&gt;Marie&lt;/bdi&gt;&lt;/a&gt; imported &lt;a href=&quot;/w/Template:Documentation&quot; title=&quot;Template:Documentation&quot;&gt;Template:Documentation&lt;/a&gt; by file upload (1 revision)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{#invoke:documentation|main|_content={{ {{#invoke:documentation|contentTitle}}}}}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- Add categories and interwikis to the /doc subpage, not here! --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</description>
			<pubDate>Mon, 20 Jul 2026 23:19:14 GMT</pubDate>
			<dc:creator>Marie</dc:creator>
			<comments>https://regio.w.kmwc.org/w/Template_talk:Documentation</comments>
		</item>
		<item>
			<title>Template:Icon/doc</title>
			<link>https://regio.w.kmwc.org/index.php?title=Template:Icon/doc&amp;diff=42&amp;oldid=0</link>
			<guid isPermaLink="false">https://regio.w.kmwc.org/index.php?title=Template:Icon/doc&amp;diff=42&amp;oldid=0</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Marie&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new mw-userlink&quot; title=&quot;User:Marie (page does not exist)&quot;&gt;&lt;bdi&gt;Marie&lt;/bdi&gt;&lt;/a&gt; imported &lt;a href=&quot;/w/Template:Icon/doc&quot; title=&quot;Template:Icon/doc&quot;&gt;Template:Icon/doc&lt;/a&gt; by file upload (1 revision)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Usage ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
{{Icon|BlazBlue Central Fiction Ragna the Bloodedge Icon.png&lt;br /&gt;
|img=(named alt of {{{1|}}}) for Cargo queries&lt;br /&gt;
|imglink=Ragna the Bloodedge&lt;br /&gt;
|header=goes above the icon&lt;br /&gt;
|caption=[[Ragna the Bloodedge]]&lt;br /&gt;
|width=default is 96px&lt;br /&gt;
|class=CSS classes to style the div wrapper&lt;br /&gt;
|style=CSS style to style the div wrapper&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{Icon|BlazBlue Central Fiction Ragna the Bloodedge Icon.png|imglink=Ragna the Bloodedge|caption=[[Ragna the Bloodedge]]}}&lt;br /&gt;
{{Icon|BlazBlue Central Fiction Naoto Kurogane Chibi.png|imglink=Naoto Kurogane|caption=[[Naoto Kurogane|Dec 1]]}}&lt;br /&gt;
{{Icon|BlazBlue Central Fiction Platinum the Trinity Chibi.png|imglink=Platinum the Trinity|caption=[[Platinum the Trinity|Dec 13]]}}&lt;br /&gt;
{{Icon|BlazBlue Central Fiction Noel Vermillion Chibi(A).png|imglink=Noel Vermillion|caption=[[Noel Vermillion|Dec 25]]}}&lt;br /&gt;
{{Icon|BlazBlue Central Fiction Nu-13 Chibi.png|imglink=Nu-13|caption=[[Nu-13|Dec 31]]}}&lt;br /&gt;
{{Icon|BlazBlue Central Fiction Nu-13 Icon.png|imglink=Nu-13|caption=[[Nu-13|Dec 31]]|header=&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;}}&lt;br /&gt;
{{Icon|BlazBlue Central Fiction Nu-13 Icon.png|imglink=Nu-13|caption=This is a caption.|header=This is a header.}}&lt;br /&gt;
For use with [[Template:Icon Grid]].&lt;br /&gt;
&amp;lt;includeonly&amp;gt;[[Category:Templates]]&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</description>
			<pubDate>Mon, 20 Jul 2026 23:19:14 GMT</pubDate>
			<dc:creator>Marie</dc:creator>
			<comments>https://regio.w.kmwc.org/w/Template_talk:Icon/doc</comments>
		</item>
		<item>
			<title>Template:Icon</title>
			<link>https://regio.w.kmwc.org/index.php?title=Template:Icon&amp;diff=16&amp;oldid=0</link>
			<guid isPermaLink="false">https://regio.w.kmwc.org/index.php?title=Template:Icon&amp;diff=16&amp;oldid=0</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Marie&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new mw-userlink&quot; title=&quot;User:Marie (page does not exist)&quot;&gt;&lt;bdi&gt;Marie&lt;/bdi&gt;&lt;/a&gt; imported &lt;a href=&quot;/w/Template:Icon&quot; title=&quot;Template:Icon&quot;&gt;Template:Icon&lt;/a&gt; by file upload (1 revision)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;div class=&amp;quot;bb-wiki-nav-button&amp;quot; style=&amp;quot;width:{{#if:{{{widths|}}}|{{{widths|}}}|{{{width|96px}}}}}; {{{style|}}}&amp;quot;&amp;gt;&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&amp;lt;center&amp;gt;{{{header|}}}&amp;lt;/center&amp;gt;{{#if:{{{1|{{{img|}}}}}}|[[File:{{{1|{{{img|}}}}}}|link={{{imglink|File:{{{1}}}}}}|center|{{{width|96px}}}]]}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;center&amp;gt;&amp;lt;small&amp;gt;{{{caption|}}}&amp;lt;/small&amp;gt;&amp;lt;/center&amp;gt;&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&amp;lt;/div&amp;gt;&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;</description>
			<pubDate>Mon, 20 Jul 2026 23:19:13 GMT</pubDate>
			<dc:creator>Marie</dc:creator>
			<comments>https://regio.w.kmwc.org/w/Template_talk:Icon</comments>
		</item>
		<item>
			<title>Module:Arguments</title>
			<link>https://regio.w.kmwc.org/index.php?title=Module:Arguments&amp;diff=18&amp;oldid=0</link>
			<guid isPermaLink="false">https://regio.w.kmwc.org/index.php?title=Module:Arguments&amp;diff=18&amp;oldid=0</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Marie&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new mw-userlink&quot; title=&quot;User:Marie (page does not exist)&quot;&gt;&lt;bdi&gt;Marie&lt;/bdi&gt;&lt;/a&gt; imported &lt;a href=&quot;/w/Module:Arguments&quot; title=&quot;Module:Arguments&quot;&gt;Module:Arguments&lt;/a&gt; by file upload (1 revision)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- This module provides easy processing of arguments passed to Scribunto from&lt;br /&gt;
-- #invoke. It is intended for use by other Lua modules, and should not be&lt;br /&gt;
-- called from #invoke directly.&lt;br /&gt;
&lt;br /&gt;
local libraryUtil = require(&amp;#039;libraryUtil&amp;#039;)&lt;br /&gt;
local checkType = libraryUtil.checkType&lt;br /&gt;
&lt;br /&gt;
local arguments = {}&lt;br /&gt;
&lt;br /&gt;
-- Generate four different tidyVal functions, so that we don&amp;#039;t have to check the&lt;br /&gt;
-- options every time we call it.&lt;br /&gt;
&lt;br /&gt;
local function tidyValDefault(key, val)&lt;br /&gt;
	if type(val) == &amp;#039;string&amp;#039; then&lt;br /&gt;
		val = val:match(&amp;#039;^%s*(.-)%s*$&amp;#039;)&lt;br /&gt;
		if val == &amp;#039;&amp;#039; then&lt;br /&gt;
			return nil&lt;br /&gt;
		else&lt;br /&gt;
			return val&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return val&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function tidyValTrimOnly(key, val)&lt;br /&gt;
	if type(val) == &amp;#039;string&amp;#039; then&lt;br /&gt;
		return val:match(&amp;#039;^%s*(.-)%s*$&amp;#039;)&lt;br /&gt;
	else&lt;br /&gt;
		return val&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function tidyValRemoveBlanksOnly(key, val)&lt;br /&gt;
	if type(val) == &amp;#039;string&amp;#039; then&lt;br /&gt;
		if val:find(&amp;#039;%S&amp;#039;) then&lt;br /&gt;
			return val&lt;br /&gt;
		else&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return val&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function tidyValNoChange(key, val)&lt;br /&gt;
	return val&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function arguments.getArgs(frame, options)&lt;br /&gt;
	checkType(&amp;#039;getArgs&amp;#039;, 1, frame, &amp;#039;table&amp;#039;, true)&lt;br /&gt;
	checkType(&amp;#039;getArgs&amp;#039;, 2, options, &amp;#039;table&amp;#039;, true)&lt;br /&gt;
	frame = frame or {}&lt;br /&gt;
	options = options or {}&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Get the argument tables. If we were passed a valid frame object, get the&lt;br /&gt;
	-- frame arguments (fargs) and the parent frame arguments (pargs), depending&lt;br /&gt;
	-- on the options set and on the parent frame&amp;#039;s availability. If we weren&amp;#039;t&lt;br /&gt;
	-- passed a valid frame object, we are being called from another Lua module&lt;br /&gt;
	-- or from the debug console, so assume that we were passed a table of args&lt;br /&gt;
	-- directly, and assign it to a new variable (luaArgs).&lt;br /&gt;
	--]]&lt;br /&gt;
	local fargs, pargs, luaArgs&lt;br /&gt;
	if type(frame.args) == &amp;#039;table&amp;#039; and type(frame.getParent) == &amp;#039;function&amp;#039; then&lt;br /&gt;
		if options.wrappers then&lt;br /&gt;
			--[[&lt;br /&gt;
			-- The wrappers option makes Module:Arguments look up arguments in&lt;br /&gt;
			-- either the frame argument table or the parent argument table, but&lt;br /&gt;
			-- not both. This means that users can use either the #invoke syntax&lt;br /&gt;
			-- or a wrapper template without the loss of performance associated&lt;br /&gt;
			-- with looking arguments up in both the frame and the parent frame.&lt;br /&gt;
			-- Module:Arguments will look up arguments in the parent frame&lt;br /&gt;
			-- if it finds the parent frame&amp;#039;s title in options.wrapper;&lt;br /&gt;
			-- otherwise it will look up arguments in the frame object passed&lt;br /&gt;
			-- to getArgs.&lt;br /&gt;
			--]]&lt;br /&gt;
			local parent = frame:getParent()&lt;br /&gt;
			if not parent then&lt;br /&gt;
				fargs = frame.args&lt;br /&gt;
			else&lt;br /&gt;
				local title = parent:getTitle():gsub(&amp;#039;/sandbox$&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
				local found = false&lt;br /&gt;
				if type(options.wrappers) == &amp;#039;table&amp;#039; then&lt;br /&gt;
					for _,v in pairs(options.wrappers) do&lt;br /&gt;
						if v == title then&lt;br /&gt;
							found = true&lt;br /&gt;
							break&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				elseif options.wrappers == title then&lt;br /&gt;
					found = true&lt;br /&gt;
				end&lt;br /&gt;
				if found then&lt;br /&gt;
					pargs = parent.args&lt;br /&gt;
				else&lt;br /&gt;
					fargs = frame.args&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			-- options.wrapper isn&amp;#039;t set, so check the other options.&lt;br /&gt;
			if not options.parentOnly then&lt;br /&gt;
				fargs = frame.args&lt;br /&gt;
			end&lt;br /&gt;
			if not options.frameOnly then&lt;br /&gt;
				local parent = frame:getParent()&lt;br /&gt;
				pargs = parent and parent.args or nil&lt;br /&gt;
			end&lt;br /&gt;
			if options.parentFirst then&lt;br /&gt;
				fargs, pargs = pargs, fargs&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		luaArgs = frame&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Set the order of precedence of the argument tables. If the variables are&lt;br /&gt;
	-- nil, nothing will be added to the table, which is how we avoid clashes&lt;br /&gt;
	-- between the frame/parent args and the Lua args.	&lt;br /&gt;
	local argTables = {fargs}&lt;br /&gt;
	argTables[#argTables + 1] = pargs&lt;br /&gt;
	argTables[#argTables + 1] = luaArgs&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Generate the tidyVal function. If it has been specified by the user, we&lt;br /&gt;
	-- use that; if not, we choose one of four functions depending on the&lt;br /&gt;
	-- options chosen. This is so that we don&amp;#039;t have to call the options table&lt;br /&gt;
	-- every time the function is called.&lt;br /&gt;
	--]]&lt;br /&gt;
	local tidyVal = options.valueFunc&lt;br /&gt;
	if tidyVal then&lt;br /&gt;
		if type(tidyVal) ~= &amp;#039;function&amp;#039; then&lt;br /&gt;
			error(&lt;br /&gt;
				&amp;quot;bad value assigned to option &amp;#039;valueFunc&amp;#039;&amp;quot;&lt;br /&gt;
					.. &amp;#039;(function expected, got &amp;#039;&lt;br /&gt;
					.. type(tidyVal)&lt;br /&gt;
					.. &amp;#039;)&amp;#039;,&lt;br /&gt;
				2&lt;br /&gt;
			)&lt;br /&gt;
		end&lt;br /&gt;
	elseif options.trim ~= false then&lt;br /&gt;
		if options.removeBlanks ~= false then&lt;br /&gt;
			tidyVal = tidyValDefault&lt;br /&gt;
		else&lt;br /&gt;
			tidyVal = tidyValTrimOnly&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		if options.removeBlanks ~= false then&lt;br /&gt;
			tidyVal = tidyValRemoveBlanksOnly&lt;br /&gt;
		else&lt;br /&gt;
			tidyVal = tidyValNoChange&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Set up the args, metaArgs and nilArgs tables. args will be the one&lt;br /&gt;
	-- accessed from functions, and metaArgs will hold the actual arguments. Nil&lt;br /&gt;
	-- arguments are memoized in nilArgs, and the metatable connects all of them&lt;br /&gt;
	-- together.&lt;br /&gt;
	--]]&lt;br /&gt;
	local args, metaArgs, nilArgs, metatable = {}, {}, {}, {}&lt;br /&gt;
	setmetatable(args, metatable)&lt;br /&gt;
&lt;br /&gt;
	local function mergeArgs(iterator, tables)&lt;br /&gt;
		--[[&lt;br /&gt;
		-- Accepts multiple tables as input and merges their keys and values&lt;br /&gt;
		-- into one table using the specified iterator. If a value is already&lt;br /&gt;
		-- present it is not overwritten; tables listed earlier have precedence.&lt;br /&gt;
		-- We are also memoizing nil values, but those values can be&lt;br /&gt;
		-- overwritten.&lt;br /&gt;
		--]]&lt;br /&gt;
		for _, t in ipairs(tables) do&lt;br /&gt;
			for key, val in iterator(t) do&lt;br /&gt;
				if metaArgs[key] == nil then&lt;br /&gt;
					local tidiedVal = tidyVal(key, val)&lt;br /&gt;
					if tidiedVal == nil then&lt;br /&gt;
						nilArgs[key] = true&lt;br /&gt;
					else&lt;br /&gt;
						metaArgs[key] = tidiedVal&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Define metatable behaviour. Arguments are memoized in the metaArgs table,&lt;br /&gt;
	-- and are only fetched from the argument tables once. Fetching arguments&lt;br /&gt;
	-- from the argument tables is the most resource-intensive step in this&lt;br /&gt;
	-- module, so we try and avoid it where possible. For this reason, nil&lt;br /&gt;
	-- arguments are also memoized, in the nilArgs table. Also, we keep a record&lt;br /&gt;
	-- in the metatable of when pairs and ipairs have been called, so we do not&lt;br /&gt;
	-- run pairs and ipairs on the argument tables more than once. We also do&lt;br /&gt;
	-- not run ipairs on fargs and pargs if pairs has already been run, as all&lt;br /&gt;
	-- the arguments will already have been copied over.&lt;br /&gt;
	--]]&lt;br /&gt;
&lt;br /&gt;
	metatable.__index = function (t, key)&lt;br /&gt;
		--[[&lt;br /&gt;
		-- Fetches an argument when the args table is indexed. First we check&lt;br /&gt;
		-- to see if the value is memoized, and if not we try and fetch it from&lt;br /&gt;
		-- the argument tables. When we check memoization, we need to check&lt;br /&gt;
		-- metaArgs before nilArgs, as both can be non-nil at the same time.&lt;br /&gt;
		-- If the argument is not present in metaArgs, we also check whether&lt;br /&gt;
		-- pairs has been run yet. If pairs has already been run, we return nil.&lt;br /&gt;
		-- This is because all the arguments will have already been copied into&lt;br /&gt;
		-- metaArgs by the mergeArgs function, meaning that any other arguments&lt;br /&gt;
		-- must be nil.&lt;br /&gt;
		--]]&lt;br /&gt;
		local val = metaArgs[key]&lt;br /&gt;
		if val ~= nil then&lt;br /&gt;
			return val&lt;br /&gt;
		elseif metatable.donePairs or nilArgs[key] then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
		for _, argTable in ipairs(argTables) do&lt;br /&gt;
			local argTableVal = tidyVal(key, argTable[key])&lt;br /&gt;
			if argTableVal == nil then&lt;br /&gt;
				nilArgs[key] = true&lt;br /&gt;
			else&lt;br /&gt;
				metaArgs[key] = argTableVal&lt;br /&gt;
				return argTableVal&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	metatable.__newindex = function (t, key, val)&lt;br /&gt;
		-- This function is called when a module tries to add a new value to the&lt;br /&gt;
		-- args table, or tries to change an existing value.&lt;br /&gt;
		if options.readOnly then&lt;br /&gt;
			error(&lt;br /&gt;
				&amp;#039;could not write to argument table key &amp;quot;&amp;#039;&lt;br /&gt;
					.. tostring(key)&lt;br /&gt;
					.. &amp;#039;&amp;quot;; the table is read-only&amp;#039;,&lt;br /&gt;
				2&lt;br /&gt;
			)&lt;br /&gt;
		elseif options.noOverwrite and args[key] ~= nil then&lt;br /&gt;
			error(&lt;br /&gt;
				&amp;#039;could not write to argument table key &amp;quot;&amp;#039;&lt;br /&gt;
					.. tostring(key)&lt;br /&gt;
					.. &amp;#039;&amp;quot;; overwriting existing arguments is not permitted&amp;#039;,&lt;br /&gt;
				2&lt;br /&gt;
			)&lt;br /&gt;
		elseif val == nil then&lt;br /&gt;
			--[[&lt;br /&gt;
			-- If the argument is to be overwritten with nil, we need to erase&lt;br /&gt;
			-- the value in metaArgs, so that __index, __pairs and __ipairs do&lt;br /&gt;
			-- not use a previous existing value, if present; and we also need&lt;br /&gt;
			-- to memoize the nil in nilArgs, so that the value isn&amp;#039;t looked&lt;br /&gt;
			-- up in the argument tables if it is accessed again.&lt;br /&gt;
			--]]&lt;br /&gt;
			metaArgs[key] = nil&lt;br /&gt;
			nilArgs[key] = true&lt;br /&gt;
		else&lt;br /&gt;
			metaArgs[key] = val&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	metatable.__pairs = function ()&lt;br /&gt;
		-- Called when pairs is run on the args table.&lt;br /&gt;
		if not metatable.donePairs then&lt;br /&gt;
			mergeArgs(pairs, argTables)&lt;br /&gt;
			metatable.donePairs = true&lt;br /&gt;
			metatable.doneIpairs = true&lt;br /&gt;
		end&lt;br /&gt;
		return pairs(metaArgs)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	metatable.__ipairs = function ()&lt;br /&gt;
		-- Called when ipairs is run on the args table.&lt;br /&gt;
		if not metatable.doneIpairs then&lt;br /&gt;
			mergeArgs(ipairs, argTables)&lt;br /&gt;
			metatable.doneIpairs = true&lt;br /&gt;
		end&lt;br /&gt;
		return ipairs(metaArgs)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return args&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return arguments&lt;/div&gt;</description>
			<pubDate>Mon, 20 Jul 2026 23:19:13 GMT</pubDate>
			<dc:creator>Marie</dc:creator>
			<comments>https://regio.w.kmwc.org/w/Module_talk:Arguments</comments>
		</item>
		<item>
			<title>Module:Category handler</title>
			<link>https://regio.w.kmwc.org/index.php?title=Module:Category_handler&amp;diff=20&amp;oldid=0</link>
			<guid isPermaLink="false">https://regio.w.kmwc.org/index.php?title=Module:Category_handler&amp;diff=20&amp;oldid=0</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Marie&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new mw-userlink&quot; title=&quot;User:Marie (page does not exist)&quot;&gt;&lt;bdi&gt;Marie&lt;/bdi&gt;&lt;/a&gt; imported &lt;a href=&quot;/w/Module:Category_handler&quot; title=&quot;Module:Category handler&quot;&gt;Module:Category handler&lt;/a&gt; by file upload (1 revision)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;----------------------------------------------------------------------------------------------------------&lt;br /&gt;
--                                                                                                      --&lt;br /&gt;
--                                          CATEGORY HANDLER                                            --&lt;br /&gt;
--                                                                                                      --&lt;br /&gt;
--      This module implements the {{category handler}} template in Lua, with a few improvements: all   --&lt;br /&gt;
--      namespaces and all namespace aliases are supported, and namespace names are detected            --&lt;br /&gt;
--      automatically for the local wiki. This module requires [[Module:Namespace detect]] and          --&lt;br /&gt;
--      [[Module:Yesno]] to be available on the local wiki. It can be configured for different wikis    --&lt;br /&gt;
--      by altering the values in the &amp;quot;cfg&amp;quot; table.                                                      --&lt;br /&gt;
--                                                                                                      --&lt;br /&gt;
----------------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------------&lt;br /&gt;
--                                          Configuration data                                          --&lt;br /&gt;
--                      Language-specific parameter names and values can be set here.                   --&lt;br /&gt;
----------------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local cfg = {}&lt;br /&gt;
&lt;br /&gt;
-- The following config values set the names of parameters that suppress categorisation. They are used&lt;br /&gt;
-- with Module:Yesno, and work as follows:&lt;br /&gt;
--&lt;br /&gt;
-- cfg.nocat:&lt;br /&gt;
-- Result of yesno(args[cfg.nocat])         Effect&lt;br /&gt;
-- true                                     Categorisation is suppressed&lt;br /&gt;
-- false                                    Categorisation is allowed, and the blacklist check is skipped&lt;br /&gt;
-- nil                                      Categorisation is allowed&lt;br /&gt;
--&lt;br /&gt;
-- cfg.categories:&lt;br /&gt;
-- Result of yesno(args[cfg.categories])    Effect&lt;br /&gt;
-- true                                     Categorisation is allowed, and the blacklist check is skipped&lt;br /&gt;
-- false                                    Categorisation is suppressed&lt;br /&gt;
-- nil                                      Categorisation is allowed&lt;br /&gt;
cfg.nocat = &amp;#039;nocat&amp;#039;    &lt;br /&gt;
cfg.categories = &amp;#039;categories&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- The parameter name for the legacy &amp;quot;category2&amp;quot; parameter. This skips the blacklist if set to the&lt;br /&gt;
-- cfg.category2Yes value, and suppresses categorisation if present but equal to anything other than&lt;br /&gt;
-- cfg.category2Yes or cfg.category2Negative.&lt;br /&gt;
cfg.category2 = &amp;#039;category2&amp;#039;&lt;br /&gt;
cfg.category2Yes = &amp;#039;yes&amp;#039;&lt;br /&gt;
cfg.category2Negative = &amp;#039;¬&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg.subpage is the parameter name to specify how to behave on subpages. cfg.subpageNo is the value to&lt;br /&gt;
-- specify to not categorise on subpages; cfg.only is the value to specify to only categorise on subpages.&lt;br /&gt;
cfg.subpage = &amp;#039;subpage&amp;#039;&lt;br /&gt;
cfg.subpageNo = &amp;#039;no&amp;#039;&lt;br /&gt;
cfg.subpageOnly = &amp;#039;only&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- The parameter for data to return in all namespaces.&lt;br /&gt;
cfg.all = &amp;#039;all&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- The parameter name for data to return if no data is specified for the namespace that is detected. This&lt;br /&gt;
-- must be the same as the cfg.other parameter in [[Module:Namespace detect]].&lt;br /&gt;
cfg.other = &amp;#039;other&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- The parameter name used to specify a page other than the current page; used for testing and&lt;br /&gt;
-- demonstration. This must be the same as the cfg.page parameter in [[Module:Namespace detect]].&lt;br /&gt;
cfg.page = &amp;#039;page&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- The categorisation blacklist. Pages that match Lua patterns in this list will not be categorised.&lt;br /&gt;
-- (However, see the explanation of cfg.nocat, cfg.categories and cfg.category2 for some exceptions.)&lt;br /&gt;
-- If the namespace name has a space in, it must be written with an underscore, e.g. &amp;quot;Wikipedia_talk&amp;quot;.&lt;br /&gt;
-- Other parts of the title can have either underscores or spaces.&lt;br /&gt;
cfg.blacklist = {&lt;br /&gt;
    &amp;#039;^Main Page$&amp;#039;, -- don&amp;#039;t categorise the main page.&lt;br /&gt;
    &lt;br /&gt;
    -- Don&amp;#039;t categorise the following pages or their subpages.&lt;br /&gt;
    &amp;#039;^Wikipedia:Cascade%-protected items$&amp;#039;,&lt;br /&gt;
    &amp;#039;^Wikipedia:Cascade%-protected items/.*$&amp;#039;,&lt;br /&gt;
    &amp;#039;^User:UBX$&amp;#039;, -- The userbox &amp;quot;template&amp;quot; space.&lt;br /&gt;
    &amp;#039;^User:UBX/.*$&amp;#039;,&lt;br /&gt;
    &amp;#039;^User_talk:UBX$&amp;#039;,&lt;br /&gt;
    &amp;#039;^User_talk:UBX/.*$&amp;#039;,&lt;br /&gt;
    &lt;br /&gt;
    -- Don&amp;#039;t categorise subpages of these pages, but allow&lt;br /&gt;
    -- categorisation of the base page.&lt;br /&gt;
    &amp;#039;^Wikipedia:Template messages/.+$&amp;#039;,&lt;br /&gt;
    &lt;br /&gt;
    &amp;#039;/[aA]rchive&amp;#039; -- Don&amp;#039;t categorise archives.&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- This is a table of namespaces to categorise by default. They should be in the format of parameter&lt;br /&gt;
-- names accepted by [[Module:Namespace detect]].&lt;br /&gt;
cfg.defaultNamespaces = {&lt;br /&gt;
    &amp;#039;main&amp;#039;,&lt;br /&gt;
    &amp;#039;file&amp;#039;,&lt;br /&gt;
    &amp;#039;help&amp;#039;,&lt;br /&gt;
    &amp;#039;category&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------------&lt;br /&gt;
--                                          End configuration data                                      --&lt;br /&gt;
----------------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- Get dependent modules&lt;br /&gt;
local nsDetect = require(&amp;#039;Module:Namespace detect&amp;#039;)&lt;br /&gt;
local yesno = require(&amp;#039;Module:Yesno&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------------&lt;br /&gt;
--                                          Local functions                                             --&lt;br /&gt;
--      The following are internal functions, which we do not want to be accessible from other modules. --&lt;br /&gt;
----------------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- Find whether we need to return a category or not.&lt;br /&gt;
local function needsCategory(pageObject, args)&lt;br /&gt;
    -- Don&amp;#039;t categorise if the relevant options are set.&lt;br /&gt;
    if yesno(args[cfg.nocat])&lt;br /&gt;
        or yesno(args[cfg.categories]) == false&lt;br /&gt;
        or (&lt;br /&gt;
            args[cfg.category2] &lt;br /&gt;
            and args[cfg.category2] ~= cfg.category2Yes &lt;br /&gt;
            and args[cfg.category2] ~= cfg.category2Negative&lt;br /&gt;
        )&lt;br /&gt;
    then&lt;br /&gt;
        return false&lt;br /&gt;
    end&lt;br /&gt;
    -- If there is no pageObject available, then that either means that we are over&lt;br /&gt;
    -- the expensive function limit or that the title specified was invalid. Invalid&lt;br /&gt;
    -- titles will probably only be a problem during testing, so we choose the best&lt;br /&gt;
    -- fallback for being over the expensive function limit. The fallback behaviour&lt;br /&gt;
    -- of the old template was to assume the page was not a subpage, so we will do&lt;br /&gt;
    -- the same here.&lt;br /&gt;
    if args[cfg.subpage] == cfg.subpageNo and pageObject and pageObject.isSubpage then&lt;br /&gt;
        return false&lt;br /&gt;
    end&lt;br /&gt;
    if args[cfg.subpage] == cfg.subpageOnly &lt;br /&gt;
        and (not pageObject or (pageObject and not pageObject.isSubpage))&lt;br /&gt;
    then&lt;br /&gt;
        return false&lt;br /&gt;
    end&lt;br /&gt;
    return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Find whether we need to check the blacklist or not.&lt;br /&gt;
local function needsBlacklistCheck(args)&lt;br /&gt;
    if yesno(args[cfg.nocat]) == false&lt;br /&gt;
        or yesno(args[cfg.categories]) == true&lt;br /&gt;
        or args[cfg.category2] == cfg.category2Yes&lt;br /&gt;
    then&lt;br /&gt;
        return false&lt;br /&gt;
    else&lt;br /&gt;
        return true&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Find whether any namespace parameters have been specified.&lt;br /&gt;
-- Mappings is the table of parameter mappings taken from&lt;br /&gt;
-- [[Module:Namespace detect]].&lt;br /&gt;
local function nsParamsExist(mappings, args)&lt;br /&gt;
    if args[cfg.all] or args[cfg.other] then&lt;br /&gt;
        return true&lt;br /&gt;
    end&lt;br /&gt;
    for ns, params in pairs(mappings) do&lt;br /&gt;
        for i, param in ipairs(params) do&lt;br /&gt;
            if args[param] then&lt;br /&gt;
                return true&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------------&lt;br /&gt;
--                                          Global functions                                            --&lt;br /&gt;
--      The following functions are global, because we want them to be accessible from #invoke and      --&lt;br /&gt;
--      from other Lua modules.                                                                         --&lt;br /&gt;
----------------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Find if a string matches the blacklist. Returns the match if one is found, or nil otherwise.&lt;br /&gt;
-- Input should be a page title with a namespace prefix, e.g. &amp;quot;Wikipedia talk:Articles for deletion&amp;quot;.&lt;br /&gt;
function p.matchesBlacklist(page)&lt;br /&gt;
    if type(page) ~= &amp;#039;string&amp;#039; then return end&lt;br /&gt;
    for i, pattern in ipairs(cfg.blacklist) do&lt;br /&gt;
        local match = mw.ustring.match(page, pattern)&lt;br /&gt;
        if match then&lt;br /&gt;
            return match&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- The main structure of the module. Checks whether we need to categorise,&lt;br /&gt;
-- and then passes the relevant arguments to [[Module:Namespace detect]].&lt;br /&gt;
function p._main(args)&lt;br /&gt;
    -- Get the page object and argument mappings from&lt;br /&gt;
    -- [[Module:Namespace detect]], to save us from having to rewrite the&lt;br /&gt;
    -- code.&lt;br /&gt;
    local pageObject = nsDetect.getPageObject(args[cfg.page])&lt;br /&gt;
    local mappings = nsDetect.getParamMappings()&lt;br /&gt;
    &lt;br /&gt;
    if not needsCategory(pageObject, args) then return end&lt;br /&gt;
    &lt;br /&gt;
    local ret = &amp;#039;&amp;#039;&lt;br /&gt;
    -- Check blacklist if necessary.&lt;br /&gt;
    if not needsBlacklistCheck(args) or not p.matchesBlacklist(pageObject.prefixedText) then&lt;br /&gt;
        if not nsParamsExist(mappings, args) then&lt;br /&gt;
            -- No namespace parameters exist; basic usage. Pass args[1] to&lt;br /&gt;
            -- [[Module:Namespace detect]] using the default namespace&lt;br /&gt;
            -- parameters, and return the result.&lt;br /&gt;
            local ndargs = {}&lt;br /&gt;
            for _, ndarg in ipairs(cfg.defaultNamespaces) do&lt;br /&gt;
                ndargs[ndarg] = args[1]&lt;br /&gt;
            end&lt;br /&gt;
            ndargs.page = args.page&lt;br /&gt;
            ndargs.demospace = args.demospace&lt;br /&gt;
            local ndresult = nsDetect._main(ndargs)&lt;br /&gt;
            if ndresult then&lt;br /&gt;
                ret = ret .. ndresult&lt;br /&gt;
            end&lt;br /&gt;
        else&lt;br /&gt;
            -- Namespace parameters exist; advanced usage.&lt;br /&gt;
            -- If the all parameter is specified, return it.&lt;br /&gt;
            local all = args.all&lt;br /&gt;
            if type(all) == &amp;#039;string&amp;#039; then&lt;br /&gt;
                ret = ret .. all&lt;br /&gt;
            end&lt;br /&gt;
            &lt;br /&gt;
            -- Get the arguments to pass to [[Module:Namespace detect]].&lt;br /&gt;
            local ndargs = {}&lt;br /&gt;
            for ns, params in pairs(mappings) do&lt;br /&gt;
                for _, param in ipairs(params) do&lt;br /&gt;
                    ndargs[param] = args[param] or args[cfg.other] or nil&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
            ndargs.other = args.other&lt;br /&gt;
            ndargs.page = args.page&lt;br /&gt;
            ndargs.demospace = args.demospace&lt;br /&gt;
            &lt;br /&gt;
            local data = nsDetect._main(ndargs)&lt;br /&gt;
            &lt;br /&gt;
            -- Work out what to return based on the result of the namespace detect call.&lt;br /&gt;
            local datanum = tonumber(data)&lt;br /&gt;
            if type(datanum) == &amp;#039;number&amp;#039; then&lt;br /&gt;
                -- &amp;quot;data&amp;quot; is a number, so return that positional parameter.&lt;br /&gt;
                -- Remove non-positive integer values, as only positive integers&lt;br /&gt;
                -- from 1-10 were used with the old template.&lt;br /&gt;
                if datanum &amp;gt; 0 and math.floor(datanum) == datanum then&lt;br /&gt;
                    local dataArg = args[datanum]&lt;br /&gt;
                    if type(dataArg) == &amp;#039;string&amp;#039; then&lt;br /&gt;
                        ret = ret .. dataArg&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
            else&lt;br /&gt;
                -- &amp;quot;data&amp;quot; is not a number, so return it as it is.&lt;br /&gt;
                if type(data) == &amp;#039;string&amp;#039; then&lt;br /&gt;
                    ret = ret .. data&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
    -- If called via #invoke, use the args passed into the invoking&lt;br /&gt;
    -- template, or the args passed to #invoke if any exist. Otherwise&lt;br /&gt;
    -- assume args are being passed directly in.&lt;br /&gt;
    local origArgs&lt;br /&gt;
    if frame == mw.getCurrentFrame() then&lt;br /&gt;
        origArgs = frame:getParent().args&lt;br /&gt;
        for k, v in pairs(frame.args) do&lt;br /&gt;
            origArgs = frame.args&lt;br /&gt;
            break&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        origArgs = frame&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Trim whitespace and remove blank arguments for the following args:&lt;br /&gt;
    -- 1, 2, 3 etc., &amp;quot;nocat&amp;quot;, &amp;quot;categories&amp;quot;, &amp;quot;subpage&amp;quot;, and &amp;quot;page&amp;quot;.&lt;br /&gt;
    local args = {}&lt;br /&gt;
    for k, v in pairs(origArgs) do&lt;br /&gt;
        if type(v) == &amp;#039;string&amp;#039; then&lt;br /&gt;
            v = mw.text.trim(v) -- Trim whitespace.&lt;br /&gt;
        end&lt;br /&gt;
        if type(k) == &amp;#039;number&amp;#039;&lt;br /&gt;
            or k == cfg.nocat&lt;br /&gt;
            or k == cfg.categories&lt;br /&gt;
            or k == cfg.subpage&lt;br /&gt;
            or k == cfg.page&lt;br /&gt;
        then&lt;br /&gt;
            if v ~= &amp;#039;&amp;#039; then&lt;br /&gt;
                args[k] = v&lt;br /&gt;
            end&lt;br /&gt;
        else&lt;br /&gt;
            args[k] = v&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    -- Lower-case &amp;quot;nocat&amp;quot;, &amp;quot;categories&amp;quot;, &amp;quot;category2&amp;quot;, and &amp;quot;subpage&amp;quot;. These&lt;br /&gt;
    -- parameters are put in lower case whenever they appear in the old&lt;br /&gt;
    -- template, so we can just do it once here and save ourselves some work.&lt;br /&gt;
    local lowercase = {cfg.nocat, cfg.categories, cfg.category2, cfg.subpage}&lt;br /&gt;
    for _, v in ipairs(lowercase) do&lt;br /&gt;
        local argVal = args[v]&lt;br /&gt;
        if type(argVal) == &amp;#039;string&amp;#039; then&lt;br /&gt;
            args[v] = mw.ustring.lower(argVal)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    return p._main(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</description>
			<pubDate>Mon, 20 Jul 2026 23:19:13 GMT</pubDate>
			<dc:creator>Marie</dc:creator>
			<comments>https://regio.w.kmwc.org/w/Module_talk:Category_handler</comments>
		</item>
		<item>
			<title>Main Page</title>
			<link>https://regio.w.kmwc.org/index.php?title=Main_Page&amp;diff=14&amp;oldid=8</link>
			<guid isPermaLink="false">https://regio.w.kmwc.org/index.php?title=Main_Page&amp;diff=14&amp;oldid=8</guid>
			<description>&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 23:16, 20 July 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{Front/banner}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Regio&amp;#039;&amp;#039;&amp;#039; is a solo worldbuilding project set in a fictional near-apocalyptic world. During the [[War of All Colors]], the nations of the world developed a wonder-weapon which could singlehandedly end the war… and the world. With their deployment, swathes of the world became uninhabitable due to the influence of the [[Wave Bomb|Wave Bombs]] and the associated [[Wave Decay]]. Society around the world has collapsed, save for a few pocket regions, where small communities, cities, sometimes even nations continue to lead a somewhat normal existence.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Regio&amp;#039;&amp;#039;&amp;#039; is a solo worldbuilding project set in a fictional near-apocalyptic world. During the [[War of All Colors]], the nations of the world developed a wonder-weapon which could singlehandedly end the war… and the world. With their deployment, swathes of the world became uninhabitable due to the influence of the [[Wave Bomb|Wave Bombs]] and the associated [[Wave Decay]]. Society around the world has collapsed, save for a few pocket regions, where small communities, cities, sometimes even nations continue to lead a somewhat normal existence.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key regio:diff:1.41:old-8:rev-14:php=table --&gt;
&lt;/table&gt;</description>
			<pubDate>Mon, 20 Jul 2026 23:16:47 GMT</pubDate>
			<dc:creator>Marie</dc:creator>
			<comments>https://regio.w.kmwc.org/w/Talk:Main_Page</comments>
		</item>
		<item>
			<title>Template:Front/banner</title>
			<link>https://regio.w.kmwc.org/index.php?title=Template:Front/banner&amp;diff=13&amp;oldid=6</link>
			<guid isPermaLink="false">https://regio.w.kmwc.org/index.php?title=Template:Front/banner&amp;diff=13&amp;oldid=6</guid>
			<description>&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 23:16, 20 July 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-multi&quot; lang=&quot;en&quot;&gt;(3 intermediate revisions by the same user not shown)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;div id=&quot;mp-topbanner&quot; style=&quot;display:flex;flex-direction:row;width:100%;background:#&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;f5faff&lt;/del&gt;;border:1px solid #ccc;justify-content:space-evenly;align-items:center;&quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;div id=&quot;mp-topbanner&quot; style=&quot;display:flex;flex-direction:row;width:100%;background:#&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;FFFCF1&lt;/ins&gt;;border:1px solid #ccc;justify-content:space-evenly;align-items:center;&quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;div style=&amp;quot;display:flex;flex-direction:column;text-align:center;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;div style=&amp;quot;display:flex;flex-direction:column;text-align:center;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[File:&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Niovewikithing&lt;/del&gt;.png|&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;300px&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[File:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Regio wiki banner&lt;/ins&gt;.png|&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;600px&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;div style=&amp;quot;font-size:200%&amp;quot;&amp;gt;A world looking for structure in ruin…&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;div style=&amp;quot;font-size:200%&amp;quot;&amp;gt;A world looking for structure in ruin…&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;div style=&amp;quot;font-size:120%;&amp;quot;&amp;gt;Welcome the Regio wiki!&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;div style=&amp;quot;font-size:120%;&amp;quot;&amp;gt;Welcome the Regio wiki!&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key regio:diff:1.41:old-6:rev-13:php=table --&gt;
&lt;/table&gt;</description>
			<pubDate>Mon, 20 Jul 2026 23:16:21 GMT</pubDate>
			<dc:creator>Marie</dc:creator>
			<comments>https://regio.w.kmwc.org/w/Template_talk:Front/banner</comments>
		</item>
		<item>
			<title>File:Regio wiki banner.png</title>
			<link>https://regio.w.kmwc.org/index.php?title=File:Regio_wiki_banner.png&amp;diff=9&amp;oldid=0</link>
			<guid isPermaLink="false">https://regio.w.kmwc.org/index.php?title=File:Regio_wiki_banner.png&amp;diff=9&amp;oldid=0</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Marie&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new mw-userlink&quot; title=&quot;User:Marie (page does not exist)&quot;&gt;&lt;bdi&gt;Marie&lt;/bdi&gt;&lt;/a&gt; uploaded &lt;a href=&quot;/w/File:Regio_wiki_banner.png&quot; title=&quot;File:Regio wiki banner.png&quot;&gt;File:Regio wiki banner.png&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;/div&gt;</description>
			<pubDate>Mon, 20 Jul 2026 23:14:23 GMT</pubDate>
			<dc:creator>Marie</dc:creator>
			<comments>https://regio.w.kmwc.org/w/File_talk:Regio_wiki_banner.png</comments>
		</item>
		<item>
			<title>Main Page</title>
			<link>https://regio.w.kmwc.org/index.php?title=Main_Page&amp;diff=8&amp;oldid=2</link>
			<guid isPermaLink="false">https://regio.w.kmwc.org/index.php?title=Main_Page&amp;diff=8&amp;oldid=2</guid>
			<description>&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 16:39, 20 July 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-multi&quot; lang=&quot;en&quot;&gt;(One intermediate revision by the same user not shown)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;strong&amp;gt;&lt;/del&gt;Regio&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/strong&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&#039;&lt;/ins&gt;Regio&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&#039; is a solo worldbuilding project set in a fictional near-apocalyptic world. During the [[War of All Colors]], the nations of the world developed a wonder-weapon which could singlehandedly end the war… and the world. With their deployment, swathes of the world became uninhabitable due to the influence of the [[Wave Bomb|Wave Bombs]] and the associated [[Wave Decay]]. Society around the world has collapsed, save for a few pocket regions, where small communities, cities, sometimes even nations continue to lead a somewhat normal existence.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key regio:diff:1.41:old-2:rev-8:php=table --&gt;
&lt;/table&gt;</description>
			<pubDate>Mon, 20 Jul 2026 16:39:28 GMT</pubDate>
			<dc:creator>Marie</dc:creator>
			<comments>https://regio.w.kmwc.org/w/Talk:Main_Page</comments>
		</item>
		<item>
			<title>Template:Front/banner</title>
			<link>https://regio.w.kmwc.org/index.php?title=Template:Front/banner&amp;diff=6&amp;oldid=4</link>
			<guid isPermaLink="false">https://regio.w.kmwc.org/index.php?title=Template:Front/banner&amp;diff=6&amp;oldid=4</guid>
			<description>&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:50, 20 July 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-multi&quot; lang=&quot;en&quot;&gt;(One intermediate revision by the same user not shown)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l2&quot;&gt;Line 2:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 2:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;div style=&amp;quot;display:flex;flex-direction:column;text-align:center;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;div style=&amp;quot;display:flex;flex-direction:column;text-align:center;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[File:Niovewikithing.png|300px]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[File:Niovewikithing.png|300px]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;div style=&quot;font-size:200%&quot;&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Niove: The Spring Flame&lt;/del&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;div style=&quot;font-size:200%&quot;&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;A world looking for structure in ruin…&lt;/ins&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;div style=&quot;font-size:120%;&quot;&amp;gt;Welcome the &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Niove &lt;/del&gt;wiki!&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;div style=&quot;font-size:120%;&quot;&amp;gt;Welcome the &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Regio &lt;/ins&gt;wiki!&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;div id=&amp;quot;articlecount&amp;quot; style=&amp;quot;font-size:80%;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;div id=&amp;quot;articlecount&amp;quot; style=&amp;quot;font-size:80%;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;With [[Special:Statistics|{{NUMBEROFARTICLES}}]] articles and [[Special:Statistics|{{NUMBEROFEDITS}}]] edits since &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;March &lt;/del&gt;of &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;2024&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;With [[Special:Statistics|{{NUMBEROFARTICLES}}]] articles and [[Special:Statistics|{{NUMBEROFEDITS}}]] edits since &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;July &lt;/ins&gt;of &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;2026&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key regio:diff:1.41:old-4:rev-6:php=table --&gt;
&lt;/table&gt;</description>
			<pubDate>Mon, 20 Jul 2026 14:50:51 GMT</pubDate>
			<dc:creator>Marie</dc:creator>
			<comments>https://regio.w.kmwc.org/w/Template_talk:Front/banner</comments>
		</item>
		<item>
			<title>Template:Front/banner</title>
			<link>https://regio.w.kmwc.org/index.php?title=Template:Front/banner&amp;diff=4&amp;oldid=0</link>
			<guid isPermaLink="false">https://regio.w.kmwc.org/index.php?title=Template:Front/banner&amp;diff=4&amp;oldid=0</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Marie&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new mw-userlink&quot; title=&quot;User:Marie (page does not exist)&quot;&gt;&lt;bdi&gt;Marie&lt;/bdi&gt;&lt;/a&gt; imported &lt;a href=&quot;/w/Template:Front/banner&quot; title=&quot;Template:Front/banner&quot;&gt;Template:Front/banner&lt;/a&gt; by file upload (1 revision)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;div id=&amp;quot;mp-topbanner&amp;quot; style=&amp;quot;display:flex;flex-direction:row;width:100%;background:#f5faff;border:1px solid #ccc;justify-content:space-evenly;align-items:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-direction:column;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Niovewikithing.png|300px]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:200%&amp;quot;&amp;gt;Niove: The Spring Flame&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:120%;&amp;quot;&amp;gt;Welcome the Niove wiki!&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;articlecount&amp;quot; style=&amp;quot;font-size:80%;&amp;quot;&amp;gt;&lt;br /&gt;
With [[Special:Statistics|{{NUMBEROFARTICLES}}]] articles and [[Special:Statistics|{{NUMBEROFEDITS}}]] edits since March of 2024.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</description>
			<pubDate>Mon, 20 Jul 2026 14:49:33 GMT</pubDate>
			<dc:creator>Marie</dc:creator>
			<comments>https://regio.w.kmwc.org/w/Template_talk:Front/banner</comments>
		</item>
		<item>
			<title>User:Marie</title>
			<link>https://regio.w.kmwc.org/w/User:Marie</link>
			<guid isPermaLink="false">https://regio.w.kmwc.org/w/User:Marie</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Autumn&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new mw-userlink&quot; title=&quot;User:Autumn (page does not exist)&quot;&gt;&lt;bdi&gt;Autumn&lt;/bdi&gt;&lt;/a&gt; changed group membership for &lt;a href=&quot;/index.php?title=User:Marie&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;User:Marie (page does not exist)&quot;&gt;Marie&lt;/a&gt; from (none) to administrator and interface administrator&lt;/p&gt;
</description>
			<pubDate>Mon, 20 Jul 2026 14:38:20 GMT</pubDate>
			<dc:creator>Autumn</dc:creator>
			<comments>https://regio.w.kmwc.org/w/User_talk:Marie</comments>
		</item>
		<item>
			<title>Main Page</title>
			<link>https://regio.w.kmwc.org/index.php?title=Main_Page&amp;diff=2&amp;oldid=1</link>
			<guid isPermaLink="false">https://regio.w.kmwc.org/index.php?title=Main_Page&amp;diff=2&amp;oldid=1</guid>
			<description>&lt;p&gt;Replaced content with &amp;quot;&amp;lt;strong&amp;gt;Regio&amp;lt;/strong&amp;gt;&amp;quot;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 23:03, 19 July 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;strong&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;MediaWiki has been installed.&lt;/del&gt;&amp;lt;/strong&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;strong&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Regio&lt;/ins&gt;&amp;lt;/strong&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Consult the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents User&#039;s Guide] for information on using the wiki software.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;== Getting started ==&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ MediaWiki release mailing list]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key regio:diff:1.41:old-1:rev-2:php=table --&gt;
&lt;/table&gt;</description>
			<pubDate>Sun, 19 Jul 2026 23:03:38 GMT</pubDate>
			<dc:creator>Marie</dc:creator>
			<comments>https://regio.w.kmwc.org/w/Talk:Main_Page</comments>
		</item>
		<item>
			<title>User:Marie</title>
			<link>https://regio.w.kmwc.org/w/User:Marie</link>
			<guid isPermaLink="false">https://regio.w.kmwc.org/w/User:Marie</guid>
			<description>&lt;p&gt;User account &lt;a href=&quot;/index.php?title=User:Marie&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new mw-userlink&quot; title=&quot;User:Marie (page does not exist)&quot;&gt;&lt;bdi&gt;Marie&lt;/bdi&gt;&lt;/a&gt; was created by &lt;a href=&quot;/index.php?title=User:Autumn&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new mw-userlink&quot; title=&quot;User:Autumn (page does not exist)&quot;&gt;&lt;bdi&gt;Autumn&lt;/bdi&gt;&lt;/a&gt;&lt;/p&gt;
</description>
			<pubDate>Sun, 19 Jul 2026 19:32:14 GMT</pubDate>
			<dc:creator>Autumn</dc:creator>
			<comments>https://regio.w.kmwc.org/w/User_talk:Marie</comments>
		</item>
</channel></rss>