<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://abzu.w.kmwc.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Roxanne</id>
	<title>Abzû - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://abzu.w.kmwc.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Roxanne"/>
	<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/w/Special:Contributions/Roxanne"/>
	<updated>2026-05-05T17:35:56Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Aglisic_script&amp;diff=3571</id>
		<title>Aglisic script</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Aglisic_script&amp;diff=3571"/>
		<updated>2026-01-10T08:48:35Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox writing system&lt;br /&gt;
| name      = Aglisic script&lt;br /&gt;
| altname   = &amp;lt;!-- 2ary name --&amp;gt;&lt;br /&gt;
| type      = Alphabet&lt;br /&gt;
| qid       =&lt;br /&gt;
| typedesc  = &amp;lt;!-- additional info after the general type --&amp;gt;&lt;br /&gt;
| typedesc-prefix  = &amp;lt;!-- additional info, such as an adjective, before the general type --&amp;gt;&lt;br /&gt;
| creator   = &amp;lt;!-- use instead of |jfamN= for artificially created writing systems --&amp;gt;&lt;br /&gt;
| date      = &amp;lt;!-- date created --&amp;gt;&lt;br /&gt;
| published = &amp;lt;!-- date published for shorthands and script reforms --&amp;gt;&lt;br /&gt;
| time      = {{circa|?}} – present&lt;br /&gt;
| official script =&lt;br /&gt;
| languages = [[Miremic languages]]&lt;br /&gt;
&lt;br /&gt;
| fam1      = &amp;lt;!-- use |famN= to specify parent writing systems --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| fam2      = &amp;lt;!-- up to 15 parent writing systems can be listed, fam1 being the oldest --&amp;gt;&lt;br /&gt;
| fam15     = &lt;br /&gt;
| print     = &amp;lt;!-- the print basis/model of a braille script --&amp;gt;&lt;br /&gt;
| sisters   = &amp;lt;!-- sister writing systems with common ancestors --&amp;gt;&lt;br /&gt;
| children  = &amp;lt;!-- child systems --&amp;gt;&lt;br /&gt;
| sample    = &amp;lt;!-- sample image without Image: prefix --&amp;gt;&lt;br /&gt;
| imagesize = &amp;lt;!-- size of sample image  --&amp;gt;&lt;br /&gt;
| caption   = &amp;lt;!-- description of sample image --&amp;gt;&lt;br /&gt;
| direction = Left-to-right&lt;br /&gt;
| direction comment =&lt;br /&gt;
| footnotes = &amp;lt;!-- some information about the writing system --&amp;gt;&lt;br /&gt;
| ipa-note  = &amp;lt;!-- set to `none` to cancel IPA warning --&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Aglisic script&#039;&#039;&#039;, ([[High Ciána language|High Ciána]] {{cs|ciana|êþíos áglisa}} &#039;&#039;êthíos áglisa&#039;&#039;) is a writing system used for various languages across [[Sharrat]].&lt;br /&gt;
&lt;br /&gt;
== Etymology ==&lt;br /&gt;
The name &amp;quot;Aglisic&amp;quot; comes from [[High Ciána language|High Ciána]] {{cs|ciana|áglisa}} meaning &amp;quot;of or related to the steppe&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Chart ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:90%&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Letter&lt;br /&gt;
!Codepoint&lt;br /&gt;
!Name in High Ciána&lt;br /&gt;
!Romanization&lt;br /&gt;
!Phoneme&lt;br /&gt;
!High Ciána value&lt;br /&gt;
!Aracinian&amp;lt;br&amp;gt;value&lt;br /&gt;
!Lailian&amp;lt;br&amp;gt;value&lt;br /&gt;
!Voylvurlic&amp;lt;br&amp;gt;value&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|a}}&lt;br /&gt;
|a&lt;br /&gt;
|{{Cs|ciana|á}}&lt;br /&gt;
|&#039;&#039;á&#039;&#039; &lt;br /&gt;
|/a/&lt;br /&gt;
|[a]&lt;br /&gt;
|[a]&lt;br /&gt;
|[a]&lt;br /&gt;
|[a]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|æ}}&lt;br /&gt;
|æ&lt;br /&gt;
|{{Cs|ciana|émeitra}}&lt;br /&gt;
|&#039;&#039;émeitra&#039;&#039;&lt;br /&gt;
|/ɛ/&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|[ɛ]&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|å}}&lt;br /&gt;
|å&lt;br /&gt;
|{{Cs|ciana|ómeitra}}&lt;br /&gt;
|&#039;&#039;ómeitra&#039;&#039;&lt;br /&gt;
|/ɔ/&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|[ɔ]&lt;br /&gt;
|[ɔ]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|k}}&lt;br /&gt;
|k&lt;br /&gt;
|{{Cs|ciana|ké}}&lt;br /&gt;
|&#039;&#039;cé&#039;&#039;&lt;br /&gt;
|/k/, /ts/, /s/&lt;br /&gt;
|[k]&lt;br /&gt;
|[k]&lt;br /&gt;
|[k]&lt;br /&gt;
|[k]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|x}}&lt;br /&gt;
|x&lt;br /&gt;
|{{Cs|ciana|óx}}&lt;br /&gt;
|&#039;&#039;óch&#039;&#039;&lt;br /&gt;
|/x/, /h/&lt;br /&gt;
|[x]&lt;br /&gt;
|[x]&lt;br /&gt;
|[x]&lt;br /&gt;
|[h]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|č}}&lt;br /&gt;
|č&lt;br /&gt;
|{{Cs|ciana|té}}&lt;br /&gt;
|&#039;&#039;té&#039;&#039;&lt;br /&gt;
|/tɕ/&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|[tʃ]&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|[tɕ]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|s}}&lt;br /&gt;
|s&lt;br /&gt;
|{{Cs|ciana|saé}}&lt;br /&gt;
|&#039;&#039;saé&#039;&#039;&lt;br /&gt;
|/s/&lt;br /&gt;
|[s]~[ɕ]&lt;br /&gt;
|[s]~[ʃ]&lt;br /&gt;
|[s]&lt;br /&gt;
|[s]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|š}}&lt;br /&gt;
|š&lt;br /&gt;
|{{Cs|ciana|sé}}&lt;br /&gt;
|&#039;&#039;sé&#039;&#039;&lt;br /&gt;
|/ɕ/&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|[ɕ]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|n}}&lt;br /&gt;
|n&lt;br /&gt;
|{{Cs|ciana|nén}}&lt;br /&gt;
|&#039;&#039;nén&#039;&#039;&lt;br /&gt;
|/n/&lt;br /&gt;
|[n]~[ŋ]~[Ṽ]&lt;br /&gt;
|[n]~[ŋ]&lt;br /&gt;
|[n]&lt;br /&gt;
|[n]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|ñ}}&lt;br /&gt;
|ñ&lt;br /&gt;
|{{Cs|ciana|nhén}}&lt;br /&gt;
|&#039;&#039;nhén&#039;&#039;&lt;br /&gt;
|/ɲ/&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|[ɲ]&lt;br /&gt;
|[j]&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|ŋ}}&lt;br /&gt;
|ŋ&lt;br /&gt;
|{{Cs|ciana|ngénk}}&lt;br /&gt;
|&#039;&#039;ngénc&#039;&#039;&lt;br /&gt;
|/ŋ/&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|[ŋ]&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|p}}&lt;br /&gt;
|p&lt;br /&gt;
|{{Cs|ciana|pé}}&lt;br /&gt;
|&#039;&#039;pé&#039;&#039;&lt;br /&gt;
|/p/&lt;br /&gt;
|[p]&lt;br /&gt;
|[p]&lt;br /&gt;
|[p]&lt;br /&gt;
|[p]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|t}}&lt;br /&gt;
|t&lt;br /&gt;
|{{Cs|ciana|taé}}&lt;br /&gt;
|&#039;&#039;taé&#039;&#039;&lt;br /&gt;
|/t/&lt;br /&gt;
|[t]~[tɕ]&lt;br /&gt;
|[t]&lt;br /&gt;
|[t]&lt;br /&gt;
|[t]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|þ}}&lt;br /&gt;
|þ&lt;br /&gt;
|{{Cs|ciana|þé}}&lt;br /&gt;
|&#039;&#039;thé&#039;&#039;&lt;br /&gt;
|/θ/&lt;br /&gt;
|[θ]&lt;br /&gt;
|[t]~[s]~[∅]&lt;br /&gt;
|[s]&lt;br /&gt;
|[θ]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|c}}&lt;br /&gt;
|c&lt;br /&gt;
|{{Cs|ciana|itsaé}}&lt;br /&gt;
|&#039;&#039;itsaé&#039;&#039;&lt;br /&gt;
|/ts/&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|[ts]&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|i}}&lt;br /&gt;
|i&lt;br /&gt;
|{{Cs|ciana|í}}&lt;br /&gt;
|&#039;&#039;í&#039;&#039;&lt;br /&gt;
|/i/&lt;br /&gt;
|[i]&lt;br /&gt;
|[i]&lt;br /&gt;
|[i]&lt;br /&gt;
|[i]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|f}}&lt;br /&gt;
|f&lt;br /&gt;
|{{Cs|ciana|fé}}&lt;br /&gt;
|&#039;&#039;fé&#039;&#039;&lt;br /&gt;
|/f/&lt;br /&gt;
|[f]&lt;br /&gt;
|[f]&lt;br /&gt;
|[f]&lt;br /&gt;
|[f]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|g}}&lt;br /&gt;
|g&lt;br /&gt;
|{{Cs|ciana|gé}}&lt;br /&gt;
|&#039;&#039;gé&#039;&#039;&lt;br /&gt;
|/g/&lt;br /&gt;
|[g]&lt;br /&gt;
|[g]&lt;br /&gt;
|[g]&lt;br /&gt;
|[g]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|dz}}&lt;br /&gt;
|dz&lt;br /&gt;
|{{Cs|ciana|idsaé}}&lt;br /&gt;
|&#039;&#039;idsaé&#039;&#039;&lt;br /&gt;
|/dz/&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|dž}}&lt;br /&gt;
|dž&lt;br /&gt;
|{{Cs|ciana|dé}}&lt;br /&gt;
|&#039;&#039;dé&#039;&#039;&lt;br /&gt;
|/dʑ/&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|[dʒ]&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|z}}&lt;br /&gt;
|z&lt;br /&gt;
|{{Cs|ciana|isaé}}&lt;br /&gt;
|&#039;&#039;isaé&#039;&#039;&lt;br /&gt;
|/z/&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|[z]~[ʒ]&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|[z]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|ž}}&lt;br /&gt;
|ž&lt;br /&gt;
|{{Cs|ciana|isé}}&lt;br /&gt;
|&#039;&#039;isé&#039;&#039;&lt;br /&gt;
|/ʑ/&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|[ʑ]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|m}}&lt;br /&gt;
|m&lt;br /&gt;
|{{Cs|ciana|mém}}&lt;br /&gt;
|&#039;&#039;mém&#039;&#039;&lt;br /&gt;
|/m/&lt;br /&gt;
|[m]~[Ṽ]&lt;br /&gt;
|[m]&lt;br /&gt;
|[m]&lt;br /&gt;
|[m]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|b}}&lt;br /&gt;
|b&lt;br /&gt;
|{{Cs|ciana|bé}}&lt;br /&gt;
|&#039;&#039;bé&#039;&#039;&lt;br /&gt;
|/b/&lt;br /&gt;
|[b]&lt;br /&gt;
|[b]&lt;br /&gt;
|[b]&lt;br /&gt;
|[b]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|d}}&lt;br /&gt;
|d&lt;br /&gt;
|{{Cs|ciana|daé}}&lt;br /&gt;
|&#039;&#039;daé&#039;&#039;&lt;br /&gt;
|/d/&lt;br /&gt;
|[d]~[dʑ]&lt;br /&gt;
|[d]&lt;br /&gt;
|[d]&lt;br /&gt;
|[d]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|ð}}&lt;br /&gt;
|ð&lt;br /&gt;
|{{Cs|ciana|ðé}}&lt;br /&gt;
|&#039;&#039;dhé&#039;&#039;&lt;br /&gt;
|/ð/&lt;br /&gt;
|[ð]&lt;br /&gt;
|[d]~[z]~[∅]&lt;br /&gt;
|[z]&lt;br /&gt;
|[ð]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|o}}&lt;br /&gt;
|o&lt;br /&gt;
|{{Cs|ciana|ó}}&lt;br /&gt;
|&#039;&#039;ó&#039;&#039;&lt;br /&gt;
|/o/&lt;br /&gt;
|[o]&lt;br /&gt;
|[o]&lt;br /&gt;
|[u]&lt;br /&gt;
|[o]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|l}}&lt;br /&gt;
|l&lt;br /&gt;
|{{Cs|ciana|lól}}&lt;br /&gt;
|&#039;&#039;lól&#039;&#039;&lt;br /&gt;
|/l/&lt;br /&gt;
|[l]&lt;br /&gt;
|[l]&lt;br /&gt;
|[l]&lt;br /&gt;
|[l]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|r}}&lt;br /&gt;
|r&lt;br /&gt;
|{{Cs|ciana|rór}}&lt;br /&gt;
|&#039;&#039;rór&#039;&#039;&lt;br /&gt;
|/r/&lt;br /&gt;
|[r]&lt;br /&gt;
|[r]&lt;br /&gt;
|[r]&lt;br /&gt;
|[r]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|h}}&lt;br /&gt;
|h&lt;br /&gt;
|{{Cs|ciana|ôú}}&lt;br /&gt;
|&#039;&#039;ôú&#039;&#039;&lt;br /&gt;
|/h/, &#039;&#039;modifier letter&#039;&#039;&lt;br /&gt;
|[∅]&lt;br /&gt;
|[∅]&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|&#039;&#039;denotes a long vowel&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|v}}&lt;br /&gt;
|v&lt;br /&gt;
|{{Cs|ciana|vé}}&lt;br /&gt;
|&#039;&#039;vé&#039;&#039;&lt;br /&gt;
|/v/&lt;br /&gt;
|[v]&lt;br /&gt;
|[v]&lt;br /&gt;
|[v]&lt;br /&gt;
|[v]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|u}}&lt;br /&gt;
|u&lt;br /&gt;
|{{Cs|ciana|óu}}&lt;br /&gt;
|&#039;&#039;óu&#039;&#039;&lt;br /&gt;
|/y/, /u/&lt;br /&gt;
|[y]~[u]&lt;br /&gt;
|[u]&lt;br /&gt;
|[y]&lt;br /&gt;
|[u]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|y}}&lt;br /&gt;
|y&lt;br /&gt;
|{{Cs|ciana|yáy}}&lt;br /&gt;
|&#039;&#039;yáy&#039;&#039;&lt;br /&gt;
|/j/&lt;br /&gt;
|[j]&lt;br /&gt;
|[j]&lt;br /&gt;
|[y]&lt;br /&gt;
|[j]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|e}}&lt;br /&gt;
|e&lt;br /&gt;
|{{Cs|ciana|é}}&lt;br /&gt;
|&#039;&#039;é&#039;&#039;&lt;br /&gt;
|/e/&lt;br /&gt;
|[e]&lt;br /&gt;
|[ə]&lt;br /&gt;
|[e]&lt;br /&gt;
|[e]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|w}}&lt;br /&gt;
|w&lt;br /&gt;
|{{Cs|ciana|mháu}}&lt;br /&gt;
|&#039;&#039;mháu&#039;&#039;&lt;br /&gt;
|/w/&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|[ɰ]&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|ks}}&lt;br /&gt;
|ks&lt;br /&gt;
|{{Cs|ciana|éksa}}&lt;br /&gt;
|&#039;&#039;éxa&#039;&#039;&lt;br /&gt;
|/ks/&lt;br /&gt;
|[ks]~[kɕ]&lt;br /&gt;
|&#039;&#039;loan words&#039;&#039;&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|ps}}&lt;br /&gt;
|ps&lt;br /&gt;
|{{Cs|ciana|épsa}}&lt;br /&gt;
|&#039;&#039;épsa&#039;&#039;&lt;br /&gt;
|/ps/&lt;br /&gt;
|[ps]~[pɕ]&lt;br /&gt;
|[ps]&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diacritcs (with letter a) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Letter&lt;br /&gt;
!Codepoint&lt;br /&gt;
!Name in High Ciána&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|á}}&lt;br /&gt;
|á&lt;br /&gt;
|&#039;&#039;á issíba&#039;&#039;&lt;br /&gt;
|stress, high pitch&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|à}}&lt;br /&gt;
|à&lt;br /&gt;
|&#039;&#039;á nóuva&#039;&#039;&lt;br /&gt;
|low pitch&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|ä}}&lt;br /&gt;
|ä&lt;br /&gt;
|&#039;&#039;á âgesmeta&#039;&#039;&lt;br /&gt;
|vowel separation&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|â}}&lt;br /&gt;
|â&lt;br /&gt;
|&#039;&#039;á braêliöna&#039;&#039;&lt;br /&gt;
|vowel is preaspirated with /h-/&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripts]]&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Template:Sister_project/styles.css&amp;diff=3570</id>
		<title>Template:Sister project/styles.css</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Template:Sister_project/styles.css&amp;diff=3570"/>
		<updated>2026-01-10T08:42:19Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* {{pp-template|small=yes}} */&lt;br /&gt;
@media print {&lt;br /&gt;
	body.ns-0 .sistersitebox {&lt;br /&gt;
		display: none !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The Wiktionary logo needs a white background in dark mode since it is a transparent SVG */&lt;br /&gt;
@media screen {&lt;br /&gt;
	html.skin-theme-clientpref-night .sistersitebox img[src*=&amp;quot;Wiktionary-logo-en-v2.svg&amp;quot;] {&lt;br /&gt;
		filter: invert(1) brightness(55%) contrast(250%) hue-rotate(180deg);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media screen and (prefers-color-scheme: dark) {&lt;br /&gt;
	html.skin-theme-clientpref-os .sistersitebox img[src*=&amp;quot;Wiktionary-logo-en-v2.svg&amp;quot;] {&lt;br /&gt;
		filter: invert(1) brightness(55%) contrast(250%) hue-rotate(180deg);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Module:IPA&amp;diff=3568</id>
		<title>Module:IPA</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Module:IPA&amp;diff=3568"/>
		<updated>2026-01-10T08:42:18Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;require(&#039;strict&#039;)&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local function multiFind(s, patterns, init)&lt;br /&gt;
	local i, j = mw.ustring.find(s, patterns[1], init)&lt;br /&gt;
	for n = 2, #patterns do&lt;br /&gt;
		local i2, j2 = mw.ustring.find(s, patterns[n], init)&lt;br /&gt;
		if i2 and (not i or i2 &amp;lt; i) then&lt;br /&gt;
			i, j = i2, j2&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return i, j&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wrapAtSpaces(s)&lt;br /&gt;
	return mw.ustring.gsub(s, &#039;(%s+)&#039;, &#039;&amp;lt;span class=&amp;quot;wrap&amp;quot;&amp;gt;%1&amp;lt;/span&amp;gt;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wrapAtSpacesSafely(s)&lt;br /&gt;
	local patterns = {&lt;br /&gt;
		&#039;%[%[[^%]|]-%s[^%]|]-|&#039;, -- Piped links&lt;br /&gt;
		&#039;&amp;lt;/?[A-Za-z][^&amp;gt;]-%s[^&amp;gt;]-&amp;gt;&#039; -- HTML tags&lt;br /&gt;
	}&lt;br /&gt;
	s = mw.ustring.gsub(s, &#039;%[%[([^%]|]-%s[^%]|]-)%]%]&#039;, &#039;[[%1|%1]]&#039;) -- Pipe all links&lt;br /&gt;
	local t = {}&lt;br /&gt;
	local init&lt;br /&gt;
	while true do&lt;br /&gt;
		local i, j = multiFind(s, patterns, init)&lt;br /&gt;
		if not i then&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
		local pre = wrapAtSpaces(mw.ustring.sub(s, init, i - 1)) -- What precedes the match&lt;br /&gt;
		table.insert(t, pre)&lt;br /&gt;
		table.insert(t, mw.ustring.sub(s, i, j)) -- The match&lt;br /&gt;
		init = j + 1&lt;br /&gt;
	end&lt;br /&gt;
	local post = wrapAtSpaces(mw.ustring.sub(s, init)) -- What follows the last match&lt;br /&gt;
	table.insert(t, post)&lt;br /&gt;
	return table.concat(t)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function checkNamespace(isDebug)&lt;br /&gt;
	return isDebug or require(&#039;Module:Category handler&#039;).main({ true })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderCats(cats, isDebug)&lt;br /&gt;
	if not cats[1] or not checkNamespace(isDebug) then&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	local t = {}&lt;br /&gt;
	for _, v in ipairs(cats) do&lt;br /&gt;
		table.insert(t, string.format(&lt;br /&gt;
			&#039;[[%sCategory:%s]]&#039;,&lt;br /&gt;
			isDebug and &#039;:&#039; or &#039;&#039;,&lt;br /&gt;
			v&lt;br /&gt;
		))&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(t)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function resolveSynonym(s)&lt;br /&gt;
	return mw.loadData(&#039;Module:Lang/ISO 639 synonyms&#039;)[s] or s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function splitTag(s)&lt;br /&gt;
	local langCode = s:gsub(&#039;%-.*&#039;, &#039;&#039;):lower()&lt;br /&gt;
	langCode = resolveSynonym(langCode)&lt;br /&gt;
	local regionCode = s:match(&#039;%-(.+)&#039;)&lt;br /&gt;
	local isPrivate = regionCode and regionCode:sub(1, 2) == &#039;x-&#039;&lt;br /&gt;
	return langCode, regionCode, isPrivate&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getLangName(code, link, raw)&lt;br /&gt;
	return require(&#039;Module:Lang&#039;)._name_from_tag({&lt;br /&gt;
		code,&lt;br /&gt;
		link = link,&lt;br /&gt;
		raw = raw,&lt;br /&gt;
		-- Without linking, &amp;quot;{{IPA}}&amp;quot; gets expanded in some contexts&lt;br /&gt;
		template = &#039;[[Template:IPA|IPA]]&#039;&lt;br /&gt;
	})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function linkLang(name, target, link)&lt;br /&gt;
	return link == &#039;yes&#039; and string.format(&lt;br /&gt;
		&#039;[[%s|%s]]&#039;,&lt;br /&gt;
		target or name .. &#039; language&#039;,&lt;br /&gt;
		name&lt;br /&gt;
	) or name&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(args)&lt;br /&gt;
	local ret, cats = {}, {}&lt;br /&gt;
	local isDebug = args.debug == &#039;yes&#039;&lt;br /&gt;
	local s, langCode, regionCode, isPrivate&lt;br /&gt;
	&lt;br /&gt;
	-- Guide-linking mode&lt;br /&gt;
	if args[2] and args[2] ~= &#039;&#039; then&lt;br /&gt;
		local data = mw.loadData(&#039;Module:IPA/data&#039;)&lt;br /&gt;
		local isGeneric = args.generic == &#039;yes&#039;&lt;br /&gt;
		s = args[2]&lt;br /&gt;
		langCode, regionCode, isPrivate = splitTag(args[1])&lt;br /&gt;
		local langData = data.langs[langCode] or {}&lt;br /&gt;
		if regionCode then&lt;br /&gt;
			if not isPrivate then&lt;br /&gt;
				regionCode = regionCode:upper()&lt;br /&gt;
			end&lt;br /&gt;
			if langData.dialects and langData.dialects[regionCode] then&lt;br /&gt;
				-- Overwrite language data with the dialect&#039;s&lt;br /&gt;
				local newLangData = {}&lt;br /&gt;
				for k, v in pairs(langData) do&lt;br /&gt;
					if k ~= &#039;dialects&#039; then&lt;br /&gt;
						newLangData[k] = v&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
				local dialectData = langData.dialects[regionCode]&lt;br /&gt;
				if dialectData.aliasOf then&lt;br /&gt;
					-- Use the canonical region code&lt;br /&gt;
					regionCode = dialectData.aliasOf&lt;br /&gt;
					isPrivate = regionCode:sub(1, 2) == &#039;x-&#039;&lt;br /&gt;
					dialectData = langData.dialects[regionCode]&lt;br /&gt;
				end&lt;br /&gt;
				-- Lowercase IANA variant&lt;br /&gt;
				if dialectData.isVariant then&lt;br /&gt;
					regionCode = regionCode:lower()&lt;br /&gt;
				end&lt;br /&gt;
				for k, v in pairs(dialectData) do&lt;br /&gt;
					newLangData[k] = v&lt;br /&gt;
				end&lt;br /&gt;
				langData = newLangData&lt;br /&gt;
			else&lt;br /&gt;
				isGeneric = true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		local fullLangCode = regionCode and langCode .. &#039;-&#039; .. regionCode&lt;br /&gt;
			or langCode&lt;br /&gt;
		local langName = langData.name&lt;br /&gt;
			and linkLang(langData.name, langData.link, args.link)&lt;br /&gt;
			or getLangName(fullLangCode, args.link)&lt;br /&gt;
		if langName:sub(1, 5) == &#039;&amp;lt;span&#039; then&lt;br /&gt;
			-- Module:Lang has returned an error&lt;br /&gt;
			return langName .. renderCats({ &#039;IPA template errors&#039; }, isDebug)&lt;br /&gt;
		end&lt;br /&gt;
		if args.cat ~= &#039;no&#039; then&lt;br /&gt;
			local catLangName = langData.name&lt;br /&gt;
				or getLangName(fullLangCode, nil, &#039;yes&#039;)&lt;br /&gt;
			if catLangName:sub(1, 5) == &#039;&amp;lt;span&#039; then&lt;br /&gt;
				-- Module:Lang has returned an error, but it&#039;s not fatal&lt;br /&gt;
				table.insert(cats, &#039;IPA template errors&#039;)&lt;br /&gt;
				mw.addWarning(catLangName)&lt;br /&gt;
			else&lt;br /&gt;
				table.insert(cats, string.format(&#039;Pages with %s IPA&#039;, catLangName))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- Label&lt;br /&gt;
		local label = args.label&lt;br /&gt;
		if not label then&lt;br /&gt;
			local labelCode = args[3] and args[3]:lower()&lt;br /&gt;
				or langData.defaultLabelCode&lt;br /&gt;
			if labelCode == &#039;&#039; then&lt;br /&gt;
				label = &#039;&#039;&lt;br /&gt;
			else&lt;br /&gt;
				local langText&lt;br /&gt;
				if langData.text then&lt;br /&gt;
					langText = linkLang(&lt;br /&gt;
						langData.text,&lt;br /&gt;
						mw.ustring.match(langName, &#039;^%[%[([^|%]]+)&#039;),&lt;br /&gt;
						args.link&lt;br /&gt;
					)&lt;br /&gt;
				else&lt;br /&gt;
					langText = mw.ustring.gsub(&lt;br /&gt;
						langName,&lt;br /&gt;
						&#039;^%[%[(([^|]+) languages)%]%]$&#039;,&lt;br /&gt;
						&#039;[[%1|%2]]&#039;&lt;br /&gt;
					)&lt;br /&gt;
					langText = mw.ustring.gsub(&lt;br /&gt;
						langText,&lt;br /&gt;
						&#039; languages(%]?%]?)$&#039;,&lt;br /&gt;
						&#039;%1&#039;&lt;br /&gt;
					)&lt;br /&gt;
				end&lt;br /&gt;
				if labelCode and data.labels[labelCode] then&lt;br /&gt;
					label = data.labels[labelCode]:format(langText)&lt;br /&gt;
				else&lt;br /&gt;
					label = data.defaultLabel:format(langText)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if label and label ~= &#039;&#039; then&lt;br /&gt;
			local span = mw.html.create(&#039;span&#039;)&lt;br /&gt;
				:addClass(&#039;IPA-label&#039;)&lt;br /&gt;
				:wikitext(label)&lt;br /&gt;
			if args.small ~= &#039;no&#039; then&lt;br /&gt;
				span:addClass(&#039;IPA-label-small&#039;)&lt;br /&gt;
				table.insert(ret, mw.getCurrentFrame():extensionTag({&lt;br /&gt;
					name = &#039;templatestyles&#039;,&lt;br /&gt;
					args = { src = &#039;Module:IPA/styles.css&#039; }&lt;br /&gt;
				}))&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(ret, tostring(span) .. &#039; &#039;)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- Brackets&lt;br /&gt;
		s = (not isGeneric and langData.format or &#039;&amp;amp;#91;%s&amp;amp;#93;&#039;):format(s)&lt;br /&gt;
		&lt;br /&gt;
		-- Link to key&lt;br /&gt;
		local key = not isGeneric and langData.key or data.defaultKey&lt;br /&gt;
		s = string.format(&#039;[[%s|%s]]&#039;, key, s)&lt;br /&gt;
	else&lt;br /&gt;
		-- Basic mode&lt;br /&gt;
		s = args[1]&lt;br /&gt;
		if args.lang and args.lang ~= &#039;&#039; then&lt;br /&gt;
			langCode, regionCode, isPrivate = splitTag(args.lang)&lt;br /&gt;
		end&lt;br /&gt;
		if args.cat ~= &#039;no&#039; then&lt;br /&gt;
			table.insert(cats, &#039;Pages with plain IPA&#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Transcription&lt;br /&gt;
	do&lt;br /&gt;
		local lang = (langCode or &#039;und&#039;) .. &#039;-Latn&#039;&lt;br /&gt;
		if not isPrivate and regionCode then&lt;br /&gt;
			lang = lang .. &#039;-&#039; .. regionCode&lt;br /&gt;
		end&lt;br /&gt;
		lang = lang .. &#039;-fonipa&#039;&lt;br /&gt;
		local span = mw.html.create(&#039;span&#039;)&lt;br /&gt;
			:addClass(&#039;IPA&#039;)&lt;br /&gt;
			:addClass(args.class)&lt;br /&gt;
			:attr(&#039;lang&#039;, lang)&lt;br /&gt;
		-- wrap=all: Do nothing&lt;br /&gt;
		-- wrap=none: Never break&lt;br /&gt;
		-- Otherwise: Break at spaces only&lt;br /&gt;
		if args.wrap ~= &#039;all&#039; then&lt;br /&gt;
			span:addClass(&#039;nowrap&#039;)&lt;br /&gt;
			if args.wrap ~= &#039;none&#039; then&lt;br /&gt;
				s = wrapAtSpacesSafely(s)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if (not args[2] or args[2] == &#039;&#039;) and args.tooltip ~= &#039;&#039; then&lt;br /&gt;
			local tooltip = args.tooltip or&lt;br /&gt;
				&#039;Representation in the International Phonetic Alphabet (IPA)&#039;&lt;br /&gt;
			span:attr(&#039;title&#039;, tooltip)&lt;br /&gt;
		end&lt;br /&gt;
		s = tostring(span:wikitext(s))&lt;br /&gt;
		table.insert(ret, s)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Audio&lt;br /&gt;
	local audio = args.audio ~= &#039;&#039; and args.audio or args[4] ~= &#039;&#039; and args[4]&lt;br /&gt;
	if audio then&lt;br /&gt;
		local button = mw.getCurrentFrame():expandTemplate({&lt;br /&gt;
			title = &#039;Audio&#039;,&lt;br /&gt;
			args = { audio, &#039;&#039; }&lt;br /&gt;
		})&lt;br /&gt;
		table.insert(ret, &#039; &#039; .. button)&lt;br /&gt;
		table.insert(cats, &#039;Pages including recorded pronunciations&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Categories&lt;br /&gt;
	table.insert(ret, renderCats(cats, isDebug))&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(ret)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = frame:getParent().args&lt;br /&gt;
	if not args[1] then&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	for i, v in ipairs(args) do&lt;br /&gt;
		args[i] = mw.text.trim(v)&lt;br /&gt;
	end&lt;br /&gt;
	return p._main(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Template:Infobox_writing_system/doc&amp;diff=3566</id>
		<title>Template:Infobox writing system/doc</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Template:Infobox_writing_system/doc&amp;diff=3566"/>
		<updated>2026-01-10T08:42:18Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&amp;lt;!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[&amp;lt;/nowiki&amp;gt;[[Wikipedia:Wikidata]]&amp;lt;nowiki&amp;gt;]]) --&amp;gt;&lt;br /&gt;
{{Generic template demo |_display=italic |name |sample=The Quick Brown Fox Jumps Over The Lazy Dog (Cambria).svg |imagesize=200px |caption |type |typedesc |languages |creator |date |published |time |status |family |print |children |sisters |iso15924 note |unicode |footnotes}}&lt;br /&gt;
{{lua|Module:InfoboxImage}}&lt;br /&gt;
== Syntax ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot;&amp;gt;{{Infobox writing system&lt;br /&gt;
| name      = &lt;br /&gt;
| altname   = &amp;lt;!-- 2ary name --&amp;gt;&lt;br /&gt;
| type      = &amp;lt;!-- see options below --&amp;gt;&lt;br /&gt;
| qid       =&lt;br /&gt;
&amp;lt;!-- The following three fields, prefixed SH (ShortHand), are used only if the type parameter is set as &amp;quot;shorthand&amp;quot; or &amp;quot;stenography&amp;quot;: --&amp;gt;&lt;br /&gt;
| SHline    = &amp;lt;!-- &amp;quot;light&amp;quot; or &amp;quot;heavy&amp;quot; - heavy-line shorthands distinguish thick and thin strokes --&amp;gt;&lt;br /&gt;
| SHtype    = &amp;lt;!-- see options below --&amp;gt;&lt;br /&gt;
| SHform    = &amp;lt;!-- see options below --&amp;gt;&lt;br /&gt;
| typedesc  = &amp;lt;!-- additional info after the general type --&amp;gt;&lt;br /&gt;
| typedesc-prefix  = &amp;lt;!-- additional info, such as an adjective, before the general type --&amp;gt;&lt;br /&gt;
| creator   = &amp;lt;!-- use instead of |jfamN= for artificially created writing systems --&amp;gt;&lt;br /&gt;
| date      = &amp;lt;!-- date created --&amp;gt;&lt;br /&gt;
| published = &amp;lt;!-- date published for shorthands and script reforms --&amp;gt;&lt;br /&gt;
| time      = &amp;lt;!-- time period in use --&amp;gt;&lt;br /&gt;
| official script =&lt;br /&gt;
| languages = &amp;lt;!-- major languages using the writing system --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| fam1      = &amp;lt;!-- use |famN= to specify parent writing systems --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| fam2      = &amp;lt;!-- up to 15 parent writing systems can be listed, fam1 being the oldest --&amp;gt;&lt;br /&gt;
| fam15     = &lt;br /&gt;
| print     = &amp;lt;!-- the print basis/model of a braille script --&amp;gt;&lt;br /&gt;
| sisters   = &amp;lt;!-- sister writing systems with common ancestors --&amp;gt;&lt;br /&gt;
| children  = &amp;lt;!-- child systems --&amp;gt;&lt;br /&gt;
| sample    = &amp;lt;!-- sample image without Image: prefix --&amp;gt;&lt;br /&gt;
| imagesize = &amp;lt;!-- size of sample image  --&amp;gt;&lt;br /&gt;
| caption   = &amp;lt;!-- description of sample image --&amp;gt;&lt;br /&gt;
| direction = &amp;lt;!-- writing direction, will be read from Wikidata when empty --&amp;gt;&lt;br /&gt;
| direction comment =&lt;br /&gt;
| unicode   = &amp;lt;!-- Unicode range --&amp;gt;&lt;br /&gt;
| iso15924  = &amp;lt;!-- either the ISO 15924 four-letter code or number; will automatically display both --&amp;gt;&lt;br /&gt;
| iso15924 note = &amp;lt;!-- more text on the ISO 15924 four-letter codes, e.g. variants, aliases --&amp;gt;&lt;br /&gt;
| module    = &amp;lt;!-- other templates can be embedded here --&amp;gt;&lt;br /&gt;
| footnotes = &amp;lt;!-- some information about the writing system --&amp;gt;&lt;br /&gt;
| ipa-note  = &amp;lt;!-- set to `none` to cancel IPA warning --&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
While it is probably important to always list at least the immediate &#039;parent&#039; of any writing system, it isn&#039;t always practical if this number is too large.&lt;br /&gt;
&lt;br /&gt;
===`type` parameter ===&lt;br /&gt;
Select color coding with {{para|type}} according to the type of writing system:&lt;br /&gt;
{| style=&amp;quot;text-align:center; font-size:120%;&amp;quot; cellspacing=&amp;quot;4&amp;quot; cellpadding=&amp;quot;3&amp;quot;&lt;br /&gt;
|style=&amp;quot;background:palegreen; color:inherit;&amp;quot;    | Abjad&lt;br /&gt;
|style=&amp;quot;background:lightblue; color:inherit;&amp;quot;    | Alphabet&lt;br /&gt;
|style=&amp;quot;background:navajowhite; color:inherit;&amp;quot;  | Abugida&lt;br /&gt;
|style=&amp;quot;background:pink; color:inherit;&amp;quot;         | Syllabary&lt;br /&gt;
|style=&amp;quot;background:violet; color:inherit;&amp;quot;      | Semisyllabary&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:paleturquoise; color:inherit;&amp;quot;| Manual&lt;br /&gt;
|style=&amp;quot;background:palegoldenrod; color:inherit;&amp;quot;| Pictographic&lt;br /&gt;
|style=&amp;quot;background:gold; color:inherit;&amp;quot;         | Ideographic&lt;br /&gt;
|style=&amp;quot;background:mistyrose; color:inherit;&amp;quot;    | Logographic&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:turquoise; color:inherit;&amp;quot;    | Stenography&lt;br /&gt;
|style=&amp;quot;background:turquoise; color:inherit;&amp;quot;    | Shorthand&lt;br /&gt;
|style=&amp;quot;background:gainsboro; color:inherit;&amp;quot;    | Undeciphered&lt;br /&gt;
|style=&amp;quot;background:khaki; color:inherit;&amp;quot;        | Alternative&lt;br /&gt;
|style=&amp;quot;background:white; color:inherit;&amp;quot;        | (default)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Shorthand `SHform`, `SHtype` ===&lt;br /&gt;
{{cot|title={{mono|SHform}}, {{mono|SHtype}} parameter options|bg=#eee}}&lt;br /&gt;
;{{para|SHform}}&lt;br /&gt;
{{para|SHform}} should only be included if {{para|type}} = {{mono|stenography}} or {{mono|shorthand}}. Select text color coding according to the shorthand letterforms:&lt;br /&gt;
{| style=&amp;quot;text-align:center; font-size:120%;&amp;quot; cellspacing=&amp;quot;4&amp;quot; cellpadding=&amp;quot;3&amp;quot;&lt;br /&gt;
|style=&amp;quot;background:white; color:#303030;&amp;quot;| Cursive&lt;br /&gt;
|style=&amp;quot;background:white; color:#303030;&amp;quot;| Printed&lt;br /&gt;
|style=&amp;quot;background:white; color:#405000;&amp;quot;| Stenographic&lt;br /&gt;
|style=&amp;quot;background:white; color:#005020;&amp;quot;| Geometric&lt;br /&gt;
|style=&amp;quot;background:white; color:#500030;&amp;quot;| Script&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:white; color:#600000;&amp;quot;| Semi-Script&lt;br /&gt;
|style=&amp;quot;background:white; color:#600000;&amp;quot;| Elliptical&lt;br /&gt;
|style=&amp;quot;background:white; color:#600000;&amp;quot;| Script-Geometric&lt;br /&gt;
|style=&amp;quot;background:white; color:black;&amp;quot;  | (default)&lt;br /&gt;
|}&lt;br /&gt;
;{{para|SHtype}}&lt;br /&gt;
{{para|SHtype}} should only be included if {{para}} is {{mono|stenography}} or {{mono|shorthand}}. Select background color coding according to the type of writing system:&lt;br /&gt;
{| style=&amp;quot;text-align:center; font-size:120%;&amp;quot; cellspacing=&amp;quot;4&amp;quot; cellpadding=&amp;quot;3&amp;quot;&lt;br /&gt;
|style=&amp;quot; color:inherit; background:palegreen;&amp;quot;    | Abjadi&lt;br /&gt;
|style=&amp;quot; color:inherit; background:palegreen;&amp;quot;    | Consonantal&lt;br /&gt;
|style=&amp;quot; color:inherit; background:lightblue;&amp;quot;    | Alphabetic&lt;br /&gt;
|style=&amp;quot; color:inherit; background:navajowhite;&amp;quot;  | Abugida&lt;br /&gt;
|style=&amp;quot; color:inherit; background:pink;&amp;quot;         | Syllabic&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot; color:inherit; background:violet;&amp;quot;      | Semisyllabic&lt;br /&gt;
|style=&amp;quot; color:inherit; background:palegoldenrod;&amp;quot;| Mixed&lt;br /&gt;
|style=&amp;quot; color:inherit; background:gainsboro;&amp;quot;    | Undeciphered&lt;br /&gt;
|style=&amp;quot; color:inherit; background:khaki;&amp;quot;        | Alternative&lt;br /&gt;
|style=&amp;quot; color:inherit; background:turquoise;&amp;quot;    | (default)&lt;br /&gt;
|}&lt;br /&gt;
{{cob}}&lt;br /&gt;
&lt;br /&gt;
=== Parameter `direction` ===&lt;br /&gt;
{{Wikidata property|P1406}}&lt;br /&gt;
{{para|direction}} can be used to enter the directionality. When left unused, the template reads this value from Wikidata.&lt;br /&gt;
&lt;br /&gt;
=== Parameter `note` ===&lt;br /&gt;
&lt;br /&gt;
As a bottom there can be shown [[Template:Infobox writing system/ipa-note|this note]]:&lt;br /&gt;
&lt;br /&gt;
{{quote|text={{Infobox writing system/ipa-note}}|style=background:#ddd; color:inherit;}}&lt;br /&gt;
&lt;br /&gt;
Setting {{para|note|none}} will hide this text.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
:&#039;&#039;From&#039;&#039; [[Hebrew alphabet]] &amp;lt;small&amp;gt;(simplified for demo purposes)&amp;lt;/small&amp;gt;&amp;lt;!-- as of 2021-01-22, +some edits --&amp;gt;&lt;br /&gt;
{{Infobox writing system&lt;br /&gt;
| name      = Hebrew alphabet&lt;br /&gt;
| altname   = (no alt name)&lt;br /&gt;
| qid       = Q33513&lt;br /&gt;
| sample    = Alefbet ivri.svg&lt;br /&gt;
| imagesize = 220px&lt;br /&gt;
| type      = Impure [[abjad]]&lt;br /&gt;
| languages = [[Hebrew language|Hebrew]], [[Yiddish]]&lt;br /&gt;
| time      = 2nd–1st century BCE to present&amp;lt;ref&amp;gt;[https://www.britannica.com/topic/Hebrew-alphabet Hebrew alphabet]&amp;lt;/ref&amp;gt;&lt;br /&gt;
| region    =&lt;br /&gt;
 | fam1     = [[Egyptian hieroglyphs]]&lt;br /&gt;
 | fam2     = [[Proto-Sinaitic script]]&lt;br /&gt;
 | fam3     = [[Phoenician alphabet]]&lt;br /&gt;
 | fam4     = [[Aramaic alphabet]]&lt;br /&gt;
| sisters   = {{Plainlist|&lt;br /&gt;
* [[Arabic alphabet|Arabic]]&lt;br /&gt;
* [[Nabataean alphabet|Nabataean]]&lt;br /&gt;
* [[Syriac alphabet|Syriac]]&lt;br /&gt;
}}&lt;br /&gt;
| children  = [[Yiddish alphabet]]&lt;br /&gt;
| direction = right-to-left&lt;br /&gt;
| unicode   = {{Plainlist|&lt;br /&gt;
* [https://www.unicode.org/charts/PDF/U0590.pdf U+0590 to U+05FF]&amp;lt;br /&amp;gt;Hebrew,&lt;br /&gt;
* [https://www.unicode.org/charts/PDF/UFB00.pdf U+FB1D to U+FB4F]&amp;lt;br /&amp;gt;Alphabetic Presentation Forms&lt;br /&gt;
 }}&lt;br /&gt;
| iso15924  = Hebr&lt;br /&gt;
| iso15924 note = &lt;br /&gt;
| footnotes = &lt;br /&gt;
| ipa-note  = &lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Infobox writing system&lt;br /&gt;
| name      = Hebrew alphabet&lt;br /&gt;
| qid       = Q33513&lt;br /&gt;
| altname   = (alt name here, expected in script)&lt;br /&gt;
| sample    = Alefbet ivri.svg&lt;br /&gt;
| imagesize = 220px&lt;br /&gt;
| type      = Impure [[abjad]]&lt;br /&gt;
| languages = [[Hebrew language|Hebrew]], [[Yiddish]]&lt;br /&gt;
| time      = 2nd–1st century BCE to present&amp;lt;ref&amp;gt;[https://www.britannica.com/topic/Hebrew-alphabet Hebrew alphabet]&amp;lt;/ref&amp;gt;&lt;br /&gt;
 | fam1     = [[Egyptian hieroglyphs]]&lt;br /&gt;
 | fam2     = [[Proto-Sinaitic script]]&lt;br /&gt;
 | fam3     = [[Phoenician alphabet]]&lt;br /&gt;
 | fam4     = [[Aramaic alphabet]]&lt;br /&gt;
| sisters   = {{Plainlist|&lt;br /&gt;
* [[Arabic alphabet|Arabic]]&lt;br /&gt;
* [[Nabataean alphabet|Nabataean]]&lt;br /&gt;
* [[Syriac alphabet|Syriac]]&lt;br /&gt;
}}&lt;br /&gt;
| children  = [[Yiddish alphabet]]&lt;br /&gt;
| direction = right-to-left&lt;br /&gt;
| unicode   = {{Plainlist|&lt;br /&gt;
* [https://www.unicode.org/charts/PDF/U0590.pdf U+0590 to U+05FF]&amp;lt;br /&amp;gt;Hebrew,&lt;br /&gt;
* [https://www.unicode.org/charts/PDF/UFB00.pdf U+FB1D to U+FB4F]&amp;lt;br /&amp;gt;Alphabetic Presentation Forms&lt;br /&gt;
 }}&lt;br /&gt;
| iso15924  = Hebr&lt;br /&gt;
| iso15924 note = &lt;br /&gt;
| footnotes = &lt;br /&gt;
| ipa-note  = &lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Tracking categories==&lt;br /&gt;
* {{clc|Pages using infobox writing system with unknown parameters}}&lt;br /&gt;
==Template Data==&lt;br /&gt;
{{template data header}}&lt;br /&gt;
{{cot|title=Template Data|bg=#ddd}}&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;format&amp;quot;: &amp;quot;{{_\n| ___________ = _\n}}\n&amp;quot;,&lt;br /&gt;
	&amp;quot;params&amp;quot;: {&lt;br /&gt;
		&amp;quot;bodystyle&amp;quot;: {},&lt;br /&gt;
		&amp;quot;type&amp;quot;: {&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;suggestedvalues&amp;quot;: [&lt;br /&gt;
				&amp;quot;Abjad, Alphabet, Abugida, Syllabary, Semisyllabary, Manual, Pictographic, Ideographic, Logographic, Stenography, Shorthand, Undeciphered, Alternative, (default) &amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;SHtype&amp;quot;: {},&lt;br /&gt;
		&amp;quot;SHform&amp;quot;: {},&lt;br /&gt;
		&amp;quot;mode&amp;quot;: {},&lt;br /&gt;
		&amp;quot;name&amp;quot;: {},&lt;br /&gt;
		&amp;quot;altname&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Secondary name&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;native_name&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Name in the system itself&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;imagestyle&amp;quot;: {},&lt;br /&gt;
		&amp;quot;sample&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Sample image, WITHOUT \&amp;quot;Image:\&amp;quot; prefix&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-file-name&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;image size&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Sample image&#039;s size&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;imagesize&amp;quot;: {},&lt;br /&gt;
		&amp;quot;alt&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Text substituting the image&amp;quot;,&lt;br /&gt;
			&amp;quot;example&amp;quot;: &amp;quot;Character sample&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;captionstyle&amp;quot;: {},&lt;br /&gt;
		&amp;quot;caption&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Text displayed under the sample image&amp;quot;,&lt;br /&gt;
			&amp;quot;example&amp;quot;: &amp;quot;From &#039;&#039;Description of the New Alphabet&#039;&#039;, 1999&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;SHline&amp;quot;: {},&lt;br /&gt;
		&amp;quot;typedesc&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;For providing additional info after a general type&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;languages&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Major languages using the writing system&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;creator&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Use instead of jfamN for artificially created writing systems&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;date&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Date created&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;SHdates&amp;quot;: {},&lt;br /&gt;
		&amp;quot;published&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Date published - for shorthands and script reforms&amp;quot;,&lt;br /&gt;
			&amp;quot;example&amp;quot;: &amp;quot;1999&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;time&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Time period during which system was in use&amp;quot;,&lt;br /&gt;
			&amp;quot;example&amp;quot;: &amp;quot;20th century&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;status&amp;quot;: {},&lt;br /&gt;
		&amp;quot;fam1&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Use famN to specify parent writing system/s.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;family&amp;quot;: {},&lt;br /&gt;
		&amp;quot;fam2&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Up to 15 parent writing systems can be listed, fam1 being the oldest.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;fam3&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Up to 15 parent writing systems can be listed, fam1 being the oldest.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;fam4&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Up to 15 parent writing systems can be listed, fam1 being the oldest.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;fam5&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Up to 15 parent writing systems can be listed, fam1 being the oldest.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;fam6&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Up to 15 parent writing systems can be listed, fam1 being the oldest.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;fam7&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Up to 15 parent writing systems can be listed, fam1 being the oldest.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;fam8&amp;quot;: {},&lt;br /&gt;
		&amp;quot;fam9&amp;quot;: {},&lt;br /&gt;
		&amp;quot;fam10&amp;quot;: {},&lt;br /&gt;
		&amp;quot;fam11&amp;quot;: {},&lt;br /&gt;
		&amp;quot;fam12&amp;quot;: {},&lt;br /&gt;
		&amp;quot;fam13&amp;quot;: {},&lt;br /&gt;
		&amp;quot;fam14&amp;quot;: {},&lt;br /&gt;
		&amp;quot;fam15&amp;quot;: {},&lt;br /&gt;
		&amp;quot;print&amp;quot;: {},&lt;br /&gt;
		&amp;quot;children&amp;quot;: {},&lt;br /&gt;
		&amp;quot;sisters&amp;quot;: {},&lt;br /&gt;
		&amp;quot;iso15924&amp;quot;: {},&lt;br /&gt;
		&amp;quot;iso15924 note&amp;quot;: {},&lt;br /&gt;
		&amp;quot;unicode&amp;quot;: {},&lt;br /&gt;
		&amp;quot;module&amp;quot;: {},&lt;br /&gt;
		&amp;quot;footnotes&amp;quot;: {},&lt;br /&gt;
		&amp;quot;note&amp;quot;: {},&lt;br /&gt;
		&amp;quot;direction&amp;quot;: {},&lt;br /&gt;
		&amp;quot;qid&amp;quot;: {},&lt;br /&gt;
		&amp;quot;ipa-note&amp;quot;: {},&lt;br /&gt;
		&amp;quot;direction comment&amp;quot;: {},&lt;br /&gt;
		&amp;quot;official script&amp;quot;: {},&lt;br /&gt;
		&amp;quot;region&amp;quot;: {},&lt;br /&gt;
		&amp;quot;engvar&amp;quot;: {},&lt;br /&gt;
		&amp;quot;romanised_from&amp;quot;: {},&lt;br /&gt;
		&amp;quot;romanized_from&amp;quot;: {},&lt;br /&gt;
		&amp;quot;language&amp;quot;: {}&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;paramOrder&amp;quot;: [&lt;br /&gt;
		&amp;quot;bodystyle&amp;quot;,&lt;br /&gt;
		&amp;quot;type&amp;quot;,&lt;br /&gt;
		&amp;quot;SHtype&amp;quot;,&lt;br /&gt;
		&amp;quot;SHform&amp;quot;,&lt;br /&gt;
		&amp;quot;mode&amp;quot;,&lt;br /&gt;
		&amp;quot;name&amp;quot;,&lt;br /&gt;
		&amp;quot;altname&amp;quot;,&lt;br /&gt;
		&amp;quot;native_name&amp;quot;,&lt;br /&gt;
		&amp;quot;imagestyle&amp;quot;,&lt;br /&gt;
		&amp;quot;sample&amp;quot;,&lt;br /&gt;
		&amp;quot;image size&amp;quot;,&lt;br /&gt;
		&amp;quot;imagesize&amp;quot;,&lt;br /&gt;
		&amp;quot;alt&amp;quot;,&lt;br /&gt;
		&amp;quot;captionstyle&amp;quot;,&lt;br /&gt;
		&amp;quot;caption&amp;quot;,&lt;br /&gt;
		&amp;quot;SHline&amp;quot;,&lt;br /&gt;
		&amp;quot;typedesc&amp;quot;,&lt;br /&gt;
		&amp;quot;languages&amp;quot;,&lt;br /&gt;
		&amp;quot;creator&amp;quot;,&lt;br /&gt;
		&amp;quot;date&amp;quot;,&lt;br /&gt;
		&amp;quot;SHdates&amp;quot;,&lt;br /&gt;
		&amp;quot;published&amp;quot;,&lt;br /&gt;
		&amp;quot;time&amp;quot;,&lt;br /&gt;
		&amp;quot;status&amp;quot;,&lt;br /&gt;
		&amp;quot;fam1&amp;quot;,&lt;br /&gt;
		&amp;quot;family&amp;quot;,&lt;br /&gt;
		&amp;quot;fam2&amp;quot;,&lt;br /&gt;
		&amp;quot;fam3&amp;quot;,&lt;br /&gt;
		&amp;quot;fam4&amp;quot;,&lt;br /&gt;
		&amp;quot;fam5&amp;quot;,&lt;br /&gt;
		&amp;quot;fam6&amp;quot;,&lt;br /&gt;
		&amp;quot;fam7&amp;quot;,&lt;br /&gt;
		&amp;quot;fam8&amp;quot;,&lt;br /&gt;
		&amp;quot;fam9&amp;quot;,&lt;br /&gt;
		&amp;quot;fam10&amp;quot;,&lt;br /&gt;
		&amp;quot;fam11&amp;quot;,&lt;br /&gt;
		&amp;quot;fam12&amp;quot;,&lt;br /&gt;
		&amp;quot;fam13&amp;quot;,&lt;br /&gt;
		&amp;quot;fam14&amp;quot;,&lt;br /&gt;
		&amp;quot;fam15&amp;quot;,&lt;br /&gt;
		&amp;quot;print&amp;quot;,&lt;br /&gt;
		&amp;quot;children&amp;quot;,&lt;br /&gt;
		&amp;quot;sisters&amp;quot;,&lt;br /&gt;
		&amp;quot;iso15924&amp;quot;,&lt;br /&gt;
		&amp;quot;iso15924 note&amp;quot;,&lt;br /&gt;
		&amp;quot;unicode&amp;quot;,&lt;br /&gt;
        &amp;quot;module&amp;quot;,&lt;br /&gt;
		&amp;quot;footnotes&amp;quot;,&lt;br /&gt;
		&amp;quot;note&amp;quot;,&lt;br /&gt;
		&amp;quot;qid&amp;quot;,&lt;br /&gt;
		&amp;quot;direction&amp;quot;,&lt;br /&gt;
		&amp;quot;direction comment&amp;quot;,&lt;br /&gt;
		&amp;quot;ipa-note&amp;quot;,&lt;br /&gt;
		&amp;quot;official script&amp;quot;,&lt;br /&gt;
		&amp;quot;region&amp;quot;,&lt;br /&gt;
		&amp;quot;engvar&amp;quot;,&lt;br /&gt;
		&amp;quot;romanised_from&amp;quot;,&lt;br /&gt;
		&amp;quot;romanized_from&amp;quot;,&lt;br /&gt;
		&amp;quot;language&amp;quot;&lt;br /&gt;
	],&lt;br /&gt;
	&amp;quot;description&amp;quot;: &amp;quot;Information box about a writing system&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
{{cob}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{Sandbox other||&lt;br /&gt;
&amp;lt;!-- Categories below this line, please; interwikis at Wikidata --&amp;gt;&lt;br /&gt;
[[Category:Writing system templates]] &lt;br /&gt;
[[Category:Language infobox templates|Writing System]]&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Module:Side_box/styles.css&amp;diff=3564</id>
		<title>Module:Side box/styles.css</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Module:Side_box/styles.css&amp;diff=3564"/>
		<updated>2026-01-10T08:42:17Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* {{pp|small=y}} */&lt;br /&gt;
.side-box {&lt;br /&gt;
	margin: 4px 0;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	border: 1px solid #aaa;&lt;br /&gt;
	font-size: 88%;&lt;br /&gt;
	line-height: 1.25em;&lt;br /&gt;
	background-color: var(--background-color-interactive-subtle, #f8f9fa);color:inherit;&lt;br /&gt;
    display: flow-root;&lt;br /&gt;
}&lt;br /&gt;
/* embedded side boxes need larger font */&lt;br /&gt;
.infobox .side-box {&lt;br /&gt;
	font-size: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.side-box-abovebelow,&lt;br /&gt;
.side-box-text {&lt;br /&gt;
	padding: 0.25em 0.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.side-box-image {&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	padding: 2px 0 2px 0.9em;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.side-box-imageright {&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	padding: 2px 0.9em 2px 0;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* roughly the skin&#039;s sidebar + size of side box */&lt;br /&gt;
@media (min-width: 500px) {&lt;br /&gt;
	.side-box-flex {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	.side-box-text {&lt;br /&gt;
		flex: 1;&lt;br /&gt;
		min-width: 0;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (min-width: 640px) {&lt;br /&gt;
	.side-box {&lt;br /&gt;
		width: 238px;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	.side-box-right {&lt;br /&gt;
		/* @noflip */&lt;br /&gt;
		clear: right;&lt;br /&gt;
		/* @noflip */&lt;br /&gt;
		float: right;&lt;br /&gt;
		/* @noflip */&lt;br /&gt;
		margin-left: 1em;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	/* derives from mbox classes, which do not float left in mbox-small-left&lt;br /&gt;
	 * so far as I can tell, that was a deliberate decision, since only .ambox&lt;br /&gt;
	 * supports mbox-left&lt;br /&gt;
	 */&lt;br /&gt;
	.side-box-left {&lt;br /&gt;
		/* @noflip */&lt;br /&gt;
		margin-right: 1em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Template:Template_data_header&amp;diff=3562</id>
		<title>Template:Template data header</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Template:Template_data_header&amp;diff=3562"/>
		<updated>2026-01-10T08:42:17Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Template:TemplateData header]]&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Template:Generic_template_demo&amp;diff=3560</id>
		<title>Template:Generic template demo</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Template:Generic_template_demo&amp;diff=3560"/>
		<updated>2026-01-10T08:42:17Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Template:Parameter names example]]&lt;br /&gt;
&lt;br /&gt;
{{R protected}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Wikipedia formatting templates]]&lt;br /&gt;
[[Category:Template namespace templates]]&lt;br /&gt;
[[Category:Documentation assistance templates]]&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Template:ISO_15924_number&amp;diff=3558</id>
		<title>Template:ISO 15924 number</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Template:ISO_15924_number&amp;diff=3558"/>
		<updated>2026-01-10T08:42:17Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#switch:{{ISO 15924 code|{{{alpha4|{{{1|}}}}}}}}&amp;lt;!-- ISO 15924 as of 2025-04-24: complete list of 224 + 50 Qaaaa-Qabx codes--&amp;gt;&lt;br /&gt;
| Adlm = 166&lt;br /&gt;
| Afak = 439&lt;br /&gt;
| Aghb = 239&lt;br /&gt;
| Ahom = 338&lt;br /&gt;
| Arab = 160&lt;br /&gt;
| Aran = 161&lt;br /&gt;
| Armi = 124&lt;br /&gt;
| Armn = 230&lt;br /&gt;
| Avst = 134&lt;br /&gt;
| Bali = 360&lt;br /&gt;
| Bamu = 435&lt;br /&gt;
| Bass = 259&lt;br /&gt;
| Batk = 365&lt;br /&gt;
| Beng = 325&lt;br /&gt;
| Berf = 258&lt;br /&gt;
| Bhks = 334&lt;br /&gt;
| Blis = 550&lt;br /&gt;
| Bopo = 285&lt;br /&gt;
| Brah = 300&lt;br /&gt;
| Brai = 570&lt;br /&gt;
| Bugi = 367&lt;br /&gt;
| Buhd = 372&lt;br /&gt;
| Cakm = 349&lt;br /&gt;
| Cans = 440&lt;br /&gt;
| Cari = 201&lt;br /&gt;
| Cham = 358&lt;br /&gt;
| Cher = 445&lt;br /&gt;
| Chis = 298&lt;br /&gt;
| Chrs = 109&lt;br /&gt;
| Cirt = 291&lt;br /&gt;
| Copt = 204&lt;br /&gt;
| Cpmn = 402&lt;br /&gt;
| Cprt = 403&lt;br /&gt;
| Cyrl = 220&lt;br /&gt;
| Cyrs = 221&lt;br /&gt;
| Deva = 315&lt;br /&gt;
| Diak = 342&lt;br /&gt;
| Dogr = 328&lt;br /&gt;
| Dsrt = 250&lt;br /&gt;
| Dupl = 755&lt;br /&gt;
| Egyd = 070&lt;br /&gt;
| Egyh = 060&lt;br /&gt;
| Egyp = 050&lt;br /&gt;
| Elba = 226&lt;br /&gt;
| Elym = 128&lt;br /&gt;
| Ethi = 430&lt;br /&gt;
| Gara = 164&lt;br /&gt;
| Geok = 241&lt;br /&gt;
| Geor = 240&lt;br /&gt;
| Glag = 225&lt;br /&gt;
| Gong = 312&lt;br /&gt;
| Gonm = 313&lt;br /&gt;
| Goth = 206&lt;br /&gt;
| Gran = 343&lt;br /&gt;
| Grek = 200&lt;br /&gt;
| Gujr = 320&lt;br /&gt;
| Gukh = 397&lt;br /&gt;
| Guru = 310&lt;br /&gt;
| Hanb = 503&lt;br /&gt;
| Hang = 286&lt;br /&gt;
| Hani = 500&lt;br /&gt;
| Hano = 371&lt;br /&gt;
| Hans = 501&lt;br /&gt;
| Hant = 502&lt;br /&gt;
| Hatr = 127&lt;br /&gt;
| Hebr = 125&lt;br /&gt;
| Hira = 410&lt;br /&gt;
| Hluw = 080&lt;br /&gt;
| Hmng = 450&lt;br /&gt;
| Hmnp = 451&lt;br /&gt;
| Hntl = 504&lt;br /&gt;
| Hrkt = 412&lt;br /&gt;
| Hung = 176&lt;br /&gt;
| Inds = 610&lt;br /&gt;
| Ital = 210&lt;br /&gt;
| Jamo = 284&lt;br /&gt;
| Java = 361&lt;br /&gt;
| Jpan = 413&lt;br /&gt;
| Jurc = 510&lt;br /&gt;
| Kali = 357&lt;br /&gt;
| Kana = 411&lt;br /&gt;
| Kawi = 368&lt;br /&gt;
| Khar = 305&lt;br /&gt;
| Khmr = 355&lt;br /&gt;
| Khoj = 322&lt;br /&gt;
| Kitl = 505&lt;br /&gt;
| Kits = 288&lt;br /&gt;
| Knda = 345&lt;br /&gt;
| Kore = 287&lt;br /&gt;
| Kpel = 436&lt;br /&gt;
| Krai = 396&lt;br /&gt;
| Kthi = 317&lt;br /&gt;
| Lana = 351&lt;br /&gt;
| Laoo = 356&lt;br /&gt;
| Latf = 217&lt;br /&gt;
| Latg = 216&lt;br /&gt;
| Latn = 215&lt;br /&gt;
| Leke = 364&lt;br /&gt;
| Lepc = 335&lt;br /&gt;
| Limb = 336&lt;br /&gt;
| Lina = 400&lt;br /&gt;
| Linb = 401&lt;br /&gt;
| Lisu = 399&lt;br /&gt;
| Loma = 437&lt;br /&gt;
| Lyci = 202&lt;br /&gt;
| Lydi = 116&lt;br /&gt;
| Mahj = 314&lt;br /&gt;
| Maka = 366&lt;br /&gt;
| Mand = 140&lt;br /&gt;
| Mani = 139&lt;br /&gt;
| Marc = 332&lt;br /&gt;
| Maya = 090&lt;br /&gt;
| Medf = 265&lt;br /&gt;
| Mend = 438&lt;br /&gt;
| Merc = 101&lt;br /&gt;
| Mero = 100&lt;br /&gt;
| Mlym = 347&lt;br /&gt;
| Modi = 324&lt;br /&gt;
| Mong = 145&lt;br /&gt;
| Moon = 218&lt;br /&gt;
| Mroo = 264&lt;br /&gt;
| Mtei = 337&lt;br /&gt;
| Mult = 323&lt;br /&gt;
| Mymr = 350&lt;br /&gt;
| Nagm = 295&lt;br /&gt;
| Nand = 311&lt;br /&gt;
| Narb = 106&lt;br /&gt;
| Nbat = 159&lt;br /&gt;
| Newa = 333&lt;br /&gt;
| Nkdb = 085&lt;br /&gt;
| Nkgb = 420&lt;br /&gt;
| Nkoo = 165&lt;br /&gt;
| Nshu = 499&lt;br /&gt;
| Ogam = 212&lt;br /&gt;
| Olck = 261&lt;br /&gt;
| Onao = 296&lt;br /&gt;
| Orkh = 175&lt;br /&gt;
| Orya = 327&lt;br /&gt;
| Osge = 219&lt;br /&gt;
| Osma = 260&lt;br /&gt;
| Ougr = 143&lt;br /&gt;
| Palm = 126&lt;br /&gt;
| Pauc = 263&lt;br /&gt;
| Pcun = 015&lt;br /&gt;
| Pelm = 016&lt;br /&gt;
| Perm = 227&lt;br /&gt;
| Phag = 331&lt;br /&gt;
| Phli = 131&lt;br /&gt;
| Phlp = 132&lt;br /&gt;
| Phlv = 133&lt;br /&gt;
| Phnx = 115&lt;br /&gt;
| Piqd = 293&lt;br /&gt;
| Plrd = 282&lt;br /&gt;
| Prti = 130&lt;br /&gt;
| Psin = 103&lt;br /&gt;
| Qaaa-Qabx | Qaaa-Qabx | Qaaa–Qabx= 900-949 &lt;br /&gt;
| Qaaa = 900 | Qaab = 901 | Qaac = 902 | Qaad = 903 | Qaae = 904 | Qaaf = 905 | Qaag = 906 | Qaah = 907 | Qaai = 908 | Qaaj = 909 | Qaak = 910 | Qaal = 911 | Qaam = 912 | Qaan = 913 | Qaao = 914 | Qaap = 915 | Qaaq = 916 | Qaar = 917 | Qaas = 918 | Qaat = 919 | Qaau = 920 | Qaav = 921 | Qaaw = 922 | Qaax = 923 | Qaay = 924 | Qaaz = 925 | Qaba = 926 | Qabb = 927 | Qabc = 928 | Qabd = 929 | Qabe = 930 | Qabf = 931 | Qabg = 932 | Qabh = 933 | Qabi = 934 | Qabj = 935 | Qabk = 936 | Qabl = 937 | Qabm = 938 | Qabn = 939 | Qabo = 940 | Qabp = 941 | Qabq = 942 | Qabr = 943 | Qabs = 944 | Qabt = 945 | Qabu = 946 | Qabv = 947 | Qabw = 948 | Qabx = 949&lt;br /&gt;
| Ranj = 303&lt;br /&gt;
| Rjng = 363&lt;br /&gt;
| Rohg = 167&lt;br /&gt;
| Roro = 620&lt;br /&gt;
| Runr = 211&lt;br /&gt;
| Samr = 123&lt;br /&gt;
| Sara = 292&lt;br /&gt;
| Sarb = 105&lt;br /&gt;
| Saur = 344&lt;br /&gt;
| Seal = 590&lt;br /&gt;
| Sgnw = 095&lt;br /&gt;
| Shaw = 281&lt;br /&gt;
| Shrd = 319&lt;br /&gt;
| Shui = 530&lt;br /&gt;
| Sidd = 302&lt;br /&gt;
| Sidt = 180&lt;br /&gt;
| Sind = 318&lt;br /&gt;
| Sinh = 348&lt;br /&gt;
| Sogd = 141&lt;br /&gt;
| Sogo = 142&lt;br /&gt;
| Sora = 398&lt;br /&gt;
| Soyo = 329&lt;br /&gt;
| Sund = 362&lt;br /&gt;
| Sunu = 274&lt;br /&gt;
| Sylo = 316&lt;br /&gt;
| Syrc = 135&lt;br /&gt;
| Syre = 138&lt;br /&gt;
| Syrj = 137&lt;br /&gt;
| Syrn = 136&lt;br /&gt;
| Tagb = 373&lt;br /&gt;
| Takr = 321&lt;br /&gt;
| Tale = 353&lt;br /&gt;
| Talu = 354&lt;br /&gt;
| Taml = 346&lt;br /&gt;
| Tang = 520&lt;br /&gt;
| Tavt = 359&lt;br /&gt;
| Tayo = 380&lt;br /&gt;
| Telu = 340&lt;br /&gt;
| Teng = 290&lt;br /&gt;
| Tfng = 120&lt;br /&gt;
| Tglg = 370&lt;br /&gt;
| Thaa = 170&lt;br /&gt;
| Thai = 352&lt;br /&gt;
| Tibt = 330&lt;br /&gt;
| Tirh = 326&lt;br /&gt;
| Tnsa = 275&lt;br /&gt;
| Todr = 229&lt;br /&gt;
| Tols = 299&lt;br /&gt;
| Toto = 294&lt;br /&gt;
| Tutg = 341&lt;br /&gt;
| Ugar = 040&lt;br /&gt;
| Vaii = 470&lt;br /&gt;
| Visp = 280&lt;br /&gt;
| Vith = 228&lt;br /&gt;
| Wara = 262&lt;br /&gt;
| Wcho = 283&lt;br /&gt;
| Wole = 480&lt;br /&gt;
| Xpeo = 030&lt;br /&gt;
| Xsux = 020&lt;br /&gt;
| Yezi = 192&lt;br /&gt;
| Yiii = 460&lt;br /&gt;
| Zanb = 339&lt;br /&gt;
| Zinh = 994&lt;br /&gt;
| Zmth = 995&lt;br /&gt;
| Zsye = 993&lt;br /&gt;
| Zsym = 996&lt;br /&gt;
| Zxxx = 997&lt;br /&gt;
| Zyyy = 998&lt;br /&gt;
| Zzzz = 999&lt;br /&gt;
| #default = {{{default|}}}&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Template:Infobox_writing_system/ipa-note&amp;diff=3556</id>
		<title>Template:Infobox writing system/ipa-note</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Template:Infobox_writing_system/ipa-note&amp;diff=3556"/>
		<updated>2026-01-10T08:42:17Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span style=&amp;quot;font-size:90%&amp;quot;&amp;gt;&amp;amp;nbsp;{{IPA notice/msg}}&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Template:Wikidata_property&amp;diff=3554</id>
		<title>Template:Wikidata property</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Template:Wikidata_property&amp;diff=3554"/>
		<updated>2026-01-10T08:42:16Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Sister project&lt;br /&gt;
| position = {{{position|}}}&lt;br /&gt;
| project  = data&lt;br /&gt;
| text     = [[Wikidata]] has the propert{{#if:{{{2|}}}|ies|y}}: &lt;br /&gt;
{{#invoke:Uses Wikidata|usesProperty}}&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&amp;lt;!-- Add categories to the /doc subpage --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Template:ISO_15924_name&amp;diff=3552</id>
		<title>Template:ISO 15924 name</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Template:ISO_15924_name&amp;diff=3552"/>
		<updated>2026-01-10T08:42:16Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#switch:{{{alpha4|{{ISO 15924 code|{{{1|}}}}}}}}&amp;lt;!-- ISO 15924 list as of 2025-04-24: this is the complete list of the 224 + 50 Qaaa-Qabx codes--&amp;gt;&lt;br /&gt;
| Adlm = Adlam&lt;br /&gt;
| Afak = Afaka&lt;br /&gt;
| Aghb = Caucasian Albanian&lt;br /&gt;
| Ahom = Ahom, Tai Ahom&lt;br /&gt;
| Arab = Arabic&lt;br /&gt;
| Aran = Arabic (Nastaliq variant)&lt;br /&gt;
| Armi = Imperial Aramaic&lt;br /&gt;
| Armn = Armenian&lt;br /&gt;
| Avst = Avestan&lt;br /&gt;
| Bali = Balinese&lt;br /&gt;
| Bamu = Bamum&lt;br /&gt;
| Bass = Bassa Vah&lt;br /&gt;
| Batk = Batak&lt;br /&gt;
| Beng = Bengali (Bangla)&lt;br /&gt;
| Berf = Beria Erfe&lt;br /&gt;
| Bhks = Bhaiksuki&lt;br /&gt;
| Blis = Blissymbols&lt;br /&gt;
| Bopo = Bopomofo&lt;br /&gt;
| Brah = Brahmi&lt;br /&gt;
| Brai = Braille&lt;br /&gt;
| Bugi = Buginese&lt;br /&gt;
| Buhd = Buhid&lt;br /&gt;
| Cakm = Chakma&lt;br /&gt;
| Cans = Unified Canadian Aboriginal Syllabics&lt;br /&gt;
| Cari = Carian&lt;br /&gt;
| Cham = Cham&lt;br /&gt;
| Cher = Cherokee&lt;br /&gt;
| Chis = Chisoi&lt;br /&gt;
| Chrs = Chorasmian&lt;br /&gt;
| Cirt = Cirth&lt;br /&gt;
| Copt = Coptic&lt;br /&gt;
| Cpmn = Cypro-Minoan&lt;br /&gt;
| Cprt = Cypriot syllabary&lt;br /&gt;
| Cyrl = Cyrillic&lt;br /&gt;
| Cyrs = Cyrillic (Old Church Slavonic variant)&lt;br /&gt;
| Deva = Devanagari (Nagari)&lt;br /&gt;
| Diak = Dives Akuru&lt;br /&gt;
| Dogr = Dogra&lt;br /&gt;
| Dsrt = Deseret (Mormon)&lt;br /&gt;
| Dupl = Duployan shorthand, Duployan stenography&lt;br /&gt;
| Egyd = Egyptian demotic&lt;br /&gt;
| Egyh = Egyptian hieratic&lt;br /&gt;
| Egyp = Egyptian hieroglyphs&lt;br /&gt;
| Elba = Elbasan&lt;br /&gt;
| Elym = Elymaic&lt;br /&gt;
| Ethi = Ethiopic (Geʻez)&lt;br /&gt;
| Gara = Garay&lt;br /&gt;
| Geok = Khutsuri (Asomtavruli and Nuskhuri)&lt;br /&gt;
| Geor = Georgian (Mkhedruli and Mtavruli)&lt;br /&gt;
| Glag = Glagolitic&lt;br /&gt;
| Gong = Gunjala Gondi&lt;br /&gt;
| Gonm = Masaram Gondi&lt;br /&gt;
| Goth = Gothic&lt;br /&gt;
| Gran = Grantha&lt;br /&gt;
| Grek = Greek&lt;br /&gt;
| Gujr = Gujarati&lt;br /&gt;
| Gukh = Gurung Khema&lt;br /&gt;
| Guru = Gurmukhi&lt;br /&gt;
| Hanb = Han with Bopomofo (alias for Han + Bopomofo)&lt;br /&gt;
| Hang = Hangul (Hangŭl, Hangeul)&lt;br /&gt;
| Hani = Han (Hanzi, Kanji, Hanja)&lt;br /&gt;
| Hano = Hanunoo (Hanunóo)&lt;br /&gt;
| Hans = Han (Simplified variant)&lt;br /&gt;
| Hant = Han (Traditional variant)&lt;br /&gt;
| Hatr = Hatran&lt;br /&gt;
| Hebr = Hebrew&lt;br /&gt;
| Hira = Hiragana&lt;br /&gt;
| Hluw = Anatolian Hieroglyphs (Luwian Hieroglyphs, Hittite Hieroglyphs)&lt;br /&gt;
| Hmng = Pahawh Hmong&lt;br /&gt;
| Hmnp = Nyiakeng Puachue Hmong&lt;br /&gt;
| Hntl = Han (Traditional variant) with Latin (alias for Hant + Latn)&lt;br /&gt;
| Hrkt = Japanese syllabaries (alias for Hiragana + Katakana)&lt;br /&gt;
| Hung = Old Hungarian (Hungarian Runic)&lt;br /&gt;
| Inds = Indus (Harappan)&lt;br /&gt;
| Ital = Old Italic (Etruscan, Oscan, etc.)&lt;br /&gt;
| Jamo = Jamo (alias for Jamo subset of Hangul)&lt;br /&gt;
| Java = Javanese&lt;br /&gt;
| Jpan = Japanese (alias for Han + Hiragana + Katakana)&lt;br /&gt;
| Jurc = Jurchen&lt;br /&gt;
| Kali = Kayah Li&lt;br /&gt;
| Kana = Katakana&lt;br /&gt;
| Kawi = Kawi&lt;br /&gt;
| Khar = Kharoshthi&lt;br /&gt;
| Khmr = Khmer&lt;br /&gt;
| Khoj = Khojki&lt;br /&gt;
| Kitl = Khitan large script&lt;br /&gt;
| Kits = Khitan small script&lt;br /&gt;
| Knda = Kannada&lt;br /&gt;
| Kore = Korean (alias for Hangul + Han)&lt;br /&gt;
| Kpel = Kpelle&lt;br /&gt;
| Krai = Kirat Rai&lt;br /&gt;
| Kthi = Kaithi&lt;br /&gt;
| Lana = Tai Tham (Lanna)&lt;br /&gt;
| Laoo = Lao&lt;br /&gt;
| Latf = Latin (Fraktur variant)&lt;br /&gt;
| Latg = Latin (Gaelic variant)&lt;br /&gt;
| Latn = Latin&lt;br /&gt;
| Leke = Leke&lt;br /&gt;
| Lepc = Lepcha (Róng)&lt;br /&gt;
| Limb = Limbu&lt;br /&gt;
| Lina = Linear A&lt;br /&gt;
| Linb = Linear B&lt;br /&gt;
| Lisu = Lisu (Fraser)&lt;br /&gt;
| Loma = Loma&lt;br /&gt;
| Lyci = Lycian&lt;br /&gt;
| Lydi = Lydian&lt;br /&gt;
| Mahj = Mahajani&lt;br /&gt;
| Maka = Makasar&lt;br /&gt;
| Mand = Mandaic, Mandaean&lt;br /&gt;
| Mani = Manichaean&lt;br /&gt;
| Marc = Marchen&lt;br /&gt;
| Maya = Mayan hieroglyphs&lt;br /&gt;
| Medf = Medefaidrin (Oberi Okaime, Oberi Ɔkaimɛ)&lt;br /&gt;
| Mend = Mende Kikakui&lt;br /&gt;
| Merc = Meroitic Cursive&lt;br /&gt;
| Mero = Meroitic Hieroglyphs&lt;br /&gt;
| Mlym = Malayalam&lt;br /&gt;
| Modi = Modi, Moḍī&lt;br /&gt;
| Mong = Mongolian&lt;br /&gt;
| Moon = Moon (Moon code, Moon script, Moon type)&lt;br /&gt;
| Mroo = Mro, Mru&lt;br /&gt;
| Mtei = Meitei Mayek (Meithei, Meetei)&lt;br /&gt;
| Mult = Multani&lt;br /&gt;
| Mymr = Myanmar (Burmese)&lt;br /&gt;
| Nagm = Nag Mundari&lt;br /&gt;
| Nand = Nandinagari&lt;br /&gt;
| Narb = Old North Arabian (Ancient North Arabian)&lt;br /&gt;
| Nbat = Nabataean&lt;br /&gt;
| Newa = Newa, Newar, Newari, Nepāla lipi&lt;br /&gt;
| Nkdb = Naxi Dongba (na²¹ɕi³³ to³³ba²¹, Nakhi Tomba)&lt;br /&gt;
| Nkgb = Naxi Geba (na²¹ɕi³³ gʌ²¹ba²¹, &#039;Na-&#039;Khi ²Ggŏ-¹baw, Nakhi Geba)&lt;br /&gt;
| Nkoo = N’Ko&lt;br /&gt;
| Nshu = Nüshu&lt;br /&gt;
| Ogam = Ogham&lt;br /&gt;
| Olck = Ol Chiki (Ol Cemet’, Ol, Santali)&lt;br /&gt;
| Onao = Ol Onal&lt;br /&gt;
| Orkh = Old Turkic, Orkhon Runic&lt;br /&gt;
| Orya = Oriya (Odia)&lt;br /&gt;
| Osge = Osage&lt;br /&gt;
| Osma = Osmanya&lt;br /&gt;
| Ougr = Old Uyghur&lt;br /&gt;
| Palm = Palmyrene&lt;br /&gt;
| Pauc = Pau Cin Hau&lt;br /&gt;
| Pcun = Proto-Cuneiform&lt;br /&gt;
| Pelm = Proto-Elamite&lt;br /&gt;
| Perm = Old Permic&lt;br /&gt;
| Phag = Phags-pa&lt;br /&gt;
| Phli = Inscriptional Pahlavi&lt;br /&gt;
| Phlp = Psalter Pahlavi&lt;br /&gt;
| Phlv = Book Pahlavi&lt;br /&gt;
| Phnx = Phoenician&lt;br /&gt;
| Piqd = Klingon (KLI pIqaD)&lt;br /&gt;
| Plrd = Miao (Pollard)&lt;br /&gt;
| Prti = Inscriptional Parthian&lt;br /&gt;
| Psin = Proto-Sinaitic&lt;br /&gt;
| Qaaa-Qabx | Qaaa–Qabx = Reserved for private use (range)&lt;br /&gt;
| Qaaa = Reserved for private use (start)&lt;br /&gt;
| Qaab | Qaac | Qaad | Qaae | Qaaf | Qaag | Qaah | Qaai | Qaaj | Qaak | Qaal | Qaam | Qaan | Qaao | Qaap | Qaaq | Qaar | Qaas | Qaat | Qaau | Qaav | Qaaw | Qaax | Qaay | Qaaz | Qaba | Qabb | Qabc | Qabd | Qabe | Qabf | Qabg | Qabh | Qabi | Qabj | Qabk | Qabl | Qabm | Qabn | Qabo | Qabp | Qabq | Qabr | Qabs | Qabt | Qabu | Qabv | Qabw = Reserved for private use&lt;br /&gt;
| Qabx = Reserved for private use (end)&lt;br /&gt;
| Ranj = Ranjana&lt;br /&gt;
| Rjng = Rejang (Redjang, Kaganga)&lt;br /&gt;
| Rohg = Hanifi Rohingya&lt;br /&gt;
| Roro = Rongorongo&lt;br /&gt;
| Runr = Runic&lt;br /&gt;
| Samr = Samaritan&lt;br /&gt;
| Sara = Sarati&lt;br /&gt;
| Sarb = Old South Arabian&lt;br /&gt;
| Saur = Saurashtra&lt;br /&gt;
| Seal = (Small) Seal&lt;br /&gt;
| Sgnw = SignWriting&lt;br /&gt;
| Shaw = Shavian (Shaw)&lt;br /&gt;
| Shrd = Sharada, Śāradā&lt;br /&gt;
| Shui = Shuishu&lt;br /&gt;
| Sidd = Siddham, Siddhaṃ, Siddhamātṛkā&lt;br /&gt;
| Sidt = Sidetic&lt;br /&gt;
| Sind = Khudawadi, Sindhi&lt;br /&gt;
| Sinh = Sinhala&lt;br /&gt;
| Sogd = Sogdian&lt;br /&gt;
| Sogo = Old Sogdian&lt;br /&gt;
| Sora = Sora Sompeng&lt;br /&gt;
| Soyo = Soyombo&lt;br /&gt;
| Sund = Sundanese&lt;br /&gt;
| Sunu = Sunuwar&lt;br /&gt;
| Sylo = Syloti Nagri&lt;br /&gt;
| Syrc = Syriac&lt;br /&gt;
| Syre = Syriac (Estrangelo variant)&lt;br /&gt;
| Syrj = Syriac (Western variant)&lt;br /&gt;
| Syrn = Syriac (Eastern variant)&lt;br /&gt;
| Tagb = Tagbanwa&lt;br /&gt;
| Takr = Takri, Ṭākrī, Ṭāṅkrī&lt;br /&gt;
| Tale = Tai Le&lt;br /&gt;
| Talu = New Tai Lue&lt;br /&gt;
| Taml = Tamil&lt;br /&gt;
| Tang = Tangut&lt;br /&gt;
| Tavt = Tai Viet&lt;br /&gt;
| Tayo = Tai Yo&lt;br /&gt;
| Telu = Telugu&lt;br /&gt;
| Teng = Tengwar&lt;br /&gt;
| Tfng = Tifinagh (Berber)&lt;br /&gt;
| Tglg = Tagalog (Baybayin, Alibata)&lt;br /&gt;
| Thaa = Thaana&lt;br /&gt;
| Thai = Thai&lt;br /&gt;
| Tibt = Tibetan&lt;br /&gt;
| Tirh = Tirhuta&lt;br /&gt;
| Tnsa = Tangsa&lt;br /&gt;
| Todr = Todhri&lt;br /&gt;
| Tols = Tolong Siki&lt;br /&gt;
| Toto = Toto&lt;br /&gt;
| Tutg = Tulu-Tigalari&lt;br /&gt;
| Ugar = Ugaritic&lt;br /&gt;
| Vaii = Vai&lt;br /&gt;
| Visp = Visible Speech&lt;br /&gt;
| Vith = Vithkuqi&lt;br /&gt;
| Wara = Warang Citi (Varang Kshiti)&lt;br /&gt;
| Wcho = Wancho&lt;br /&gt;
| Wole = Woleai&lt;br /&gt;
| Xpeo = Old Persian&lt;br /&gt;
| Xsux = Cuneiform, Sumero-Akkadian&lt;br /&gt;
| Yezi = Yezidi&lt;br /&gt;
| Yiii = Yi&lt;br /&gt;
| Zanb = Zanabazar Square (Zanabazarin Dörböljin Useg, Xewtee Dörböljin Bicig, Horizontal Square Script)&lt;br /&gt;
| Zinh = Code for inherited script&lt;br /&gt;
| Zmth = Mathematical notation&lt;br /&gt;
| Zsye = Symbols (emoji variant)&lt;br /&gt;
| Zsym = Symbols&lt;br /&gt;
| Zxxx = Code for unwritten documents&lt;br /&gt;
| Zyyy = Code for undetermined script&lt;br /&gt;
| Zzzz = Code for uncoded script&lt;br /&gt;
| #default = {{{default|}}}&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Template:ISO_15924_code&amp;diff=3550</id>
		<title>Template:ISO 15924 code</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Template:ISO_15924_code&amp;diff=3550"/>
		<updated>2026-01-10T08:42:16Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Exact list from ISO datafile, as of 2025-04-24: 226 output values (codes).&lt;br /&gt;
--&amp;gt;{{#switch:{{{alpha4|{{ucfirst:{{lc:{{{1|}}}}}}}}}}&lt;br /&gt;
| 166 | Adlm = Adlm&lt;br /&gt;
| 439 | Afak = Afak&lt;br /&gt;
| 239 | Aghb = Aghb&lt;br /&gt;
| 338 | Ahom = Ahom&lt;br /&gt;
| 160 | Arab = Arab&lt;br /&gt;
| 161 | Aran = Aran&lt;br /&gt;
| 124 | Armi = Armi&lt;br /&gt;
| 230 | Armn = Armn&lt;br /&gt;
| 134 | Avst = Avst&lt;br /&gt;
| 360 | Bali = Bali&lt;br /&gt;
| 435 | Bamu = Bamu&lt;br /&gt;
| 259 | Bass = Bass&lt;br /&gt;
| 365 | Batk = Batk&lt;br /&gt;
| 325 | Beng = Beng&lt;br /&gt;
| 258 | Berf = Berf&lt;br /&gt;
| 334 | Bhks = Bhks&lt;br /&gt;
| 550 | Blis = Blis&lt;br /&gt;
| 285 | Bopo = Bopo&lt;br /&gt;
| 300 | Brah = Brah&lt;br /&gt;
| 570 | Brai = Brai&lt;br /&gt;
| 367 | Bugi = Bugi&lt;br /&gt;
| 372 | Buhd = Buhd&lt;br /&gt;
| 349 | Cakm = Cakm&lt;br /&gt;
| 440 | Cans = Cans&lt;br /&gt;
| 201 | Cari = Cari&lt;br /&gt;
| 358 | Cham = Cham&lt;br /&gt;
| 445 | Cher = Cher&lt;br /&gt;
| 298 | Chis = Chis&lt;br /&gt;
| 109 | Chrs = Chrs&lt;br /&gt;
| 291 | Cirt = Cirt&lt;br /&gt;
| 204 | Copt = Copt&lt;br /&gt;
| 402 | Cpmn = Cpmn&lt;br /&gt;
| 403 | Cprt = Cprt&lt;br /&gt;
| 220 | Cyrl = Cyrl&lt;br /&gt;
| 221 | Cyrs = Cyrs&lt;br /&gt;
| 315 | Deva = Deva&lt;br /&gt;
| 342 | Diak = Diak&lt;br /&gt;
| 328 | Dogr = Dogr&lt;br /&gt;
| 250 | Dsrt = Dsrt&lt;br /&gt;
| 755 | Dupl = Dupl&lt;br /&gt;
| 70 | 070 | Egyd = Egyd&lt;br /&gt;
| 60 | 060 | Egyh = Egyh&lt;br /&gt;
| 50 | 050 | Egyp = Egyp&lt;br /&gt;
| 226 | Elba = Elba&lt;br /&gt;
| 128 | Elym = Elym&lt;br /&gt;
| 430 | Ethi = Ethi&lt;br /&gt;
| 164 | Gara = Gara&lt;br /&gt;
| 241 | Geok = Geok&lt;br /&gt;
| 240 | Geor = Geor&lt;br /&gt;
| 225 | Glag = Glag&lt;br /&gt;
| 312 | Gong = Gong&lt;br /&gt;
| 313 | Gonm = Gonm&lt;br /&gt;
| 206 | Goth = Goth&lt;br /&gt;
| 343 | Gran = Gran&lt;br /&gt;
| 200 | Grek = Grek&lt;br /&gt;
| 320 | Gujr = Gujr&lt;br /&gt;
| 397 | Gukh = Gukh&lt;br /&gt;
| 310 | Guru = Guru&lt;br /&gt;
| 503 | Hanb = Hanb&lt;br /&gt;
| 286 | Hang = Hang&lt;br /&gt;
| 500 | Hani = Hani&lt;br /&gt;
| 371 | Hano = Hano&lt;br /&gt;
| 501 | Hans = Hans&lt;br /&gt;
| 502 | Hant = Hant&lt;br /&gt;
| 127 | Hatr = Hatr&lt;br /&gt;
| 125 | Hebr = Hebr&lt;br /&gt;
| 410 | Hira = Hira&lt;br /&gt;
| 80 | 080 | Hluw = Hluw&lt;br /&gt;
| 450 | Hmng = Hmng&lt;br /&gt;
| 451 | Hmnp = Hmnp&lt;br /&gt;
| 504 | Hntl = Hntl&lt;br /&gt;
| 412 | Hrkt = Hrkt&lt;br /&gt;
| 176 | Hung = Hung&lt;br /&gt;
| 610 | Inds = Inds&lt;br /&gt;
| 210 | Ital = Ital&lt;br /&gt;
| 284 | Jamo = Jamo&lt;br /&gt;
| 361 | Java = Java&lt;br /&gt;
| 413 | Jpan = Jpan&lt;br /&gt;
| 510 | Jurc = Jurc&lt;br /&gt;
| 357 | Kali = Kali&lt;br /&gt;
| 411 | Kana = Kana&lt;br /&gt;
| 368 | Kawi = Kawi&lt;br /&gt;
| 305 | Khar = Khar&lt;br /&gt;
| 355 | Khmr = Khmr&lt;br /&gt;
| 322 | Khoj = Khoj&lt;br /&gt;
| 505 | Kitl = Kitl&lt;br /&gt;
| 288 | Kits = Kits&lt;br /&gt;
| 345 | Knda = Knda&lt;br /&gt;
| 287 | Kore = Kore&lt;br /&gt;
| 436 | Kpel = Kpel&lt;br /&gt;
| 396 | Krai = Krai&lt;br /&gt;
| 317 | Kthi = Kthi&lt;br /&gt;
| 351 | Lana = Lana&lt;br /&gt;
| 356 | Laoo = Laoo&lt;br /&gt;
| 217 | Latf = Latf&lt;br /&gt;
| 216 | Latg = Latg&lt;br /&gt;
| 215 | Latn = Latn&lt;br /&gt;
| 364 | Leke = Leke&lt;br /&gt;
| 335 | Lepc = Lepc&lt;br /&gt;
| 336 | Limb = Limb&lt;br /&gt;
| 400 | Lina = Lina&lt;br /&gt;
| 401 | Linb = Linb&lt;br /&gt;
| 399 | Lisu = Lisu&lt;br /&gt;
| 437 | Loma = Loma&lt;br /&gt;
| 202 | Lyci = Lyci&lt;br /&gt;
| 116 | Lydi = Lydi&lt;br /&gt;
| 314 | Mahj = Mahj&lt;br /&gt;
| 366 | Maka = Maka&lt;br /&gt;
| 140 | Mand = Mand&lt;br /&gt;
| 139 | Mani = Mani&lt;br /&gt;
| 332 | Marc = Marc&lt;br /&gt;
| 90 | 090 | Maya = Maya&lt;br /&gt;
| 265 | Medf = Medf&lt;br /&gt;
| 438 | Mend = Mend&lt;br /&gt;
| 101 | Merc = Merc&lt;br /&gt;
| 100 | Mero = Mero&lt;br /&gt;
| 347 | Mlym = Mlym&lt;br /&gt;
| 324 | Modi = Modi&lt;br /&gt;
| 145 | Mong = Mong&lt;br /&gt;
| 218 | Moon = Moon&lt;br /&gt;
| 264 | Mroo = Mroo&lt;br /&gt;
| 337 | Mtei = Mtei&lt;br /&gt;
| 323 | Mult = Mult&lt;br /&gt;
| 350 | Mymr = Mymr&lt;br /&gt;
| 295 | Nagm = Nagm&lt;br /&gt;
| 311 | Nand = Nand&lt;br /&gt;
| 106 | Narb = Narb&lt;br /&gt;
| 159 | Nbat = Nbat&lt;br /&gt;
| 333 | Newa = Newa&lt;br /&gt;
| 85 | 085 | Nkdb = Nkdb&lt;br /&gt;
| 420 | Nkgb = Nkgb&lt;br /&gt;
| 165 | Nkoo = Nkoo&lt;br /&gt;
| 499 | Nshu = Nshu&lt;br /&gt;
| 212 | Ogam = Ogam&lt;br /&gt;
| 261 | Olck = Olck&lt;br /&gt;
| 296 | Onao = Onao&lt;br /&gt;
| 175 | Orkh = Orkh&lt;br /&gt;
| 327 | Orya = Orya&lt;br /&gt;
| 219 | Osge = Osge&lt;br /&gt;
| 260 | Osma = Osma&lt;br /&gt;
| 143 | Ougr = Ougr&lt;br /&gt;
| 126 | Palm = Palm&lt;br /&gt;
| 263 | Pauc = Pauc&lt;br /&gt;
| 15 | 015 | Pcun = Pcun&lt;br /&gt;
| 16 | 016 | Pelm = Pelm&lt;br /&gt;
| 227 | Perm = Perm&lt;br /&gt;
| 331 | Phag = Phag&lt;br /&gt;
| 131 | Phli = Phli&lt;br /&gt;
| 132 | Phlp = Phlp&lt;br /&gt;
| 133 | Phlv = Phlv&lt;br /&gt;
| 115 | Phnx = Phnx&lt;br /&gt;
| 293 | Piqd = Piqd&lt;br /&gt;
| 282 | Plrd = Plrd&lt;br /&gt;
| 130 | Prti = Prti&lt;br /&gt;
| 103 | Psin = Psin&lt;br /&gt;
| 900-949 | 900&amp;amp;ndash;949 | Qaaa-qabx | Qaaa&amp;amp;ndash;qabx = Qaaa&amp;amp;ndash;Qabx&amp;lt;!-- As a range. Separator IN &amp;quot;-&amp;quot; or NDASH;lc. OUT = NDASH. 2021-02 --&amp;gt;&lt;br /&gt;
| 900 | Qaaa = Qaaa&lt;br /&gt;
| 949 | Qabx = Qabx&lt;br /&gt;
| 303 | Ranj = Ranj&lt;br /&gt;
| 363 | Rjng = Rjng&lt;br /&gt;
| 167 | Rohg = Rohg&lt;br /&gt;
| 620 | Roro = Roro&lt;br /&gt;
| 211 | Runr = Runr&lt;br /&gt;
| 123 | Samr = Samr&lt;br /&gt;
| 292 | Sara = Sara&lt;br /&gt;
| 105 | Sarb = Sarb&lt;br /&gt;
| 344 | Saur = Saur&lt;br /&gt;
| 590 | Seal = Seal&lt;br /&gt;
| 95 | 095 | Sgnw = Sgnw&lt;br /&gt;
| 281 | Shaw = Shaw&lt;br /&gt;
| 319 | Shrd = Shrd&lt;br /&gt;
| 530 | Shui = Shui&lt;br /&gt;
| 302 | Sidd = Sidd&lt;br /&gt;
| 180 | Sidt = Sidt&lt;br /&gt;
| 318 | Sind = Sind&lt;br /&gt;
| 348 | Sinh = Sinh&lt;br /&gt;
| 141 | Sogd = Sogd&lt;br /&gt;
| 142 | Sogo = Sogo&lt;br /&gt;
| 398 | Sora = Sora&lt;br /&gt;
| 329 | Soyo = Soyo&lt;br /&gt;
| 362 | Sund = Sund&lt;br /&gt;
| 274 | Sunu = Sunu&lt;br /&gt;
| 316 | Sylo = Sylo&lt;br /&gt;
| 135 | Syrc = Syrc&lt;br /&gt;
| 138 | Syre = Syre&lt;br /&gt;
| 137 | Syrj = Syrj&lt;br /&gt;
| 136 | Syrn = Syrn&lt;br /&gt;
| 373 | Tagb = Tagb&lt;br /&gt;
| 321 | Takr = Takr&lt;br /&gt;
| 353 | Tale = Tale&lt;br /&gt;
| 354 | Talu = Talu&lt;br /&gt;
| 346 | Taml = Taml&lt;br /&gt;
| 520 | Tang = Tang&lt;br /&gt;
| 359 | Tavt = Tavt&lt;br /&gt;
| 380 | Tayo = Tayo&lt;br /&gt;
| 340 | Telu = Telu&lt;br /&gt;
| 290 | Teng = Teng&lt;br /&gt;
| 120 | Tfng = Tfng&lt;br /&gt;
| 370 | Tglg = Tglg&lt;br /&gt;
| 170 | Thaa = Thaa&lt;br /&gt;
| 352 | Thai = Thai&lt;br /&gt;
| 330 | Tibt = Tibt&lt;br /&gt;
| 326 | Tirh = Tirh&lt;br /&gt;
| 275 | Tnsa = Tnsa&lt;br /&gt;
| 229 | Todr = Todr&lt;br /&gt;
| 299 | Tols = Tols&lt;br /&gt;
| 294 | Toto = Toto&lt;br /&gt;
| 341 | Tutg = Tutg&lt;br /&gt;
| 40 | 040 | Ugar = Ugar&lt;br /&gt;
| 470 | Vaii = Vaii&lt;br /&gt;
| 280 | Visp = Visp&lt;br /&gt;
| 228 | Vith = Vith&lt;br /&gt;
| 262 | Wara = Wara&lt;br /&gt;
| 283 | Wcho = Wcho&lt;br /&gt;
| 480 | Wole = Wole&lt;br /&gt;
| 30 | 030 | Xpeo = Xpeo&lt;br /&gt;
| 20 | 020 | Xsux = Xsux&lt;br /&gt;
| 192 | Yezi = Yezi&lt;br /&gt;
| 460 | Yiii = Yiii&lt;br /&gt;
| 339 | Zanb = Zanb&lt;br /&gt;
| 994 | Zinh = Zinh&lt;br /&gt;
| 995 | Zmth = Zmth&lt;br /&gt;
| 993 | Zsye = Zsye&lt;br /&gt;
| 996 | Zsym = Zsym&lt;br /&gt;
| 997 | Zxxx = Zxxx&lt;br /&gt;
| 998 | Zyyy = Zyyy&lt;br /&gt;
| 999 | Zzzz = Zzzz&lt;br /&gt;
| #default={{{default|{{error|Error using {{tlx|ISO 15924 code}}: input &amp;quot;{{{alpha4|{{{1|}}}}}}&amp;quot; not recognized|tag=span}}}}}&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Template:ISO_15924_alias&amp;diff=3548</id>
		<title>Template:ISO 15924 alias</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Template:ISO_15924_alias&amp;diff=3548"/>
		<updated>2026-01-10T08:42:16Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- As of 2025-06-30 this is the complete list of 177 Unicode 17.0 code-to-alias script IDs (Property Value Alias) by ISO 15924/Unicode&lt;br /&gt;
 Expected input: &amp;quot;alpha4=&amp;quot; OR &amp;quot;1=&amp;quot; (an existing ISO 15924 code in alpha4, eg &amp;quot;Latn&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;{{#switch:{{ISO 15924 code|{{{alpha4|{{{1|}}}}}}}}&lt;br /&gt;
| Adlm = Adlam&lt;br /&gt;
| Aghb = Caucasian Albanian&lt;br /&gt;
| Ahom = Ahom&lt;br /&gt;
| Arab = Arabic&lt;br /&gt;
| Armi = Imperial Aramaic&lt;br /&gt;
| Armn = Armenian&lt;br /&gt;
| Avst = Avestan&lt;br /&gt;
| Bali = Balinese&lt;br /&gt;
| Bamu = Bamum&lt;br /&gt;
| Bass = Bassa Vah&lt;br /&gt;
| Batk = Batak&lt;br /&gt;
| Beng = Bengali&lt;br /&gt;
| Berf = Beria Erfe&lt;br /&gt;
| Bhks = Bhaiksuki&lt;br /&gt;
| Bopo = Bopomofo&lt;br /&gt;
| Brah = Brahmi&lt;br /&gt;
| Brai = Braille&lt;br /&gt;
| Bugi = Buginese&lt;br /&gt;
| Buhd = Buhid&lt;br /&gt;
| Cakm = Chakma&lt;br /&gt;
| Cans = Canadian Aboriginal&lt;br /&gt;
| Cari = Carian&lt;br /&gt;
| Cham = Cham&lt;br /&gt;
| Cher = Cherokee&lt;br /&gt;
| Chrs = Chorasmian&lt;br /&gt;
| Copt = Coptic&lt;br /&gt;
| Cpmn = Cypro Minoan&lt;br /&gt;
| Cprt = Cypriot&lt;br /&gt;
| Cyrl = Cyrillic&lt;br /&gt;
| Deva = Devanagari&lt;br /&gt;
| Diak = Dives Akuru&lt;br /&gt;
| Dogr = Dogra&lt;br /&gt;
| Dsrt = Deseret&lt;br /&gt;
| Dupl = Duployan&lt;br /&gt;
| Egyp = Egyptian Hieroglyphs&lt;br /&gt;
| Elba = Elbasan&lt;br /&gt;
| Elym = Elymaic&lt;br /&gt;
| Ethi = Ethiopic&lt;br /&gt;
| Gara = Garay&lt;br /&gt;
| Geok = Georgian&lt;br /&gt;
| Geor = Georgian&lt;br /&gt;
| Glag = Glagolitic&lt;br /&gt;
| Gong = Gunjala Gondi&lt;br /&gt;
| Gonm = Masaram Gondi&lt;br /&gt;
| Goth = Gothic&lt;br /&gt;
| Gran = Grantha&lt;br /&gt;
| Grek = Greek&lt;br /&gt;
| Gujr = Gujarati&lt;br /&gt;
| Gukh = Gurung Khema&lt;br /&gt;
| Guru = Gurmukhi&lt;br /&gt;
| Hang = Hangul&lt;br /&gt;
| Hani = Han&lt;br /&gt;
| Hano = Hanunoo&lt;br /&gt;
| Hatr = Hatran&lt;br /&gt;
| Hebr = Hebrew&lt;br /&gt;
| Hira = Hiragana&lt;br /&gt;
| Hluw = Anatolian Hieroglyphs&lt;br /&gt;
| Hmng = Pahawh Hmong&lt;br /&gt;
| Hmnp = Nyiakeng Puachue Hmong&lt;br /&gt;
| Hrkt = Katakana or Hiragana&lt;br /&gt;
| Hung = Old Hungarian&lt;br /&gt;
| Ital = Old Italic&lt;br /&gt;
| Java = Javanese&lt;br /&gt;
| Kali = Kayah Li&lt;br /&gt;
| Kana = Katakana&lt;br /&gt;
| Kawi = Kawi&lt;br /&gt;
| Khar = Kharoshthi&lt;br /&gt;
| Khmr = Khmer&lt;br /&gt;
| Khoj = Khojki&lt;br /&gt;
| Kits = Khitan Small Script&lt;br /&gt;
| Knda = Kannada&lt;br /&gt;
| Krai = Kirat Rai&lt;br /&gt;
| Kthi = Kaithi&lt;br /&gt;
| Lana = Tai Tham&lt;br /&gt;
| Laoo = Lao&lt;br /&gt;
| Latn = Latin&lt;br /&gt;
| Lepc = Lepcha&lt;br /&gt;
| Limb = Limbu&lt;br /&gt;
| Lina = Linear A&lt;br /&gt;
| Linb = Linear B&lt;br /&gt;
| Lisu = Lisu&lt;br /&gt;
| Lyci = Lycian&lt;br /&gt;
| Lydi = Lydian&lt;br /&gt;
| Mahj = Mahajani&lt;br /&gt;
| Maka = Makasar&lt;br /&gt;
| Mand = Mandaic&lt;br /&gt;
| Mani = Manichaean&lt;br /&gt;
| Marc = Marchen&lt;br /&gt;
| Medf = Medefaidrin&lt;br /&gt;
| Mend = Mende Kikakui&lt;br /&gt;
| Merc = Meroitic Cursive&lt;br /&gt;
| Mero = Meroitic Hieroglyphs&lt;br /&gt;
| Mlym = Malayalam&lt;br /&gt;
| Modi = Modi&lt;br /&gt;
| Mong = Mongolian&lt;br /&gt;
| Mroo = Mro&lt;br /&gt;
| Mtei = Meetei Mayek&lt;br /&gt;
| Mult = Multani&lt;br /&gt;
| Mymr = Myanmar&lt;br /&gt;
| Nagm = Nag Mundari&lt;br /&gt;
| Nand = Nandinagari&lt;br /&gt;
| Narb = Old North Arabian&lt;br /&gt;
| Nbat = Nabataean&lt;br /&gt;
| Newa = Newa&lt;br /&gt;
| Nkoo = NKo&lt;br /&gt;
| Nshu = Nushu&lt;br /&gt;
| Ogam = Ogham&lt;br /&gt;
| Olck = Ol Chiki&lt;br /&gt;
| Onao = Ol Onal&lt;br /&gt;
| Orkh = Old Turkic&lt;br /&gt;
| Orya = Oriya&lt;br /&gt;
| Osge = Osage&lt;br /&gt;
| Osma = Osmanya&lt;br /&gt;
| Ougr = Old Uyghur&lt;br /&gt;
| Palm = Palmyrene&lt;br /&gt;
| Pauc = Pau Cin Hau&lt;br /&gt;
| Perm = Old Permic&lt;br /&gt;
| Phag = Phags-pa&lt;br /&gt;
| Phli = Inscriptional Pahlavi&lt;br /&gt;
| Phlp = Psalter Pahlavi&lt;br /&gt;
| Phnx = Phoenician&lt;br /&gt;
| Plrd = Miao&lt;br /&gt;
| Prti = Inscriptional Parthian&lt;br /&gt;
| Rjng = Rejang&lt;br /&gt;
| Rohg = Hanifi Rohingya&lt;br /&gt;
| Runr = Runic&lt;br /&gt;
| Samr = Samaritan&lt;br /&gt;
| Sarb = Old South Arabian&lt;br /&gt;
| Saur = Saurashtra&lt;br /&gt;
| Sgnw = SignWriting&lt;br /&gt;
| Shaw = Shavian&lt;br /&gt;
| Shrd = Sharada&lt;br /&gt;
| Sidd = Siddham&lt;br /&gt;
| Sidt = Sidetic&lt;br /&gt;
| Sind = Khudawadi&lt;br /&gt;
| Sinh = Sinhala&lt;br /&gt;
| Sogd = Sogdian&lt;br /&gt;
| Sogo = Old Sogdian&lt;br /&gt;
| Sora = Sora Sompeng&lt;br /&gt;
| Soyo = Soyombo&lt;br /&gt;
| Sund = Sundanese&lt;br /&gt;
| Sunu = Sunuwar&lt;br /&gt;
| Sylo = Syloti Nagri&lt;br /&gt;
| Syrc = Syriac&lt;br /&gt;
| Tagb = Tagbanwa&lt;br /&gt;
| Takr = Takri&lt;br /&gt;
| Tale = Tai Le&lt;br /&gt;
| Talu = New Tai Lue&lt;br /&gt;
| Taml = Tamil&lt;br /&gt;
| Tang = Tangut&lt;br /&gt;
| Tavt = Tai Viet&lt;br /&gt;
| Tayo = Tai Yo&lt;br /&gt;
| Telu = Telugu&lt;br /&gt;
| Tfng = Tifinagh&lt;br /&gt;
| Tglg = Tagalog&lt;br /&gt;
| Thaa = Thaana&lt;br /&gt;
| Thai = Thai&lt;br /&gt;
| Tibt = Tibetan&lt;br /&gt;
| Tirh = Tirhuta&lt;br /&gt;
| Tnsa = Tangsa&lt;br /&gt;
| Todr = Todhri&lt;br /&gt;
| Tols = Tolong Siki&lt;br /&gt;
| Toto = Toto&lt;br /&gt;
| Tutg = Tulu Tigalari&lt;br /&gt;
| Ugar = Ugaritic&lt;br /&gt;
| Vaii = Vai&lt;br /&gt;
| Vith = Vithkuqi&lt;br /&gt;
| Wara = Warang Citi&lt;br /&gt;
| Wcho = Wancho&lt;br /&gt;
| Xpeo = Old Persian&lt;br /&gt;
| Xsux = Cuneiform&lt;br /&gt;
| Yezi = Yezidi&lt;br /&gt;
| Yiii = Yi&lt;br /&gt;
| Zanb = Zanabazar Square&lt;br /&gt;
| Zinh = Inherited&lt;br /&gt;
| Zyyy = Common&lt;br /&gt;
| Zzzz = Unknown&lt;br /&gt;
| #default = {{{default|}}}&lt;br /&gt;
}}&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&amp;lt;noinclude&amp;gt;{{documentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Template:Quote&amp;diff=3546</id>
		<title>Template:Quote</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Template:Quote&amp;diff=3546"/>
		<updated>2026-01-10T08:42:16Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Template:Blockquote]]&lt;br /&gt;
&lt;br /&gt;
{{Redirect category shell|&lt;br /&gt;
{{R from move}}&lt;br /&gt;
{{R from modification}}&lt;br /&gt;
{{R from template shortcut}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Template:Blockquote&amp;diff=3544</id>
		<title>Template:Blockquote</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Template:Blockquote&amp;diff=3544"/>
		<updated>2026-01-10T08:42:16Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;templatestyles src=&amp;quot;Template:Blockquote/styles.css&amp;quot; /&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;blockquote class=&amp;quot;templatequote {{{class|}}}&amp;quot; {{#if:{{{style|}}}|style=&amp;quot;{{{style}}}&amp;quot;}}&amp;gt;{{{text|{{{content|{{{quotetext|{{{quote|{{{1|&amp;lt;includeonly&amp;gt;{{error|Error: No text given for quotation (or equals sign used in the actual argument to an unnamed parameter)}}{{main other|[[Category:Pages incorrectly using the quote template]]}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{lorem ipsum}}&amp;lt;/noinclude&amp;gt;}}}}}}}}}}}}}}}{{#if:{{{multiline|}}}|&amp;lt;nowiki /&amp;gt;&amp;lt;!-- See talk page in 2025 for why this newline needs to be here --&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;|&amp;lt;/blockquote&amp;gt;}}{{#if:{{{sign|}}}{{{cite|}}}{{{author|}}}{{{by|}}}{{{personquoted|}}}{{{source|}}}{{{ts|}}}{{{title|}}}{{{publication|}}}{{{quotesource|}}}{{{char|}}}{{{character|}}}{{{2|}}}{{{3|}}}{{{4|}}}{{{5|}}}|&lt;br /&gt;
&amp;lt;div class=&amp;quot;templatequotecite&amp;quot;&amp;gt;&amp;lt;p style=&amp;quot;display: inline; padding-left: 2.3em;&amp;quot;&amp;gt;—&amp;amp;#8202;{{#if:{{{char|{{{character|{{{5|}}}}}}}}}|{{{char|{{{character|{{{5|}}}}}}}}}, in&amp;amp;#32;}}{{Comma separated entries&lt;br /&gt;
 | {{if empty|{{{sign|}}}|{{{cite|}}}|{{{author|}}}|{{{by|}}}|{{{personquoted|}}}|{{{2|}}}}}&lt;br /&gt;
 | {{if empty|{{{title|}}}|{{{publication|}}}|{{{ts|}}}|{{{quotesource|}}}|{{{3|}}}}}&lt;br /&gt;
 | {{if empty|{{{source|}}}|{{{4|}}}}}&lt;br /&gt;
 }}&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using Blockquote template with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Blockquote]] with unknown parameter &amp;quot;_VALUE_&amp;quot;|ignoreblank=y| 1 | 2 | 3 | 4 | 5 | author | by | char | character | cite | class | content | multiline | personquoted | publication | quote | quotesource | quotetext | sign | source | style | text | title | ts }}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&amp;lt;!--Add categories to the /doc subpage, not here! --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Template:IPA_notice/msg&amp;diff=3542</id>
		<title>Template:IPA notice/msg</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Template:IPA_notice/msg&amp;diff=3542"/>
		<updated>2026-01-10T08:42:16Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#ifeq:{{{preamble|}}}|no||This {{#if:{{{1|}}}|{{{1}}}|{{main other|article|page}}}} contains &#039;&#039;&#039;[[phonetic transcription]]s in the [[International Phonetic Alphabet]] (IPA)&#039;&#039;&#039;.&amp;amp;#32;}}For an introductory guide on IPA symbols, see [[Help:IPA]].{{#ifeq:{{{brackets|}}}|no||&amp;amp;#32;For the distinction between {{IPA|[&amp;amp;nbsp;]}}, {{IPA|/&amp;amp;nbsp;/}} and {{angbr IPA|&amp;amp;nbsp;}}, see [[International Phonetic Alphabet#Brackets and transcription delimiters|IPA §&amp;amp;nbsp;Brackets and transcription delimiters]].}}&amp;lt;noinclude&amp;gt;{{documentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Template:Angbr_IPA&amp;diff=3540</id>
		<title>Template:Angbr IPA</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Template:Angbr_IPA&amp;diff=3540"/>
		<updated>2026-01-10T08:42:16Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;amp;#x27E8;{{#invoke:Template wrapper|wrap|_template=IPA|_include-positional=yes}}&amp;amp;#x27E9;&amp;lt;noinclude&amp;gt;{{documentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Template:Sister_project&amp;diff=3538</id>
		<title>Template:Sister project</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Template:Sister_project&amp;diff=3538"/>
		<updated>2026-01-10T08:42:16Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Side box&lt;br /&gt;
| templatestyles = Sister project/styles.css&lt;br /&gt;
| metadata=no&lt;br /&gt;
| position = {{{position|}}}&lt;br /&gt;
| image    = &lt;br /&gt;
  {{#switch: {{{image|}}}&lt;br /&gt;
  | none =    &amp;lt;!-- &amp;quot;image=none&amp;quot;, do nothing --&amp;gt;&lt;br /&gt;
  |      =    &amp;lt;!-- No image fed, select an image --&amp;gt;&lt;br /&gt;
    [[File:{{#switch: {{lc: {{{project|}}} }}&lt;br /&gt;
    | commons|c              = Commons-logo.svg&lt;br /&gt;
    | meta|metawiki|m        = Wikimedia Community Logo.svg&lt;br /&gt;
    | wikibooks|wbk|wb|b     = Wikibooks-logo-en-noslogan.svg&lt;br /&gt;
    | wikidata|data          = Wikidata-logo.svg&lt;br /&gt;
    | wikiquote|quote|wqt|q  = Wikiquote-logo.svg&lt;br /&gt;
    | wikipedia|wp|w|iw      = Wikipedia-logo-v2.svg&lt;br /&gt;
    | wikisource|source|ws|s = Wikisource-logo.svg&lt;br /&gt;
    | wiktionary|wikt|wkt|wdy|d = Wiktionary-logo-en-v2.svg&lt;br /&gt;
    | wikinews|news|wnw|n    = Wikinews-logo.svg&lt;br /&gt;
    | wikispecies|species    = Wikispecies-logo.svg&lt;br /&gt;
    | wikiversity|wvy|v      = Wikiversity logo 2017.svg&lt;br /&gt;
    | wikivoyage|voyage|voy  = Wikivoyage-Logo-v3-icon.svg&lt;br /&gt;
    | mediawiki|mw           = MediaWiki-2020-icon.svg&lt;br /&gt;
    | outreachwiki|outreach  = Wikimedia Outreach.png&lt;br /&gt;
    | incubator              = Incubator-notext.svg&lt;br /&gt;
    | wikifunctions = Wikifunctions-logo.svg&lt;br /&gt;
    | #default               = Wikimedia-logo.svg&lt;br /&gt;
    }}|40x40px|class=noviewer|alt=&lt;br /&gt;
    ]]&lt;br /&gt;
  | #default = {{{image|}}}&lt;br /&gt;
  }}&lt;br /&gt;
| textclass  = {{{textclass|plainlist}}}&lt;br /&gt;
| textstyle  = {{{textstyle|}}}&lt;br /&gt;
| text       = {{{text}}}&lt;br /&gt;
| below      = {{{below|}}}&lt;br /&gt;
| imageright = {{{imageright|}}}&lt;br /&gt;
| class      = plainlinks sistersitebox&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;{{Documentation}}&amp;lt;!-- Add categories and interwikis to the /doc subpage, not here! --&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Module:WikidataIB&amp;diff=3536</id>
		<title>Module:WikidataIB</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Module:WikidataIB&amp;diff=3536"/>
		<updated>2026-01-10T08:42:15Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Version: 2023-07-10&lt;br /&gt;
-- Module to implement use of a blacklist and whitelist for infobox fields&lt;br /&gt;
-- Can take a named parameter |qid which is the Wikidata ID for the article&lt;br /&gt;
-- if not supplied, it will use the Wikidata ID associated with the current page.&lt;br /&gt;
-- Fields in blacklist are never to be displayed, i.e. module must return nil in all circumstances&lt;br /&gt;
-- Fields in whitelist return local value if it exists or the Wikidata value otherwise&lt;br /&gt;
-- The name of the field that this function is called from is passed in named parameter |name&lt;br /&gt;
-- The name is compulsory when blacklist or whitelist is used,&lt;br /&gt;
-- so the module returns nil if it is not supplied.&lt;br /&gt;
-- blacklist is passed in named parameter |suppressfields (or |spf)&lt;br /&gt;
-- whitelist is passed in named parameter |fetchwikidata (or |fwd)&lt;br /&gt;
&lt;br /&gt;
require(&amp;quot;strict&amp;quot;)&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local cdate -- initialise as nil and only load _complex_date function if needed&lt;br /&gt;
-- Module:Complex date is loaded lazily and has the following dependencies:&lt;br /&gt;
-- Module:Calendar&lt;br /&gt;
-- Module:ISOdate&lt;br /&gt;
-- Module:DateI18n&lt;br /&gt;
-- Module:I18n/complex date&lt;br /&gt;
-- Module:Ordinal&lt;br /&gt;
-- Module:I18n/ordinal&lt;br /&gt;
-- Module:Yesno&lt;br /&gt;
-- Module:Formatnum&lt;br /&gt;
-- Module:Linguistic&lt;br /&gt;
--&lt;br /&gt;
-- The following, taken from https://www.mediawiki.org/wiki/Wikibase/DataModel#Dates_and_times,&lt;br /&gt;
-- is needed to use Module:Complex date which seemingly requires date precision as a string.&lt;br /&gt;
-- It would work better if only the authors of the mediawiki page could spell &#039;millennium&#039;.&lt;br /&gt;
local dp = {&lt;br /&gt;
	[6] = &amp;quot;millennium&amp;quot;,&lt;br /&gt;
	[7] = &amp;quot;century&amp;quot;,&lt;br /&gt;
	[8] = &amp;quot;decade&amp;quot;,&lt;br /&gt;
	[9] = &amp;quot;year&amp;quot;,&lt;br /&gt;
	[10] = &amp;quot;month&amp;quot;,&lt;br /&gt;
	[11] = &amp;quot;day&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local i18n =&lt;br /&gt;
{&lt;br /&gt;
	[&amp;quot;errors&amp;quot;] =&lt;br /&gt;
	{&lt;br /&gt;
		[&amp;quot;property-not-found&amp;quot;] = &amp;quot;Property not found.&amp;quot;,&lt;br /&gt;
		[&amp;quot;No property supplied&amp;quot;] = &amp;quot;No property supplied&amp;quot;,&lt;br /&gt;
		[&amp;quot;entity-not-found&amp;quot;] = &amp;quot;Wikidata entity not found.&amp;quot;,&lt;br /&gt;
		[&amp;quot;unknown-claim-type&amp;quot;] = &amp;quot;Unknown claim type.&amp;quot;,&lt;br /&gt;
		[&amp;quot;unknown-entity-type&amp;quot;] = &amp;quot;Unknown entity type.&amp;quot;,&lt;br /&gt;
		[&amp;quot;qualifier-not-found&amp;quot;] = &amp;quot;Qualifier not found.&amp;quot;,&lt;br /&gt;
		[&amp;quot;site-not-found&amp;quot;] = &amp;quot;Wikimedia project not found.&amp;quot;,&lt;br /&gt;
		[&amp;quot;labels-not-found&amp;quot;] = &amp;quot;No labels found.&amp;quot;,&lt;br /&gt;
		[&amp;quot;descriptions-not-found&amp;quot;] = &amp;quot;No descriptions found.&amp;quot;,&lt;br /&gt;
		[&amp;quot;aliases-not-found&amp;quot;] = &amp;quot;No aliases found.&amp;quot;,&lt;br /&gt;
		[&amp;quot;unknown-datetime-format&amp;quot;] = &amp;quot;Unknown datetime format.&amp;quot;,&lt;br /&gt;
		[&amp;quot;local-article-not-found&amp;quot;] = &amp;quot;Article is available on Wikidata, but not on Wikipedia&amp;quot;,&lt;br /&gt;
		[&amp;quot;dab-page&amp;quot;] = &amp;quot; (dab)&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	[&amp;quot;months&amp;quot;] =&lt;br /&gt;
	{&lt;br /&gt;
		&amp;quot;January&amp;quot;, &amp;quot;February&amp;quot;, &amp;quot;March&amp;quot;, &amp;quot;April&amp;quot;, &amp;quot;May&amp;quot;, &amp;quot;June&amp;quot;,&lt;br /&gt;
		&amp;quot;July&amp;quot;, &amp;quot;August&amp;quot;, &amp;quot;September&amp;quot;, &amp;quot;October&amp;quot;, &amp;quot;November&amp;quot;, &amp;quot;December&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	[&amp;quot;century&amp;quot;] = &amp;quot;century&amp;quot;,&lt;br /&gt;
	[&amp;quot;BC&amp;quot;] = &amp;quot;BC&amp;quot;,&lt;br /&gt;
	[&amp;quot;BCE&amp;quot;] = &amp;quot;BCE&amp;quot;,&lt;br /&gt;
	[&amp;quot;ordinal&amp;quot;] =&lt;br /&gt;
	{&lt;br /&gt;
		[1] = &amp;quot;st&amp;quot;,&lt;br /&gt;
		[2] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[3] = &amp;quot;rd&amp;quot;,&lt;br /&gt;
		[&amp;quot;default&amp;quot;] = &amp;quot;th&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	[&amp;quot;filespace&amp;quot;] = &amp;quot;File&amp;quot;,&lt;br /&gt;
	[&amp;quot;Unknown&amp;quot;] = &amp;quot;Unknown&amp;quot;,&lt;br /&gt;
	[&amp;quot;NaN&amp;quot;] = &amp;quot;Not a number&amp;quot;,&lt;br /&gt;
	-- set the following to the name of a tracking category,&lt;br /&gt;
	-- e.g. &amp;quot;[[Category:Articles with missing Wikidata information]]&amp;quot;, or &amp;quot;&amp;quot; to disable:&lt;br /&gt;
	[&amp;quot;missinginfocat&amp;quot;] = &amp;quot;[[Category:Articles with missing Wikidata information]]&amp;quot;,&lt;br /&gt;
	[&amp;quot;editonwikidata&amp;quot;] = &amp;quot;Edit this on Wikidata&amp;quot;,&lt;br /&gt;
	[&amp;quot;latestdatequalifier&amp;quot;] = function (date) return &amp;quot;before &amp;quot; .. date end,&lt;br /&gt;
	-- some languages, e.g. Bosnian use a period as a suffix after each number in a date&lt;br /&gt;
	[&amp;quot;datenumbersuffix&amp;quot;] = &amp;quot;&amp;quot;,&lt;br /&gt;
	[&amp;quot;list separator&amp;quot;] = &amp;quot;, &amp;quot;,&lt;br /&gt;
	[&amp;quot;multipliers&amp;quot;] = {&lt;br /&gt;
		[0]  = &amp;quot;&amp;quot;,&lt;br /&gt;
		[3]  = &amp;quot; thousand&amp;quot;,&lt;br /&gt;
		[6]  = &amp;quot; million&amp;quot;,&lt;br /&gt;
		[9]  = &amp;quot; billion&amp;quot;,&lt;br /&gt;
		[12] = &amp;quot; trillion&amp;quot;,&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
-- This allows an internationisation module to override the above table&lt;br /&gt;
if &#039;en&#039; ~= mw.getContentLanguage():getCode() then&lt;br /&gt;
	require(&amp;quot;Module:i18n&amp;quot;).loadI18n(&amp;quot;Module:WikidataIB/i18n&amp;quot;, i18n)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- This piece of html implements a collapsible container. Check the classes exist on your wiki.&lt;br /&gt;
local collapsediv = &#039;&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; overflow:auto;&amp;quot; data-expandtext=&amp;quot;{{int:show}}&amp;quot; data-collapsetext=&amp;quot;{{int:hide}}&amp;quot;&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
-- Some items should not be linked.&lt;br /&gt;
-- Each wiki can create a list of those in Module:WikidataIB/nolinks&lt;br /&gt;
-- It should return a table called itemsindex, containing true for each item not to be linked&lt;br /&gt;
local donotlink = {}&lt;br /&gt;
local nolinks_exists, nolinks = pcall(mw.loadData, &amp;quot;Module:WikidataIB/nolinks&amp;quot;)&lt;br /&gt;
if nolinks_exists then&lt;br /&gt;
	donotlink = nolinks.itemsindex&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- To satisfy Wikipedia:Manual of Style/Titles, certain types of items are italicised, and others are quoted.&lt;br /&gt;
-- The submodule [[Module:WikidataIB/titleformats]] lists the entity-ids used in &#039;instance of&#039; (P31),&lt;br /&gt;
-- which allows this module to identify the values that should be formatted.&lt;br /&gt;
-- WikidataIB/titleformats exports a table p.formats, which is indexed by entity-id, and contains the value &amp;quot; or &#039;&#039;&lt;br /&gt;
local formats = {}&lt;br /&gt;
local titleformats_exists, titleformats = pcall(mw.loadData, &amp;quot;Module:WikidataIB/titleformats&amp;quot;)&lt;br /&gt;
if titleformats_exists then&lt;br /&gt;
	formats = titleformats.formats&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Private functions&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
--&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- makeOrdinal needs to be internationalised along with the above:&lt;br /&gt;
-- takes cardinal number as a numeric and returns the ordinal as a string&lt;br /&gt;
-- we need three exceptions in English for 1st, 2nd, 3rd, 21st, .. 31st, etc.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: none&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
local makeOrdinal = function(cardinal)&lt;br /&gt;
	local ordsuffix = i18n.ordinal.default&lt;br /&gt;
	if cardinal % 10 == 1 then&lt;br /&gt;
		ordsuffix = i18n.ordinal[1]&lt;br /&gt;
	elseif cardinal % 10 == 2 then&lt;br /&gt;
		ordsuffix = i18n.ordinal[2]&lt;br /&gt;
	elseif cardinal % 10 == 3 then&lt;br /&gt;
		ordsuffix = i18n.ordinal[3]&lt;br /&gt;
	end&lt;br /&gt;
	-- In English, 1, 21, 31, etc. use &#039;st&#039;, but 11, 111, etc. use &#039;th&#039;&lt;br /&gt;
	-- similarly for 12 and 13, etc.&lt;br /&gt;
	if (cardinal % 100 == 11) or (cardinal % 100 == 12) or (cardinal % 100 == 13) then&lt;br /&gt;
		ordsuffix = i18n.ordinal.default&lt;br /&gt;
	end&lt;br /&gt;
	return tostring(cardinal) .. ordsuffix&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- findLang takes a &amp;quot;langcode&amp;quot; parameter if supplied and valid&lt;br /&gt;
-- otherwise it tries to create it from the user&#039;s set language ({{int:lang}})&lt;br /&gt;
-- failing that it uses the wiki&#039;s content language.&lt;br /&gt;
-- It returns a language object&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: none&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
local findLang = function(langcode)&lt;br /&gt;
	local langobj&lt;br /&gt;
	langcode = mw.text.trim(langcode or &amp;quot;&amp;quot;)&lt;br /&gt;
	if mw.language.isKnownLanguageTag(langcode) then&lt;br /&gt;
		langobj = mw.language.new( langcode )&lt;br /&gt;
	else&lt;br /&gt;
		langcode = mw.getCurrentFrame():callParserFunction(&#039;int&#039;, {&#039;lang&#039;})&lt;br /&gt;
		if mw.language.isKnownLanguageTag(langcode) then&lt;br /&gt;
			langobj = mw.language.new( langcode )&lt;br /&gt;
		else&lt;br /&gt;
			langobj = mw.language.getContentLanguage()&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return langobj&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- _getItemLangCode takes a qid parameter (using the current page&#039;s qid if blank)&lt;br /&gt;
-- If the item for that qid has property country (P17) it looks at the first preferred value&lt;br /&gt;
-- If the country has an official language (P37), it looks at the first preferred value&lt;br /&gt;
-- If that official language has a language code (P424), it returns the first preferred value&lt;br /&gt;
-- Otherwise it returns nothing.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: none&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
local _getItemLangCode = function(qid)&lt;br /&gt;
	qid = mw.text.trim(qid or &amp;quot;&amp;quot;):upper()&lt;br /&gt;
	if qid == &amp;quot;&amp;quot; then qid = mw.wikibase.getEntityIdForCurrentPage() end&lt;br /&gt;
	if not qid then return end&lt;br /&gt;
	local prop17 = mw.wikibase.getBestStatements(qid, &amp;quot;P17&amp;quot;)[1]&lt;br /&gt;
	if not prop17 or prop17.mainsnak.snaktype ~= &amp;quot;value&amp;quot; then return end&lt;br /&gt;
	local qid17 = prop17.mainsnak.datavalue.value.id&lt;br /&gt;
	local prop37 = mw.wikibase.getBestStatements(qid17, &amp;quot;P37&amp;quot;)[1]&lt;br /&gt;
	if not prop37 or prop37.mainsnak.snaktype ~= &amp;quot;value&amp;quot; then return end&lt;br /&gt;
	local qid37 = prop37.mainsnak.datavalue.value.id&lt;br /&gt;
	local prop424 = mw.wikibase.getBestStatements(qid37, &amp;quot;P424&amp;quot;)[1]&lt;br /&gt;
	if not prop424 or prop424.mainsnak.snaktype ~= &amp;quot;value&amp;quot; then return end&lt;br /&gt;
	return prop424.mainsnak.datavalue.value&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- roundto takes a number (x)&lt;br /&gt;
-- and returns it rounded to (sf) significant figures&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: none&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
local roundto = function(x, sf)&lt;br /&gt;
	if x == 0 then return 0 end&lt;br /&gt;
	local s = 1&lt;br /&gt;
	if x &amp;lt; 0 then&lt;br /&gt;
		x = -x&lt;br /&gt;
		s = -1&lt;br /&gt;
	end&lt;br /&gt;
	if sf &amp;lt; 1 then sf = 1 end&lt;br /&gt;
	local p = 10 ^ (math.floor(math.log10(x)) - sf + 1)&lt;br /&gt;
	x = math.floor(x / p + 0.5) * p * s&lt;br /&gt;
	-- if it&#039;s integral, cast to an integer:&lt;br /&gt;
	if x == math.floor(x) then x = math.floor(x) end&lt;br /&gt;
	return x&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- decimalToDMS takes a decimal degrees (x) with precision (p)&lt;br /&gt;
-- and returns degrees/minutes/seconds according to the precision&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: none&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
local decimalToDMS = function(x, p)&lt;br /&gt;
	-- if p is not supplied, use a precision around 0.1 seconds&lt;br /&gt;
	if not tonumber(p) then p = 1e-4 end&lt;br /&gt;
	local d = math.floor(x)&lt;br /&gt;
	local ms = (x - d) * 60&lt;br /&gt;
	if p &amp;gt; 0.5 then -- precision is &amp;gt; 1/2 a degree&lt;br /&gt;
		if ms &amp;gt; 30 then d = d + 1 end&lt;br /&gt;
		ms = 0&lt;br /&gt;
	end&lt;br /&gt;
	local m = math.floor(ms)&lt;br /&gt;
	local s = (ms - m) * 60&lt;br /&gt;
	if p &amp;gt; 0.008 then -- precision is &amp;gt; 1/2 a minute&lt;br /&gt;
		if s &amp;gt; 30 then m = m +1 end&lt;br /&gt;
		s = 0&lt;br /&gt;
	elseif p &amp;gt; 0.00014 then -- precision is &amp;gt; 1/2 a second&lt;br /&gt;
		s = math.floor(s + 0.5)&lt;br /&gt;
	elseif p &amp;gt; 0.000014 then -- precision is &amp;gt; 1/20 second&lt;br /&gt;
		s = math.floor(10 * s + 0.5) / 10&lt;br /&gt;
	elseif p &amp;gt; 0.0000014 then -- precision is &amp;gt; 1/200 second&lt;br /&gt;
		s = math.floor(100 * s + 0.5) / 100&lt;br /&gt;
	else -- cap it at 3 dec places for now&lt;br /&gt;
		s = math.floor(1000 * s + 0.5) / 1000&lt;br /&gt;
	end&lt;br /&gt;
	return d, m, s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- decimalPrecision takes a decimal (x) with precision (p)&lt;br /&gt;
-- and returns x rounded approximately to the given precision&lt;br /&gt;
-- precision should be between 1 and 1e-6, preferably a power of 10.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: none&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
local decimalPrecision = function(x, p)&lt;br /&gt;
	local s = 1&lt;br /&gt;
	if x &amp;lt; 0 then&lt;br /&gt;
		x = -x&lt;br /&gt;
		s = -1&lt;br /&gt;
	end&lt;br /&gt;
	-- if p is not supplied, pick an arbitrary precision&lt;br /&gt;
	if not tonumber(p) then p = 1e-4&lt;br /&gt;
	elseif p &amp;gt; 1 then p = 1&lt;br /&gt;
	elseif p &amp;lt; 1e-6 then p = 1e-6&lt;br /&gt;
	else p = 10 ^ math.floor(math.log10(p))&lt;br /&gt;
	end&lt;br /&gt;
	x = math.floor(x / p + 0.5) * p * s&lt;br /&gt;
	-- if it&#039;s integral, cast to an integer:&lt;br /&gt;
	if  x == math.floor(x) then x = math.floor(x) end&lt;br /&gt;
	-- if it&#039;s less than 1e-4, it will be in exponent form, so return a string with 6dp&lt;br /&gt;
	-- 9e-5 becomes 0.000090&lt;br /&gt;
	if math.abs(x) &amp;lt; 1e-4 then x = string.format(&amp;quot;%f&amp;quot;, x) end&lt;br /&gt;
	return x&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- formatDate takes a datetime of the usual format from mw.wikibase.entity:formatPropertyValues&lt;br /&gt;
-- like &amp;quot;1 August 30 BCE&amp;quot; as parameter 1&lt;br /&gt;
-- and formats it according to the df (date format) and bc parameters&lt;br /&gt;
-- df = [&amp;quot;dmy&amp;quot; / &amp;quot;mdy&amp;quot; / &amp;quot;y&amp;quot;] default will be &amp;quot;dmy&amp;quot;&lt;br /&gt;
-- bc = [&amp;quot;BC&amp;quot; / &amp;quot;BCE&amp;quot;] default will be &amp;quot;BCE&amp;quot;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: none&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
local format_Date = function(datetime, dateformat, bc)&lt;br /&gt;
	local datetime = datetime or &amp;quot;1 August 30 BCE&amp;quot; -- in case of nil value&lt;br /&gt;
	-- chop off multiple vales and/or any hours, mins, etc.&lt;br /&gt;
	-- keep anything before punctuation - we just want a single date:&lt;br /&gt;
	local dateval = string.match( datetime, &amp;quot;[%w ]+&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	local dateformat = string.lower(dateformat or &amp;quot;dmy&amp;quot;) -- default to dmy&lt;br /&gt;
&lt;br /&gt;
	local bc = string.upper(bc or &amp;quot;&amp;quot;) -- can&#039;t use nil for bc&lt;br /&gt;
	-- we only want to accept two possibilities: BC or default to BCE&lt;br /&gt;
	if bc == &amp;quot;BC&amp;quot; then&lt;br /&gt;
		bc = &amp;quot;&amp;amp;nbsp;&amp;quot; .. i18n[&amp;quot;BC&amp;quot;] -- prepend a non-breaking space.&lt;br /&gt;
	else&lt;br /&gt;
		bc = &amp;quot;&amp;amp;nbsp;&amp;quot; .. i18n[&amp;quot;BCE&amp;quot;]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local postchrist = true -- start by assuming no BCE&lt;br /&gt;
	local dateparts = {}&lt;br /&gt;
	for word in string.gmatch(dateval, &amp;quot;%w+&amp;quot;) do&lt;br /&gt;
		if word == &amp;quot;BCE&amp;quot; or word == &amp;quot;BC&amp;quot; then -- *** internationalise later ***&lt;br /&gt;
			postchrist = false&lt;br /&gt;
		else&lt;br /&gt;
			-- we&#039;ll keep the parts that are not &#039;BCE&#039; in a table&lt;br /&gt;
			dateparts[#dateparts + 1] = word&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if postchrist then bc = &amp;quot;&amp;quot; end -- set AD dates to no suffix *** internationalise later ***&lt;br /&gt;
&lt;br /&gt;
	local sep = &amp;quot;&amp;amp;nbsp;&amp;quot; -- separator is nbsp&lt;br /&gt;
	local fdate = table.concat(dateparts, sep) -- set formatted date to same order as input&lt;br /&gt;
&lt;br /&gt;
	-- if we have day month year, check dateformat&lt;br /&gt;
	if #dateparts == 3 then&lt;br /&gt;
		if dateformat == &amp;quot;y&amp;quot; then&lt;br /&gt;
			fdate = dateparts[3]&lt;br /&gt;
		elseif dateformat == &amp;quot;mdy&amp;quot; then&lt;br /&gt;
			fdate = dateparts[2] .. sep .. dateparts[1] .. &amp;quot;,&amp;quot; .. sep .. dateparts[3]&lt;br /&gt;
		end&lt;br /&gt;
	elseif #dateparts == 2 and dateformat == &amp;quot;y&amp;quot; then&lt;br /&gt;
		fdate = dateparts[2]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return fdate .. bc&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- dateFormat is the handler for properties that are of type &amp;quot;time&amp;quot;&lt;br /&gt;
-- It takes timestamp, precision (6 to 11 per mediawiki), dateformat (y/dmy/mdy), BC format (BC/BCE),&lt;br /&gt;
-- a plaindate switch (yes/no/adj) to en/disable &amp;quot;sourcing circumstances&amp;quot;/use adjectival form,&lt;br /&gt;
-- any qualifiers for the property, the language, and any adjective to use like &#039;before&#039;.&lt;br /&gt;
-- It passes the date through the &amp;quot;complex date&amp;quot; function&lt;br /&gt;
-- and returns a string with the internatonalised date formatted according to preferences.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: findLang(); cdate(); dp[]&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
local dateFormat = function(timestamp, dprec, df, bcf, pd, qualifiers, lang, adj, model)&lt;br /&gt;
	-- output formatting according to preferences (y/dmy/mdy/ymd)&lt;br /&gt;
	df = (df or &amp;quot;&amp;quot;):lower()&lt;br /&gt;
	-- if ymd is required, return the part of the timestamp in YYYY-MM-DD form&lt;br /&gt;
	-- but apply Year zero#Astronomers fix: 1 BC = 0000; 2 BC = -0001; etc.&lt;br /&gt;
	if df == &amp;quot;ymd&amp;quot; then&lt;br /&gt;
		if timestamp:sub(1,1) == &amp;quot;+&amp;quot; then&lt;br /&gt;
			return timestamp:sub(2,11)&lt;br /&gt;
		else&lt;br /&gt;
			local yr = tonumber(timestamp:sub(2,5)) - 1&lt;br /&gt;
			yr = (&amp;quot;000&amp;quot; .. yr):sub(-4)&lt;br /&gt;
			if yr ~= &amp;quot;0000&amp;quot; then yr = &amp;quot;-&amp;quot; .. yr end&lt;br /&gt;
			return yr .. timestamp:sub(6,11)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- A year can be stored like this: &amp;quot;+1872-00-00T00:00:00Z&amp;quot;,&lt;br /&gt;
	-- which is processed here as if it were the day before &amp;quot;+1872-01-01T00:00:00Z&amp;quot;,&lt;br /&gt;
	-- and that&#039;s the last day of 1871, so the year is wrong.&lt;br /&gt;
	-- So fix the month 0, day 0 timestamp to become 1 January instead:&lt;br /&gt;
	timestamp = timestamp:gsub(&amp;quot;%-00%-00T&amp;quot;, &amp;quot;-01-01T&amp;quot;)&lt;br /&gt;
	-- just in case date precision is missing&lt;br /&gt;
	dprec = dprec or 11&lt;br /&gt;
	-- override more precise dates if required dateformat is year alone:&lt;br /&gt;
	if df == &amp;quot;y&amp;quot; and dprec &amp;gt; 9 then dprec = 9 end&lt;br /&gt;
	-- complex date only deals with precisions from 6 to 11, so clip range&lt;br /&gt;
	dprec = dprec&amp;gt;11 and 11 or dprec&lt;br /&gt;
	dprec = dprec&amp;lt;6 and 6 or dprec&lt;br /&gt;
	-- BC format is &amp;quot;BC&amp;quot; or &amp;quot;BCE&amp;quot;&lt;br /&gt;
	bcf = (bcf or &amp;quot;&amp;quot;):upper()&lt;br /&gt;
	-- plaindate only needs the first letter (y/n/a)&lt;br /&gt;
	pd = (pd or &amp;quot;&amp;quot;):sub(1,1):lower()&lt;br /&gt;
	if pd == &amp;quot;&amp;quot; or pd == &amp;quot;n&amp;quot; or pd == &amp;quot;f&amp;quot; or pd == &amp;quot;0&amp;quot; then pd = false end&lt;br /&gt;
	-- in case language isn&#039;t passed&lt;br /&gt;
	lang = lang or findLang().code&lt;br /&gt;
	-- set adj as empty if nil&lt;br /&gt;
	adj = adj or &amp;quot;&amp;quot;&lt;br /&gt;
	-- extract the day, month, year from the timestamp&lt;br /&gt;
	local bc = timestamp:sub(1, 1)==&amp;quot;-&amp;quot; and &amp;quot;BC&amp;quot; or &amp;quot;&amp;quot;&lt;br /&gt;
	local year, month, day = timestamp:match(&amp;quot;[+-](%d*)-(%d*)-(%d*)T&amp;quot;)&lt;br /&gt;
	local iso = tonumber(year) -- if year is missing, let it throw an error&lt;br /&gt;
	-- this will adjust the date format to be compatible with cdate&lt;br /&gt;
	-- possible formats are Y, YY, YYY0, YYYY, YYYY-MM, YYYY-MM-DD&lt;br /&gt;
	if dprec == 6 then iso = math.floor( (iso - 1) / 1000 ) + 1 end&lt;br /&gt;
	if dprec == 7 then iso = math.floor( (iso - 1) / 100 ) + 1 end&lt;br /&gt;
	if dprec == 8 then iso = math.floor( iso / 10 ) .. &amp;quot;0&amp;quot; end&lt;br /&gt;
	if dprec == 10 then iso = year .. &amp;quot;-&amp;quot; .. month end&lt;br /&gt;
	if dprec == 11 then iso = year .. &amp;quot;-&amp;quot; .. month .. &amp;quot;-&amp;quot; .. day end&lt;br /&gt;
	-- add &amp;quot;circa&amp;quot; (Q5727902) from &amp;quot;sourcing circumstances&amp;quot; (P1480)&lt;br /&gt;
	local sc = not pd and qualifiers and qualifiers.P1480&lt;br /&gt;
	if sc then&lt;br /&gt;
		for k1, v1 in pairs(sc) do&lt;br /&gt;
			if v1.datavalue and v1.datavalue.value.id == &amp;quot;Q5727902&amp;quot; then&lt;br /&gt;
				adj = &amp;quot;circa&amp;quot;&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- deal with Julian dates:&lt;br /&gt;
	-- no point in saying that dates before 1582 are Julian - they are by default&lt;br /&gt;
	-- doesn&#039;t make sense for dates less precise than year&lt;br /&gt;
	-- we can suppress it by setting |plaindate, e.g. for use in constructing categories.&lt;br /&gt;
	local calendarmodel = &amp;quot;&amp;quot;&lt;br /&gt;
	if tonumber(year) &amp;gt; 1582&lt;br /&gt;
		and dprec &amp;gt; 8&lt;br /&gt;
		and not pd&lt;br /&gt;
		and model == &amp;quot;http://www.wikidata.org/entity/Q1985786&amp;quot; then&lt;br /&gt;
		calendarmodel = &amp;quot;julian&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	if not cdate then&lt;br /&gt;
		cdate = require(&amp;quot;Module:Complex date&amp;quot;)._complex_date&lt;br /&gt;
	end&lt;br /&gt;
	local fdate = cdate(calendarmodel, adj, tostring(iso), dp[dprec], bc, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;, lang, 1)&lt;br /&gt;
	-- this may have QuickStatements info appended to it in a div, so remove that&lt;br /&gt;
	fdate = fdate:gsub(&#039; &amp;lt;div style=&amp;quot;display: none;&amp;quot;&amp;gt;[^&amp;lt;]*&amp;lt;/div&amp;gt;&#039;, &#039;&#039;)&lt;br /&gt;
	-- it may also be returned wrapped in a microformat, so remove that&lt;br /&gt;
	fdate = fdate:gsub(&amp;quot;&amp;lt;[^&amp;gt;]*&amp;gt;&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
	-- there may be leading zeros that we should remove&lt;br /&gt;
	fdate = fdate:gsub(&amp;quot;^0*&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
	-- if a plain date is required, then remove any links (like BC linked)&lt;br /&gt;
	if pd then&lt;br /&gt;
		fdate = fdate:gsub(&amp;quot;%[%[.*|&amp;quot;, &amp;quot;&amp;quot;):gsub(&amp;quot;]]&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	-- if &#039;circa&#039;, use the abbreviated form *** internationalise later ***&lt;br /&gt;
	fdate = fdate:gsub(&#039;circa &#039;, &#039;&amp;lt;abbr title=&amp;quot;circa&amp;quot;&amp;gt;c.&amp;lt;/abbr&amp;gt;&amp;amp;nbsp;&#039;)&lt;br /&gt;
	-- deal with BC/BCE&lt;br /&gt;
	if bcf == &amp;quot;BCE&amp;quot; then&lt;br /&gt;
		fdate = fdate:gsub(&#039;BC&#039;, &#039;BCE&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	-- deal with mdy format&lt;br /&gt;
	if df == &amp;quot;mdy&amp;quot; then&lt;br /&gt;
		fdate = fdate:gsub(&amp;quot;(%d+) (%w+) (%d+)&amp;quot;, &amp;quot;%2 %1, %3&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	-- deal with adjectival form *** internationalise later ***&lt;br /&gt;
	if pd == &amp;quot;a&amp;quot; then&lt;br /&gt;
		fdate = fdate:gsub(&#039; century&#039;, &#039;-century&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	return fdate&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- parseParam takes a (string) parameter, e.g. from the list of frame arguments,&lt;br /&gt;
-- and makes &amp;quot;false&amp;quot;, &amp;quot;no&amp;quot;, and &amp;quot;0&amp;quot; into the (boolean) false&lt;br /&gt;
-- it makes the empty string and nil into the (boolean) value passed as default&lt;br /&gt;
-- allowing the parameter to be true or false by default.&lt;br /&gt;
-- It returns a boolean.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: none&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
local parseParam = function(param, default)&lt;br /&gt;
	if type(param) == &amp;quot;boolean&amp;quot; then param = tostring(param) end&lt;br /&gt;
	if param and param ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		param = param:lower()&lt;br /&gt;
		if (param == &amp;quot;false&amp;quot;) or (param:sub(1,1) == &amp;quot;n&amp;quot;) or (param == &amp;quot;0&amp;quot;) then&lt;br /&gt;
			return false&lt;br /&gt;
		else&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return default&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- _getSitelink takes the qid of a Wikidata entity passed as |qid=&lt;br /&gt;
-- It takes an optional parameter |wiki= to determine which wiki is to be checked for a sitelink&lt;br /&gt;
-- If the parameter is blank, then it uses the local wiki.&lt;br /&gt;
-- If there is a sitelink to an article available, it returns the plain text link to the article&lt;br /&gt;
-- If there is no sitelink, it returns nil.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: none&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
local _getSitelink = function(qid, wiki)&lt;br /&gt;
	qid = (qid or &amp;quot;&amp;quot;):upper()&lt;br /&gt;
	if qid == &amp;quot;&amp;quot; then qid = mw.wikibase.getEntityIdForCurrentPage() end&lt;br /&gt;
	if not qid then return nil end&lt;br /&gt;
	wiki = wiki or &amp;quot;&amp;quot;&lt;br /&gt;
	local sitelink&lt;br /&gt;
	if wiki == &amp;quot;&amp;quot; then&lt;br /&gt;
		sitelink = mw.wikibase.getSitelink(qid)&lt;br /&gt;
	else&lt;br /&gt;
		sitelink = mw.wikibase.getSitelink(qid, wiki)&lt;br /&gt;
	end&lt;br /&gt;
	return sitelink&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- _getCommonslink takes an optional qid of a Wikidata entity passed as |qid=&lt;br /&gt;
-- It returns one of the following in order of preference:&lt;br /&gt;
-- 	the Commons sitelink of the Wikidata entity - but not if onlycat=true and it&#039;s not a category;&lt;br /&gt;
-- 	the Commons sitelink of the topic&#039;s main category of the Wikidata entity;&lt;br /&gt;
-- 	the Commons category of the Wikidata entity - unless fallback=false.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: _getSitelink(); parseParam()&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
local _getCommonslink = function(qid, onlycat, fallback)&lt;br /&gt;
	qid = (qid or &amp;quot;&amp;quot;):upper()&lt;br /&gt;
	if qid == &amp;quot;&amp;quot; then qid = mw.wikibase.getEntityIdForCurrentPage() end&lt;br /&gt;
	if not qid then return nil end&lt;br /&gt;
	onlycat = parseParam(onlycat, false)&lt;br /&gt;
	if fallback == &amp;quot;&amp;quot; then fallback = nil end&lt;br /&gt;
	local sitelink = _getSitelink(qid, &amp;quot;commonswiki&amp;quot;)&lt;br /&gt;
	if onlycat and sitelink and sitelink:sub(1,9) ~= &amp;quot;Category:&amp;quot; then sitelink = nil end&lt;br /&gt;
	if not sitelink then&lt;br /&gt;
		-- check for topic&#039;s main category&lt;br /&gt;
		local prop910 = mw.wikibase.getBestStatements(qid, &amp;quot;P910&amp;quot;)[1]&lt;br /&gt;
		if prop910 then&lt;br /&gt;
			local tmcid = prop910.mainsnak.datavalue and prop910.mainsnak.datavalue.value.id&lt;br /&gt;
			sitelink = _getSitelink(tmcid, &amp;quot;commonswiki&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
		if not sitelink then&lt;br /&gt;
			-- check for list&#039;s main category&lt;br /&gt;
			local prop1754 = mw.wikibase.getBestStatements(qid, &amp;quot;P1754&amp;quot;)[1]&lt;br /&gt;
			if prop1754 then&lt;br /&gt;
				local tmcid = prop1754.mainsnak.datavalue and prop1754.mainsnak.datavalue.value.id&lt;br /&gt;
				sitelink = _getSitelink(tmcid, &amp;quot;commonswiki&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if not sitelink and fallback then&lt;br /&gt;
		-- check for Commons category (string value)&lt;br /&gt;
		local prop373 = mw.wikibase.getBestStatements(qid, &amp;quot;P373&amp;quot;)[1]&lt;br /&gt;
		if prop373 then&lt;br /&gt;
			sitelink = prop373.mainsnak.datavalue and prop373.mainsnak.datavalue.value&lt;br /&gt;
			if sitelink then sitelink = &amp;quot;Category:&amp;quot; .. sitelink end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return sitelink&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- The label in a Wikidata item is subject to vulnerabilities&lt;br /&gt;
-- that an attacker might try to exploit.&lt;br /&gt;
-- It needs to be &#039;sanitised&#039; by removing any wikitext before use.&lt;br /&gt;
-- If it doesn&#039;t exist, return the id for the item&lt;br /&gt;
-- a second (boolean) value is also returned, value is true when the label exists&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: none&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
local labelOrId = function(id, lang)&lt;br /&gt;
	if lang == &amp;quot;default&amp;quot; then lang = findLang().code end&lt;br /&gt;
	local label&lt;br /&gt;
	if lang then&lt;br /&gt;
		label = mw.wikibase.getLabelByLang(id, lang)&lt;br /&gt;
	else&lt;br /&gt;
		label = mw.wikibase.getLabel(id)&lt;br /&gt;
	end&lt;br /&gt;
	if label then&lt;br /&gt;
		return mw.text.nowiki(label), true&lt;br /&gt;
	else&lt;br /&gt;
		return id, false&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- linkedItem takes an entity-id and returns a string, linked if possible.&lt;br /&gt;
-- This is the handler for &amp;quot;wikibase-item&amp;quot;. Preferences:&lt;br /&gt;
-- 1. Display linked disambiguated sitelink if it exists&lt;br /&gt;
-- 2. Display linked label if it is a redirect&lt;br /&gt;
-- 3. TBA: Display an inter-language link for the label if it exists other than in default language&lt;br /&gt;
-- 4. Display unlinked label if it exists&lt;br /&gt;
-- 5. Display entity-id for now to indicate a label could be provided&lt;br /&gt;
-- dtxt is text to be used instead of label, or nil.&lt;br /&gt;
-- shortname is boolean switch to use P1813 (short name) instead of label if true.&lt;br /&gt;
-- lang is the current language code.&lt;br /&gt;
-- uselbl is boolean switch to force display of the label instead of the sitelink (default: false)&lt;br /&gt;
-- linkredir is boolean switch to allow linking to a redirect (default: false)&lt;br /&gt;
-- formatvalue is boolean switch to allow formatting as italics or quoted (default: false)&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: labelOrId(); donotlink[]&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
local linkedItem = function(id, args)&lt;br /&gt;
	local lprefix = (args.lp or args.lprefix or args.linkprefix or &amp;quot;&amp;quot;):gsub(&#039;&amp;quot;&#039;, &#039;&#039;) -- toughen against nil values passed&lt;br /&gt;
	local lpostfix = (args.lpostfix or &amp;quot;&amp;quot;):gsub(&#039;&amp;quot;&#039;, &#039;&#039;)&lt;br /&gt;
	local prefix = (args.prefix or &amp;quot;&amp;quot;):gsub(&#039;&amp;quot;&#039;, &#039;&#039;)&lt;br /&gt;
	local postfix = (args.postfix or &amp;quot;&amp;quot;):gsub(&#039;&amp;quot;&#039;, &#039;&#039;)&lt;br /&gt;
	local dtxt = args.dtxt&lt;br /&gt;
	local shortname = args.shortname or args.sn&lt;br /&gt;
	local lang = args.lang or &amp;quot;en&amp;quot; -- fallback to default if missing&lt;br /&gt;
	local uselbl = args.uselabel or args.uselbl&lt;br /&gt;
	uselbl = parseParam(uselbl, false)&lt;br /&gt;
	local linkredir = args.linkredir&lt;br /&gt;
	linkredir = parseParam(linkredir, false)&lt;br /&gt;
	local formatvalue = args.formatvalue or args.fv&lt;br /&gt;
	formatvalue = parseParam(formatvalue, false)&lt;br /&gt;
	-- see if item might need italics or quotes&lt;br /&gt;
	local fmt = &amp;quot;&amp;quot;&lt;br /&gt;
	if next(formats) and formatvalue then&lt;br /&gt;
		for k, v in ipairs( mw.wikibase.getBestStatements(id, &amp;quot;P31&amp;quot;) ) do&lt;br /&gt;
			if v.mainsnak.datavalue and formats[v.mainsnak.datavalue.value.id] then&lt;br /&gt;
				fmt = formats[v.mainsnak.datavalue.value.id]&lt;br /&gt;
				break -- pick the first match&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local disp&lt;br /&gt;
	local sitelink = mw.wikibase.getSitelink(id)&lt;br /&gt;
	local label, islabel&lt;br /&gt;
	if dtxt then&lt;br /&gt;
		label, islabel = dtxt, true&lt;br /&gt;
	elseif shortname then&lt;br /&gt;
		-- see if there is a shortname in our language, and set label to it&lt;br /&gt;
		for k, v in ipairs( mw.wikibase.getBestStatements(id, &amp;quot;P1813&amp;quot;) ) do&lt;br /&gt;
			if v.mainsnak.datavalue.value.language == lang then&lt;br /&gt;
				label, islabel = v.mainsnak.datavalue.value.text, true&lt;br /&gt;
				break&lt;br /&gt;
			end -- test for language match&lt;br /&gt;
		end -- loop through values of short name&lt;br /&gt;
		-- if we have no label set, then there was no shortname available&lt;br /&gt;
		if not islabel then&lt;br /&gt;
			label, islabel = labelOrId(id)&lt;br /&gt;
			shortname = false&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		label, islabel = labelOrId(id)&lt;br /&gt;
	end&lt;br /&gt;
	if mw.site.siteName ~= &amp;quot;Wikimedia Commons&amp;quot; then&lt;br /&gt;
		if sitelink then&lt;br /&gt;
			if not (dtxt or shortname) then&lt;br /&gt;
				-- if sitelink and label are the same except for case, no need to process further&lt;br /&gt;
				if sitelink:lower() ~= label:lower() then&lt;br /&gt;
					-- strip any namespace or dab from the sitelink&lt;br /&gt;
					local pos = sitelink:find(&amp;quot;:&amp;quot;) or 0&lt;br /&gt;
					local slink = sitelink&lt;br /&gt;
					if pos &amp;gt; 0 then&lt;br /&gt;
						local pfx = sitelink:sub(1,pos-1)&lt;br /&gt;
						if mw.site.namespaces[pfx] then -- that prefix is a valid namespace, so remove it&lt;br /&gt;
							slink = sitelink:sub(pos+1)&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
					-- remove stuff after commas or inside parentheses - ie. dabs&lt;br /&gt;
					slink = slink:gsub(&amp;quot;%s%(.+%)$&amp;quot;, &amp;quot;&amp;quot;):gsub(&amp;quot;,.+$&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
					-- if uselbl is false, use sitelink instead of label&lt;br /&gt;
					if not uselbl then&lt;br /&gt;
						--  use slink as display, preserving label case - find(&amp;quot;^%u&amp;quot;) is true for 1st char uppercase&lt;br /&gt;
						if label:find(&amp;quot;^%u&amp;quot;) then&lt;br /&gt;
							label = slink:gsub(&amp;quot;^(%l)&amp;quot;, string.upper)&lt;br /&gt;
						else&lt;br /&gt;
							label = slink:gsub(&amp;quot;^(%u)&amp;quot;, string.lower)&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if donotlink[label] then&lt;br /&gt;
				disp = prefix .. fmt .. label .. fmt .. postfix&lt;br /&gt;
			else&lt;br /&gt;
				disp = &amp;quot;[[&amp;quot; .. lprefix .. sitelink .. lpostfix .. &amp;quot;|&amp;quot; .. prefix .. fmt .. label .. fmt .. postfix .. &amp;quot;]]&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		elseif islabel then&lt;br /&gt;
			-- no sitelink, label exists, so check if a redirect with that title exists, if linkredir is true&lt;br /&gt;
			-- display plain label by default&lt;br /&gt;
			disp = prefix .. fmt .. label .. fmt .. postfix&lt;br /&gt;
			if linkredir then&lt;br /&gt;
				local artitle = mw.title.new(label, 0) -- only nil if label has invalid chars&lt;br /&gt;
				if not donotlink[label] and artitle and artitle.redirectTarget then&lt;br /&gt;
					-- there&#039;s a redirect with the same title as the label, so let&#039;s link to that&lt;br /&gt;
					disp = &amp;quot;[[&amp;quot;.. lprefix .. label .. lpostfix .. &amp;quot;|&amp;quot; .. prefix .. fmt .. label .. fmt .. postfix .. &amp;quot;]]&amp;quot;&lt;br /&gt;
				end&lt;br /&gt;
			end -- test if article title exists as redirect on current Wiki&lt;br /&gt;
		else&lt;br /&gt;
			-- no sitelink and no label, so return whatever was returned from labelOrId for now&lt;br /&gt;
			-- add tracking category [[Category:Articles with missing Wikidata information]]&lt;br /&gt;
			-- for enwiki, just return the tracking category&lt;br /&gt;
			if mw.wikibase.getGlobalSiteId() == &amp;quot;enwiki&amp;quot; then&lt;br /&gt;
				disp = i18n.missinginfocat&lt;br /&gt;
			else&lt;br /&gt;
				disp = prefix .. label .. postfix .. i18n.missinginfocat&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		local ccat = mw.wikibase.getBestStatements(id, &amp;quot;P373&amp;quot;)[1]&lt;br /&gt;
		if ccat and ccat.mainsnak.datavalue then&lt;br /&gt;
			ccat = ccat.mainsnak.datavalue.value&lt;br /&gt;
			disp = &amp;quot;[[&amp;quot; .. lprefix .. &amp;quot;Category:&amp;quot; .. ccat .. lpostfix .. &amp;quot;|&amp;quot; .. prefix .. label .. postfix .. &amp;quot;]]&amp;quot;&lt;br /&gt;
		elseif sitelink then&lt;br /&gt;
			-- this asumes that if a sitelink exists, then a label also exists&lt;br /&gt;
			disp = &amp;quot;[[&amp;quot; .. lprefix .. sitelink .. lpostfix .. &amp;quot;|&amp;quot; .. prefix .. label .. postfix .. &amp;quot;]]&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			-- no sitelink and no Commons cat, so return label from labelOrId for now&lt;br /&gt;
			disp = prefix .. label .. postfix&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return disp&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- sourced takes a table representing a statement that may or may not have references&lt;br /&gt;
-- it looks for a reference sourced to something not containing the word &amp;quot;wikipedia&amp;quot;&lt;br /&gt;
-- it returns a boolean = true if it finds a sourced reference.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: none&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
local sourced = function(claim)&lt;br /&gt;
	if claim.references then&lt;br /&gt;
		for kr, vr in pairs(claim.references) do&lt;br /&gt;
			local ref = mw.wikibase.renderSnaks(vr.snaks)&lt;br /&gt;
			if not ref:find(&amp;quot;Wiki&amp;quot;) then&lt;br /&gt;
				return true&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;
-------------------------------------------------------------------------------&lt;br /&gt;
-- setRanks takes a flag (parameter passed) that requests the values to return&lt;br /&gt;
-- &amp;quot;b[est]&amp;quot; returns preferred if available, otherwise normal&lt;br /&gt;
-- &amp;quot;p[referred]&amp;quot; returns preferred&lt;br /&gt;
-- &amp;quot;n[ormal]&amp;quot; returns normal&lt;br /&gt;
-- &amp;quot;d[eprecated]&amp;quot; returns deprecated&lt;br /&gt;
-- multiple values are allowed, e.g. &amp;quot;preferred normal&amp;quot; (which is the default)&lt;br /&gt;
-- &amp;quot;best&amp;quot; will override the other flags, and set p and n&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: none&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
local setRanks = function(rank)&lt;br /&gt;
	rank = (rank or &amp;quot;&amp;quot;):lower()&lt;br /&gt;
	-- if nothing passed, return preferred and normal&lt;br /&gt;
	-- if rank == &amp;quot;&amp;quot; then rank = &amp;quot;p n&amp;quot; end&lt;br /&gt;
	local ranks = {}&lt;br /&gt;
	for w in string.gmatch(rank, &amp;quot;%a+&amp;quot;) do&lt;br /&gt;
		w = w:sub(1,1)&lt;br /&gt;
		if w == &amp;quot;b&amp;quot; or w == &amp;quot;p&amp;quot; or w == &amp;quot;n&amp;quot; or w == &amp;quot;d&amp;quot; then&lt;br /&gt;
			ranks[w] = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- check if &amp;quot;best&amp;quot; is requested or no ranks requested; and if so, set preferred and normal&lt;br /&gt;
	if ranks.b or not next(ranks) then&lt;br /&gt;
		ranks.p = true&lt;br /&gt;
		ranks.n = true&lt;br /&gt;
	end&lt;br /&gt;
	return ranks&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- parseInput processes the Q-id , the blacklist and the whitelist&lt;br /&gt;
-- if an input parameter is supplied, it returns that and ends the call.&lt;br /&gt;
-- it returns (1) either the qid or nil indicating whether or not the call should continue&lt;br /&gt;
-- and (2) a table containing all of the statements for the propertyID and relevant Qid&lt;br /&gt;
-- if &amp;quot;best&amp;quot; ranks are requested, it returns those instead of all non-deprecated ranks&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: none&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
local parseInput = function(frame, input_parm, property_id)&lt;br /&gt;
	-- There may be a local parameter supplied, if it&#039;s blank, set it to nil&lt;br /&gt;
	input_parm = mw.text.trim(input_parm or &amp;quot;&amp;quot;)&lt;br /&gt;
	if input_parm == &amp;quot;&amp;quot; then input_parm = nil end&lt;br /&gt;
&lt;br /&gt;
	-- return nil if Wikidata is not available&lt;br /&gt;
	if not mw.wikibase then return false, input_parm end&lt;br /&gt;
&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
&lt;br /&gt;
	-- can take a named parameter |qid which is the Wikidata ID for the article.&lt;br /&gt;
	-- if it&#039;s not supplied, use the id for the current page&lt;br /&gt;
	local qid = args.qid or &amp;quot;&amp;quot;&lt;br /&gt;
	if qid == &amp;quot;&amp;quot; then qid = mw.wikibase.getEntityIdForCurrentPage() end&lt;br /&gt;
	-- if there&#039;s no Wikidata item for the current page return nil&lt;br /&gt;
	if not qid then return false, input_parm end&lt;br /&gt;
&lt;br /&gt;
	-- The blacklist is passed in named parameter |suppressfields&lt;br /&gt;
	local blacklist = args.suppressfields or args.spf or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	-- The whitelist is passed in named parameter |fetchwikidata&lt;br /&gt;
	local whitelist = args.fetchwikidata or args.fwd or &amp;quot;&amp;quot;&lt;br /&gt;
	if whitelist == &amp;quot;&amp;quot; then whitelist = &amp;quot;NONE&amp;quot; end&lt;br /&gt;
&lt;br /&gt;
	-- The name of the field that this function is called from is passed in named parameter |name&lt;br /&gt;
	local fieldname = args.name or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	if blacklist ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		-- The name is compulsory when blacklist is used, so return nil if it is not supplied&lt;br /&gt;
		if fieldname == &amp;quot;&amp;quot; then return false, nil end&lt;br /&gt;
		-- If this field is on the blacklist, then return nil&lt;br /&gt;
		if blacklist:find(fieldname) then return false, nil end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- If we got this far then we&#039;re not on the blacklist&lt;br /&gt;
	-- The blacklist overrides any locally supplied parameter as well&lt;br /&gt;
	-- If a non-blank input parameter was supplied return it&lt;br /&gt;
	if input_parm then return false, input_parm end&lt;br /&gt;
&lt;br /&gt;
	-- We can filter out non-valid properties&lt;br /&gt;
	if property_id:sub(1,1):upper() ~=&amp;quot;P&amp;quot; or property_id == &amp;quot;P0&amp;quot; then return false, nil end&lt;br /&gt;
&lt;br /&gt;
	-- Otherwise see if this field is on the whitelist:&lt;br /&gt;
	-- needs a bit more logic because find will return its second value = 0 if fieldname is &amp;quot;&amp;quot;&lt;br /&gt;
	-- but nil if fieldname not found on whitelist&lt;br /&gt;
	local _, found = whitelist:find(fieldname)&lt;br /&gt;
	found = ((found or 0) &amp;gt; 0)&lt;br /&gt;
	if whitelist ~= &#039;ALL&#039; and (whitelist:upper() == &amp;quot;NONE&amp;quot; or not found) then&lt;br /&gt;
		return false, nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- See what&#039;s on Wikidata (the call always returns a table, but it may be empty):&lt;br /&gt;
	local props = {}&lt;br /&gt;
	if args.reqranks.b then&lt;br /&gt;
		props = mw.wikibase.getBestStatements(qid, property_id)&lt;br /&gt;
	else&lt;br /&gt;
		props = mw.wikibase.getAllStatements(qid, property_id)&lt;br /&gt;
	end&lt;br /&gt;
	if props[1] then&lt;br /&gt;
		return qid, props&lt;br /&gt;
	end&lt;br /&gt;
	-- no property on Wikidata&lt;br /&gt;
	return false, nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- createicon assembles the &amp;quot;Edit at Wikidata&amp;quot; pen icon.&lt;br /&gt;
-- It returns a wikitext string inside a span class=&amp;quot;penicon&amp;quot;&lt;br /&gt;
-- if entityID is nil or empty, the ID associated with current page is used&lt;br /&gt;
-- langcode and propertyID may be nil or empty&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: i18n[];&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
local createicon = function(langcode, entityID, propertyID)&lt;br /&gt;
	langcode = langcode or &amp;quot;&amp;quot;&lt;br /&gt;
	if not entityID or entityID == &amp;quot;&amp;quot; then entityID= mw.wikibase.getEntityIdForCurrentPage() end&lt;br /&gt;
	propertyID = propertyID or &amp;quot;&amp;quot;&lt;br /&gt;
	local icon = &amp;quot;&amp;amp;nbsp;&amp;lt;span class=&#039;penicon autoconfirmed-show&#039;&amp;gt;[[&amp;quot;&lt;br /&gt;
	-- &amp;quot;&amp;amp;nbsp;&amp;lt;span data-bridge-edit-flow=&#039;overwrite&#039; class=&#039;penicon&#039;&amp;gt;[[&amp;quot; -&amp;gt; enable Wikidata Bridge&lt;br /&gt;
	.. i18n[&amp;quot;filespace&amp;quot;]&lt;br /&gt;
	.. &amp;quot;:OOjs UI icon edit-ltr-progressive.svg |frameless |text-top |10px |alt=&amp;quot;&lt;br /&gt;
	.. i18n[&amp;quot;editonwikidata&amp;quot;]&lt;br /&gt;
	.. &amp;quot;|link=https://www.wikidata.org/wiki/&amp;quot; .. entityID&lt;br /&gt;
	if langcode ~= &amp;quot;&amp;quot; then icon = icon .. &amp;quot;?uselang=&amp;quot; .. langcode end&lt;br /&gt;
	if propertyID ~= &amp;quot;&amp;quot; then icon = icon .. &amp;quot;#&amp;quot; .. propertyID end&lt;br /&gt;
	icon = icon .. &amp;quot;|&amp;quot; .. i18n[&amp;quot;editonwikidata&amp;quot;] .. &amp;quot;]]&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
	return icon&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- assembleoutput takes the sequence table containing the property values&lt;br /&gt;
-- and formats it according to switches given. It returns a string or nil.&lt;br /&gt;
-- It uses the entityID (and optionally propertyID) to create a link in the pen icon.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: parseParam();&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
local assembleoutput = function(out, args, entityID, propertyID)&lt;br /&gt;
&lt;br /&gt;
	-- sorted is a boolean passed to enable sorting of the values returned&lt;br /&gt;
	-- if nothing or an empty string is passed set it false&lt;br /&gt;
	-- if &amp;quot;false&amp;quot; or &amp;quot;no&amp;quot; or &amp;quot;0&amp;quot; is passed set it false&lt;br /&gt;
	local sorted = parseParam(args.sorted, false)&lt;br /&gt;
&lt;br /&gt;
	-- noicon is a boolean passed to suppress the trailing &amp;quot;edit at Wikidata&amp;quot; icon&lt;br /&gt;
	-- for use when the value is processed further by the infobox&lt;br /&gt;
	-- if nothing or an empty string is passed set it false&lt;br /&gt;
	-- if &amp;quot;false&amp;quot; or &amp;quot;no&amp;quot; or &amp;quot;0&amp;quot; is passed set it false&lt;br /&gt;
	local noic = parseParam(args.noicon, false)&lt;br /&gt;
&lt;br /&gt;
	-- list is the name of a template that a list of multiple values is passed through&lt;br /&gt;
	-- examples include &amp;quot;hlist&amp;quot; and &amp;quot;ubl&amp;quot;&lt;br /&gt;
	-- setting it to &amp;quot;prose&amp;quot; produces something like &amp;quot;1, 2, 3, and 4&amp;quot;&lt;br /&gt;
	local list = args.list or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	-- sep is a string that is used to separate multiple returned values&lt;br /&gt;
	-- if nothing or an empty string is passed set it to the default&lt;br /&gt;
	-- any double-quotes &amp;quot; are stripped out, so that spaces may be passed&lt;br /&gt;
	-- e.g. |sep=&amp;quot; - &amp;quot;&lt;br /&gt;
	local sepdefault = i18n[&amp;quot;list separator&amp;quot;]&lt;br /&gt;
	local separator = args.sep or &amp;quot;&amp;quot;&lt;br /&gt;
	separator = string.gsub(separator, &#039;&amp;quot;&#039;, &#039;&#039;)&lt;br /&gt;
	if separator == &amp;quot;&amp;quot; then&lt;br /&gt;
		separator = sepdefault&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- collapse is a number that determines the maximum number of returned values&lt;br /&gt;
	-- before the output is collapsed.&lt;br /&gt;
	-- Zero or not a number result in no collapsing (default becomes 0).&lt;br /&gt;
	local collapse = tonumber(args.collapse) or 0&lt;br /&gt;
&lt;br /&gt;
	-- replacetext (rt) is a string that is returned instead of any non-empty Wikidata value&lt;br /&gt;
	-- this is useful for tracking and debugging&lt;br /&gt;
	local replacetext = mw.text.trim(args.rt or args.replacetext or &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	-- if there&#039;s anything to return, then return a list&lt;br /&gt;
	-- comma-separated by default, but may be specified by the sep parameter&lt;br /&gt;
	-- optionally specify a hlist or ubl or a prose list, etc.&lt;br /&gt;
	local strout&lt;br /&gt;
	if #out &amp;gt; 0 then&lt;br /&gt;
		if sorted then table.sort(out) end&lt;br /&gt;
		-- if there&#039;s something to display and a pen icon is wanted, add it the end of the last value&lt;br /&gt;
		local hasdisplay = false&lt;br /&gt;
		for i, v in ipairs(out) do&lt;br /&gt;
			if v ~= i18n.missinginfocat then&lt;br /&gt;
				hasdisplay = true&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if not noic and hasdisplay then&lt;br /&gt;
			out[#out] = out[#out] .. createicon(args.langobj.code, entityID, propertyID)&lt;br /&gt;
		end&lt;br /&gt;
		if list == &amp;quot;&amp;quot; then&lt;br /&gt;
			strout = table.concat(out, separator)&lt;br /&gt;
		elseif list:lower() == &amp;quot;prose&amp;quot; then&lt;br /&gt;
			strout = mw.text.listToText( out )&lt;br /&gt;
		else&lt;br /&gt;
			strout = mw.getCurrentFrame():expandTemplate{title = list, args = out}&lt;br /&gt;
		end&lt;br /&gt;
		if collapse &amp;gt;0 and #out &amp;gt; collapse then&lt;br /&gt;
			strout = collapsediv .. strout .. &amp;quot;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		strout = nil -- no items had valid reference&lt;br /&gt;
	end&lt;br /&gt;
	if replacetext ~= &amp;quot;&amp;quot; and strout then strout = replacetext end&lt;br /&gt;
	return strout&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- rendersnak takes a table (propval) containing the information stored on one property value&lt;br /&gt;
-- and returns the value as a string and its language if monolingual text.&lt;br /&gt;
-- It handles data of type:&lt;br /&gt;
--		wikibase-item&lt;br /&gt;
--		time&lt;br /&gt;
--		string, url, commonsMedia, external-id&lt;br /&gt;
--		quantity&lt;br /&gt;
--		globe-coordinate&lt;br /&gt;
--		monolingualtext&lt;br /&gt;
-- It also requires linked, the link/pre/postfixes, uabbr, and the arguments passed from frame.&lt;br /&gt;
-- The optional filter parameter allows quantities to be be filtered by unit Qid.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: parseParam(); labelOrId(); i18n[]; dateFormat();&lt;br /&gt;
-- roundto(); decimalPrecision(); decimalToDMS(); linkedItem();&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
local rendersnak = function(propval, args, linked, lpre, lpost, pre, post, uabbr, filter)&lt;br /&gt;
	lpre = lpre or &amp;quot;&amp;quot;&lt;br /&gt;
	lpost = lpost or &amp;quot;&amp;quot;&lt;br /&gt;
	pre = pre or &amp;quot;&amp;quot;&lt;br /&gt;
	post = post or &amp;quot;&amp;quot;&lt;br /&gt;
	args.lang = args.lang or findLang().code&lt;br /&gt;
	-- allow values to display a fixed text instead of label&lt;br /&gt;
	local dtxt = args.displaytext or args.dt&lt;br /&gt;
	if dtxt == &amp;quot;&amp;quot; then dtxt = nil end&lt;br /&gt;
	-- switch to use display of short name (P1813) instead of label&lt;br /&gt;
	local shortname = args.shortname or args.sn&lt;br /&gt;
	shortname = parseParam(shortname, false)&lt;br /&gt;
	local snak = propval.mainsnak or propval&lt;br /&gt;
	local dtype = snak.datatype&lt;br /&gt;
	local dv = snak.datavalue&lt;br /&gt;
	dv = dv and dv.value&lt;br /&gt;
	-- value and monolingual text language code returned&lt;br /&gt;
	local val, mlt&lt;br /&gt;
	if propval.rank and not args.reqranks[propval.rank:sub(1, 1)] then&lt;br /&gt;
		-- val is nil: value has a rank that isn&#039;t requested&lt;br /&gt;
		------------------------------------&lt;br /&gt;
	elseif snak.snaktype == &amp;quot;somevalue&amp;quot; then -- value is unknown&lt;br /&gt;
		val = i18n[&amp;quot;Unknown&amp;quot;]&lt;br /&gt;
		------------------------------------&lt;br /&gt;
	elseif snak.snaktype == &amp;quot;novalue&amp;quot; then -- value is none&lt;br /&gt;
		-- val = &amp;quot;No value&amp;quot; -- don&#039;t return anything&lt;br /&gt;
		------------------------------------&lt;br /&gt;
	elseif dtype == &amp;quot;wikibase-item&amp;quot; then -- data type is a wikibase item:&lt;br /&gt;
		-- it&#039;s wiki-linked value, so output as link if enabled and possible&lt;br /&gt;
		local qnumber = dv.id&lt;br /&gt;
		if linked then&lt;br /&gt;
			val = linkedItem(qnumber, args)&lt;br /&gt;
		else -- no link wanted so check for display-text, otherwise test for lang code&lt;br /&gt;
			local label, islabel&lt;br /&gt;
			if dtxt then&lt;br /&gt;
				label = dtxt&lt;br /&gt;
			else&lt;br /&gt;
				label, islabel = labelOrId(qnumber)&lt;br /&gt;
				local langlabel = mw.wikibase.getLabelByLang(qnumber, args.lang)&lt;br /&gt;
				if langlabel then&lt;br /&gt;
					label = mw.text.nowiki( langlabel )&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			val = pre .. label .. post&lt;br /&gt;
		end -- test for link required&lt;br /&gt;
		------------------------------------&lt;br /&gt;
	elseif dtype == &amp;quot;time&amp;quot; then -- data type is time:&lt;br /&gt;
		-- time is in timestamp format&lt;br /&gt;
		-- date precision is integer per mediawiki&lt;br /&gt;
		-- output formatting according to preferences (y/dmy/mdy)&lt;br /&gt;
		-- BC format as BC or BCE&lt;br /&gt;
		-- plaindate is passed to disable looking for &amp;quot;sourcing cirumstances&amp;quot;&lt;br /&gt;
		-- or to set the adjectival form&lt;br /&gt;
		-- qualifiers (if any) is a nested table or nil&lt;br /&gt;
		-- lang is given, or user language, or site language&lt;br /&gt;
		--&lt;br /&gt;
		-- Here we can check whether args.df has a value&lt;br /&gt;
		-- If not, use code from Module:Sandbox/RexxS/Getdateformat to set it from templates like {{Use mdy dates}}&lt;br /&gt;
		val = dateFormat(dv.time, dv.precision, args.df, args.bc, args.pd, propval.qualifiers, args.lang, &amp;quot;&amp;quot;, dv.calendarmodel)&lt;br /&gt;
		------------------------------------&lt;br /&gt;
	-- data types which are strings:&lt;br /&gt;
	elseif dtype == &amp;quot;commonsMedia&amp;quot; or dtype == &amp;quot;external-id&amp;quot; or dtype == &amp;quot;string&amp;quot; or dtype == &amp;quot;url&amp;quot; then&lt;br /&gt;
		-- commonsMedia or external-id or string or url&lt;br /&gt;
		-- all have mainsnak.datavalue.value as string&lt;br /&gt;
		if (lpre == &amp;quot;&amp;quot; or lpre == &amp;quot;:&amp;quot;) and lpost == &amp;quot;&amp;quot; then&lt;br /&gt;
			-- don&#039;t link if no linkpre/postfix or linkprefix is just &amp;quot;:&amp;quot;&lt;br /&gt;
			val = pre .. dv .. post&lt;br /&gt;
		elseif dtype == &amp;quot;external-id&amp;quot; then&lt;br /&gt;
			val = &amp;quot;[&amp;quot; .. lpre .. dv .. lpost .. &amp;quot; &amp;quot; .. pre .. dv .. post .. &amp;quot;]&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			val = &amp;quot;[[&amp;quot; .. lpre .. dv .. lpost .. &amp;quot;|&amp;quot; .. pre .. dv .. post .. &amp;quot;]]&amp;quot;&lt;br /&gt;
		end -- check for link requested (i.e. either linkprefix or linkpostfix exists)&lt;br /&gt;
		------------------------------------&lt;br /&gt;
	-- data types which are quantities:&lt;br /&gt;
	elseif dtype == &amp;quot;quantity&amp;quot; then&lt;br /&gt;
		-- quantities have mainsnak.datavalue.value.amount and mainsnak.datavalue.value.unit&lt;br /&gt;
		-- the unit is of the form http://www.wikidata.org/entity/Q829073&lt;br /&gt;
		--&lt;br /&gt;
		-- implement a switch to turn on/off numerical formatting later&lt;br /&gt;
		local fnum = true&lt;br /&gt;
		--&lt;br /&gt;
		-- a switch to turn on/off conversions - only for en-wiki&lt;br /&gt;
		local conv = parseParam(args.conv or args.convert, false)&lt;br /&gt;
		-- if we have conversions, we won&#039;t have formatted numbers or scales&lt;br /&gt;
		if conv then&lt;br /&gt;
			uabbr = true&lt;br /&gt;
			fnum = false&lt;br /&gt;
			args.scale = &amp;quot;0&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		--&lt;br /&gt;
		-- a switch to turn on/off showing units, default is true&lt;br /&gt;
		local showunits = parseParam(args.su or args.showunits, true)&lt;br /&gt;
		--&lt;br /&gt;
		-- convert amount to a number&lt;br /&gt;
		local amount = tonumber(dv.amount) or i18n[&amp;quot;NaN&amp;quot;]&lt;br /&gt;
		--&lt;br /&gt;
		-- scale factor for millions, billions, etc.&lt;br /&gt;
		local sc = tostring(args.scale or &amp;quot;&amp;quot;):sub(1,1):lower()&lt;br /&gt;
		local scale&lt;br /&gt;
		if sc == &amp;quot;a&amp;quot; then&lt;br /&gt;
			-- automatic scaling&lt;br /&gt;
			if amount &amp;gt; 1e15 then&lt;br /&gt;
				scale = 12&lt;br /&gt;
			elseif amount &amp;gt; 1e12 then&lt;br /&gt;
				scale = 9&lt;br /&gt;
			elseif amount &amp;gt; 1e9 then&lt;br /&gt;
				scale = 6&lt;br /&gt;
			elseif amount &amp;gt; 1e6 then&lt;br /&gt;
				scale = 3&lt;br /&gt;
			else&lt;br /&gt;
				scale = 0&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			scale = tonumber(args.scale) or 0&lt;br /&gt;
			if scale &amp;lt; 0 or scale &amp;gt; 12 then scale = 0 end&lt;br /&gt;
			scale = math.floor(scale/3) * 3&lt;br /&gt;
		end&lt;br /&gt;
		local factor = 10^scale&lt;br /&gt;
		amount = amount / factor&lt;br /&gt;
		-- ranges:&lt;br /&gt;
		local range = &amp;quot;&amp;quot;&lt;br /&gt;
		-- check if upper and/or lower bounds are given and significant&lt;br /&gt;
		local upb = tonumber(dv.upperBound)&lt;br /&gt;
		local lowb = tonumber(dv.lowerBound)&lt;br /&gt;
		if upb and lowb then&lt;br /&gt;
			-- differences rounded to 2 sig fig:&lt;br /&gt;
			local posdif = roundto(upb - amount, 2) / factor&lt;br /&gt;
			local negdif = roundto(amount - lowb, 2) / factor&lt;br /&gt;
			upb, lowb = amount + posdif, amount - negdif&lt;br /&gt;
			-- round scaled numbers to integers or 4 sig fig&lt;br /&gt;
			if (scale &amp;gt; 0 or sc == &amp;quot;a&amp;quot;) then&lt;br /&gt;
				if amount &amp;lt; 1e4 then&lt;br /&gt;
					amount = roundto(amount, 4)&lt;br /&gt;
				else&lt;br /&gt;
					amount = math.floor(amount + 0.5)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if fnum then amount = args.langobj:formatNum( amount ) end&lt;br /&gt;
			if posdif ~= negdif then&lt;br /&gt;
				-- non-symmetrical&lt;br /&gt;
				range = &amp;quot; +&amp;quot; .. posdif .. &amp;quot; -&amp;quot; .. negdif&lt;br /&gt;
			elseif posdif ~= 0 then&lt;br /&gt;
				-- symmetrical and non-zero&lt;br /&gt;
				range = &amp;quot; ±&amp;quot; .. posdif&lt;br /&gt;
			else&lt;br /&gt;
				-- otherwise range is zero, so leave it as &amp;quot;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			-- round scaled numbers to integers or 4 sig fig&lt;br /&gt;
			if (scale &amp;gt; 0 or sc == &amp;quot;a&amp;quot;) then&lt;br /&gt;
				if amount &amp;lt; 1e4 then&lt;br /&gt;
					amount = roundto(amount, 4)&lt;br /&gt;
				else&lt;br /&gt;
					amount = math.floor(amount + 0.5)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if fnum then amount = args.langobj:formatNum( amount ) end&lt;br /&gt;
		end&lt;br /&gt;
		-- unit names and symbols:&lt;br /&gt;
		-- extract the qid in the form &#039;Qnnn&#039; from the value.unit url&lt;br /&gt;
		-- and then fetch the label from that - or symbol if unitabbr is true&lt;br /&gt;
		local unit = &amp;quot;&amp;quot;&lt;br /&gt;
		local usep = &amp;quot;&amp;quot;&lt;br /&gt;
		local usym = &amp;quot;&amp;quot;&lt;br /&gt;
		local unitqid = string.match( dv.unit, &amp;quot;(Q%d+)&amp;quot; )&lt;br /&gt;
		if filter and unitqid ~= filter then return nil end&lt;br /&gt;
		if unitqid and showunits then&lt;br /&gt;
			local uname = mw.wikibase.getLabelByLang(unitqid, args.lang) or &amp;quot;&amp;quot;&lt;br /&gt;
			if uname ~= &amp;quot;&amp;quot; then usep, unit = &amp;quot; &amp;quot;, uname end&lt;br /&gt;
			if uabbr then&lt;br /&gt;
				-- see if there&#039;s a unit symbol (P5061)&lt;br /&gt;
				local unitsymbols = mw.wikibase.getBestStatements(unitqid, &amp;quot;P5061&amp;quot;)&lt;br /&gt;
				-- construct fallback table, add local lang and multiple languages&lt;br /&gt;
				local fbtbl = mw.language.getFallbacksFor( args.lang, mw.language.FALLBACK_STRICT )&lt;br /&gt;
				table.insert( fbtbl, 1, args.lang )&lt;br /&gt;
				table.insert( fbtbl, &amp;quot;mul&amp;quot; )&lt;br /&gt;
				table.insert( fbtbl, &amp;quot;en&amp;quot; )&lt;br /&gt;
				local found = false&lt;br /&gt;
				for idx1, us in ipairs(unitsymbols) do&lt;br /&gt;
					for idx2, fblang in ipairs(fbtbl) do&lt;br /&gt;
						if us.mainsnak.datavalue.value.language == fblang then&lt;br /&gt;
							usym = us.mainsnak.datavalue.value.text&lt;br /&gt;
							found = true&lt;br /&gt;
							break&lt;br /&gt;
						end&lt;br /&gt;
					end -- loop through fallback table&lt;br /&gt;
					if found then break end&lt;br /&gt;
				end -- loop through values of P5061&lt;br /&gt;
				if found then usep, unit = &amp;quot;&amp;amp;nbsp;&amp;quot;, usym end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		-- format display:&lt;br /&gt;
		if conv then&lt;br /&gt;
			if range == &amp;quot;&amp;quot; then&lt;br /&gt;
				val = mw.getCurrentFrame():expandTemplate{title = &amp;quot;cvt&amp;quot;, args = {amount, unit}}&lt;br /&gt;
			else&lt;br /&gt;
				val = mw.getCurrentFrame():expandTemplate{title = &amp;quot;cvt&amp;quot;, args = {lowb, &amp;quot;to&amp;quot;, upb, unit}}&lt;br /&gt;
			end&lt;br /&gt;
		elseif unit == &amp;quot;$&amp;quot; or unit == &amp;quot;£&amp;quot; then&lt;br /&gt;
			val = unit .. amount .. range .. i18n.multipliers[scale]&lt;br /&gt;
		else&lt;br /&gt;
			val = amount .. range .. i18n.multipliers[scale] .. usep .. unit&lt;br /&gt;
		end&lt;br /&gt;
		------------------------------------&lt;br /&gt;
	-- datatypes which are global coordinates:&lt;br /&gt;
	elseif dtype == &amp;quot;globe-coordinate&amp;quot; then&lt;br /&gt;
		-- &#039;display&#039; parameter defaults to &amp;quot;inline, title&amp;quot; *** unused for now ***&lt;br /&gt;
		-- local disp = args.display or &amp;quot;&amp;quot;&lt;br /&gt;
		-- if disp == &amp;quot;&amp;quot; then disp = &amp;quot;inline, title&amp;quot; end&lt;br /&gt;
		--&lt;br /&gt;
		-- format parameter switches from deg/min/sec to decimal degrees&lt;br /&gt;
		-- default is deg/min/sec -- decimal degrees needs |format = dec&lt;br /&gt;
		local form = (args.format or &amp;quot;&amp;quot;):lower():sub(1,3)&lt;br /&gt;
		if form ~= &amp;quot;dec&amp;quot; then form = &amp;quot;dms&amp;quot; end -- not needed for now&lt;br /&gt;
		--&lt;br /&gt;
		-- show parameter allows just the latitude, or just the longitude, or both&lt;br /&gt;
		-- to be returned as a signed decimal, ignoring the format parameter.&lt;br /&gt;
		local show = (args.show or &amp;quot;&amp;quot;):lower()&lt;br /&gt;
		if show ~= &amp;quot;longlat&amp;quot; then show = show:sub(1,3) end&lt;br /&gt;
		--&lt;br /&gt;
		local lat, long, prec = dv.latitude, dv.longitude, dv.precision&lt;br /&gt;
		if show == &amp;quot;lat&amp;quot; then&lt;br /&gt;
			val = decimalPrecision(lat, prec)&lt;br /&gt;
		elseif show == &amp;quot;lon&amp;quot; then&lt;br /&gt;
			val = decimalPrecision(long, prec)&lt;br /&gt;
		elseif show == &amp;quot;longlat&amp;quot; then&lt;br /&gt;
			val = decimalPrecision(long, prec) .. &amp;quot;, &amp;quot; .. decimalPrecision(lat, prec)&lt;br /&gt;
		else&lt;br /&gt;
			local ns = &amp;quot;N&amp;quot;&lt;br /&gt;
			local ew = &amp;quot;E&amp;quot;&lt;br /&gt;
			if lat &amp;lt; 0 then&lt;br /&gt;
				ns = &amp;quot;S&amp;quot;&lt;br /&gt;
				lat = - lat&lt;br /&gt;
			end&lt;br /&gt;
			if long &amp;lt; 0 then&lt;br /&gt;
				ew = &amp;quot;W&amp;quot;&lt;br /&gt;
				long = - long&lt;br /&gt;
			end&lt;br /&gt;
			if form == &amp;quot;dec&amp;quot; then&lt;br /&gt;
				lat = decimalPrecision(lat, prec)&lt;br /&gt;
				long = decimalPrecision(long, prec)&lt;br /&gt;
				val = lat .. &amp;quot;°&amp;quot; .. ns .. &amp;quot; &amp;quot; .. long ..  &amp;quot;°&amp;quot; .. ew&lt;br /&gt;
			else&lt;br /&gt;
				local latdeg, latmin, latsec = decimalToDMS(lat, prec)&lt;br /&gt;
				local longdeg, longmin, longsec = decimalToDMS(long, prec)&lt;br /&gt;
&lt;br /&gt;
				if latsec == 0 and longsec == 0 then&lt;br /&gt;
					if latmin == 0 and longmin == 0 then&lt;br /&gt;
						val = latdeg .. &amp;quot;°&amp;quot; .. ns .. &amp;quot; &amp;quot; .. longdeg ..  &amp;quot;°&amp;quot; .. ew&lt;br /&gt;
					else&lt;br /&gt;
						val = latdeg .. &amp;quot;°&amp;quot; .. latmin .. &amp;quot;′&amp;quot; .. ns .. &amp;quot; &amp;quot;&lt;br /&gt;
						val = val .. longdeg .. &amp;quot;°&amp;quot;.. longmin .. &amp;quot;′&amp;quot; .. ew&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					val = latdeg .. &amp;quot;°&amp;quot; .. latmin .. &amp;quot;′&amp;quot; .. latsec .. &amp;quot;″&amp;quot; .. ns .. &amp;quot; &amp;quot;&lt;br /&gt;
					val = val .. longdeg .. &amp;quot;°&amp;quot; .. longmin .. &amp;quot;′&amp;quot; .. longsec .. &amp;quot;″&amp;quot; .. ew&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		------------------------------------&lt;br /&gt;
	elseif dtype == &amp;quot;monolingualtext&amp;quot; then -- data type is Monolingual text:&lt;br /&gt;
		-- has mainsnak.datavalue.value as a table containing language/text pairs&lt;br /&gt;
		-- collect all the values in &#039;out&#039; and languages in &#039;mlt&#039; and process them later&lt;br /&gt;
		val = pre .. dv.text .. post&lt;br /&gt;
		mlt = dv.language&lt;br /&gt;
		------------------------------------&lt;br /&gt;
	else&lt;br /&gt;
		-- some other data type so write a specific handler&lt;br /&gt;
		val = &amp;quot;unknown data type: &amp;quot; .. dtype&lt;br /&gt;
	end -- of datatype/unknown value/sourced check&lt;br /&gt;
	return val, mlt&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- propertyvalueandquals takes a property object, the arguments passed from frame,&lt;br /&gt;
-- and a qualifier propertyID.&lt;br /&gt;
-- It returns a sequence (table) of values representing the values of that property&lt;br /&gt;
-- and qualifiers that match the qualifierID if supplied.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: parseParam(); sourced(); labelOrId(); i18n.latestdatequalifier(); format_Date();&lt;br /&gt;
-- makeOrdinal(); roundto(); decimalPrecision(); decimalToDMS(); assembleoutput();&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
local function propertyvalueandquals(objproperty, args, qualID)&lt;br /&gt;
	-- needs this style of declaration because it&#039;s re-entrant&lt;br /&gt;
&lt;br /&gt;
	-- onlysourced is a boolean passed to return only values sourced to other than Wikipedia&lt;br /&gt;
	-- if nothing or an empty string is passed set it true&lt;br /&gt;
	local onlysrc = parseParam(args.onlysourced or args.osd, true)&lt;br /&gt;
&lt;br /&gt;
	-- linked is a a boolean that enables the link to a local page via sitelink&lt;br /&gt;
	-- if nothing or an empty string is passed set it true&lt;br /&gt;
	local linked = parseParam(args.linked, true)&lt;br /&gt;
&lt;br /&gt;
	-- prefix is a string that may be nil, empty (&amp;quot;&amp;quot;), or a string of characters&lt;br /&gt;
	-- this is prefixed to each value&lt;br /&gt;
	-- useful when when multiple values are returned&lt;br /&gt;
	-- any double-quotes &amp;quot; are stripped out, so that spaces may be passed&lt;br /&gt;
	local prefix = (args.prefix or &amp;quot;&amp;quot;):gsub(&#039;&amp;quot;&#039;, &#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
	-- postfix is a string that may be nil, empty (&amp;quot;&amp;quot;), or a string of characters&lt;br /&gt;
	-- this is postfixed to each value&lt;br /&gt;
	-- useful when when multiple values are returned&lt;br /&gt;
	-- any double-quotes &amp;quot; are stripped out, so that spaces may be passed&lt;br /&gt;
	local postfix = (args.postfix or &amp;quot;&amp;quot;):gsub(&#039;&amp;quot;&#039;, &#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
	-- linkprefix is a string that may be nil, empty (&amp;quot;&amp;quot;), or a string of characters&lt;br /&gt;
	-- this creates a link and is then prefixed to each value&lt;br /&gt;
	-- useful when when multiple values are returned and indirect links are needed&lt;br /&gt;
	-- any double-quotes &amp;quot; are stripped out, so that spaces may be passed&lt;br /&gt;
	local lprefix = (args.linkprefix or args.lp or &amp;quot;&amp;quot;):gsub(&#039;&amp;quot;&#039;, &#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
	-- linkpostfix is a string that may be nil, empty (&amp;quot;&amp;quot;), or a string of characters&lt;br /&gt;
	-- this is postfixed to each value when linking is enabled with lprefix&lt;br /&gt;
	-- useful when when multiple values are returned&lt;br /&gt;
	-- any double-quotes &amp;quot; are stripped out, so that spaces may be passed&lt;br /&gt;
	local lpostfix = (args.linkpostfix or &amp;quot;&amp;quot;):gsub(&#039;&amp;quot;&#039;, &#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
	-- wdlinks is a boolean passed to enable links to Wikidata when no article exists&lt;br /&gt;
	-- if nothing or an empty string is passed set it false&lt;br /&gt;
	local wdl = parseParam(args.wdlinks or args.wdl, false)&lt;br /&gt;
&lt;br /&gt;
	-- unitabbr is a boolean passed to enable unit abbreviations for common units&lt;br /&gt;
	-- if nothing or an empty string is passed set it false&lt;br /&gt;
	local uabbr = parseParam(args.unitabbr or args.uabbr, false)&lt;br /&gt;
&lt;br /&gt;
	-- qualsonly is a boolean passed to return just the qualifiers&lt;br /&gt;
	-- if nothing or an empty string is passed set it false&lt;br /&gt;
	local qualsonly = parseParam(args.qualsonly or args.qo, false)&lt;br /&gt;
&lt;br /&gt;
	-- maxvals is a string that may be nil, empty (&amp;quot;&amp;quot;), or a number&lt;br /&gt;
	-- this determines how many items may be returned when multiple values are available&lt;br /&gt;
	-- setting it = 1 is useful where the returned string is used within another call, e.g. image&lt;br /&gt;
	local maxvals = tonumber(args.maxvals) or 0&lt;br /&gt;
&lt;br /&gt;
	-- pd (plain date) is a string: yes/true/1 | no/false/0 | adj&lt;br /&gt;
	-- to disable/enable &amp;quot;sourcing cirumstances&amp;quot; or use adjectival form for the plain date&lt;br /&gt;
	local pd = args.plaindate or args.pd or &amp;quot;no&amp;quot;&lt;br /&gt;
	args.pd = pd&lt;br /&gt;
&lt;br /&gt;
	-- allow qualifiers to have a different date format; default to year unless qualsonly is set&lt;br /&gt;
	args.qdf = args.qdf or args.qualifierdateformat or args.df or (not qualsonly and &amp;quot;y&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	local lang = args.lang or findLang().code&lt;br /&gt;
&lt;br /&gt;
    -- qualID is a string list of wanted qualifiers or &amp;quot;ALL&amp;quot;&lt;br /&gt;
    qualID = qualID or &amp;quot;&amp;quot;&lt;br /&gt;
    -- capitalise list of wanted qualifiers and substitute &amp;quot;DATES&amp;quot;&lt;br /&gt;
    qualID = qualID:upper():gsub(&amp;quot;DATES&amp;quot;, &amp;quot;P580, P582&amp;quot;)&lt;br /&gt;
    local allflag = (qualID == &amp;quot;ALL&amp;quot;)&lt;br /&gt;
    -- create table of wanted qualifiers as key&lt;br /&gt;
    local qwanted = {}&lt;br /&gt;
    -- create sequence of wanted qualifiers&lt;br /&gt;
    local qorder = {}&lt;br /&gt;
    for q in mw.text.gsplit(qualID, &amp;quot;%p&amp;quot;) do -- split at punctuation and iterate&lt;br /&gt;
        local qtrim = mw.text.trim(q)&lt;br /&gt;
        if qtrim ~= &amp;quot;&amp;quot; then&lt;br /&gt;
            qwanted[mw.text.trim(q)] = true&lt;br /&gt;
            qorder[#qorder+1] = qtrim&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    -- qsep is the output separator for rendering qualifier list&lt;br /&gt;
    local qsep = (args.qsep or &amp;quot;&amp;quot;):gsub(&#039;&amp;quot;&#039;, &#039;&#039;)&lt;br /&gt;
    -- qargs are the arguments to supply to assembleoutput()&lt;br /&gt;
    local qargs = {&lt;br /&gt;
        [&amp;quot;osd&amp;quot;]         = &amp;quot;false&amp;quot;,&lt;br /&gt;
        [&amp;quot;linked&amp;quot;]      = tostring(linked),&lt;br /&gt;
        [&amp;quot;prefix&amp;quot;]      = args.qprefix,&lt;br /&gt;
        [&amp;quot;postfix&amp;quot;]     = args.qpostfix,&lt;br /&gt;
        [&amp;quot;linkprefix&amp;quot;]  = args.qlinkprefix or args.qlp,&lt;br /&gt;
        [&amp;quot;linkpostfix&amp;quot;] = args.qlinkpostfix,&lt;br /&gt;
        [&amp;quot;wdl&amp;quot;]         = &amp;quot;false&amp;quot;,&lt;br /&gt;
        [&amp;quot;unitabbr&amp;quot;]    = tostring(uabbr),&lt;br /&gt;
        [&amp;quot;maxvals&amp;quot;]     = 0,&lt;br /&gt;
        [&amp;quot;sorted&amp;quot;]      = tostring(args.qsorted),&lt;br /&gt;
        [&amp;quot;noicon&amp;quot;]      = &amp;quot;true&amp;quot;,&lt;br /&gt;
        [&amp;quot;list&amp;quot;]        = args.qlist,&lt;br /&gt;
        [&amp;quot;sep&amp;quot;]         = qsep,&lt;br /&gt;
        [&amp;quot;langobj&amp;quot;]     = args.langobj,&lt;br /&gt;
        [&amp;quot;lang&amp;quot;]        = args.langobj.code,&lt;br /&gt;
        [&amp;quot;df&amp;quot;]          = args.qdf,&lt;br /&gt;
        [&amp;quot;sn&amp;quot;]          = parseParam(args.qsn or args.qshortname, false),&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
	-- all proper values of a Wikidata property will be the same type as the first&lt;br /&gt;
	-- qualifiers don&#039;t have a mainsnak, properties do&lt;br /&gt;
	local datatype = objproperty[1].datatype or objproperty[1].mainsnak.datatype&lt;br /&gt;
&lt;br /&gt;
	-- out[] holds the a list of returned values for this property&lt;br /&gt;
	-- mlt[] holds the language code if the datatype is monolingual text&lt;br /&gt;
	local out = {}&lt;br /&gt;
	local mlt = {}&lt;br /&gt;
&lt;br /&gt;
	for k, v in ipairs(objproperty) do&lt;br /&gt;
		local hasvalue = true&lt;br /&gt;
		if (onlysrc and not sourced(v)) then&lt;br /&gt;
			-- no value: it isn&#039;t sourced when onlysourced=true&lt;br /&gt;
			hasvalue = false&lt;br /&gt;
		else&lt;br /&gt;
			local val, lcode = rendersnak(v, args, linked, lprefix, lpostfix, prefix, postfix, uabbr)&lt;br /&gt;
			if not val then&lt;br /&gt;
				hasvalue = false -- rank doesn&#039;t match&lt;br /&gt;
			elseif qualsonly and qualID then&lt;br /&gt;
				-- suppress value returned: only qualifiers are requested&lt;br /&gt;
			else&lt;br /&gt;
				out[#out+1], mlt[#out+1] = val, lcode&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- See if qualifiers are to be returned:&lt;br /&gt;
		local snak = v.mainsnak or v&lt;br /&gt;
		if hasvalue and v.qualifiers and qualID ~= &amp;quot;&amp;quot; and snak.snaktype~=&amp;quot;novalue&amp;quot; then&lt;br /&gt;
            -- collect all wanted qualifier values returned in qlist, indexed by propertyID&lt;br /&gt;
			local qlist = {}&lt;br /&gt;
			local timestart, timeend = &amp;quot;&amp;quot;, &amp;quot;&amp;quot;&lt;br /&gt;
            -- loop through qualifiers&lt;br /&gt;
            for k1, v1 in pairs(v.qualifiers) do&lt;br /&gt;
                if allflag or qwanted[k1] then&lt;br /&gt;
                    if k1 == &amp;quot;P1326&amp;quot; then&lt;br /&gt;
                        local ts = v1[1].datavalue.value.time&lt;br /&gt;
                        local dp = v1[1].datavalue.value.precision&lt;br /&gt;
                        qlist[k1] = dateFormat(ts, dp, args.qdf, args.bc, pd, &amp;quot;&amp;quot;, lang, &amp;quot;before&amp;quot;)&lt;br /&gt;
                    elseif k1 == &amp;quot;P1319&amp;quot; then&lt;br /&gt;
                        local ts = v1[1].datavalue.value.time&lt;br /&gt;
                        local dp = v1[1].datavalue.value.precision&lt;br /&gt;
                        qlist[k1] = dateFormat(ts, dp, args.qdf, args.bc, pd, &amp;quot;&amp;quot;, lang, &amp;quot;after&amp;quot;)&lt;br /&gt;
                    elseif k1 == &amp;quot;P580&amp;quot; then&lt;br /&gt;
                        timestart = propertyvalueandquals(v1, qargs)[1] or &amp;quot;&amp;quot; -- treat only one start time as valid&lt;br /&gt;
                    elseif k1 == &amp;quot;P582&amp;quot; then&lt;br /&gt;
                        timeend = propertyvalueandquals(v1, qargs)[1] or &amp;quot;&amp;quot; -- treat only one end time as valid&lt;br /&gt;
                    else&lt;br /&gt;
                        local q = assembleoutput(propertyvalueandquals(v1, qargs), qargs)&lt;br /&gt;
                        -- we already deal with circa via &#039;sourcing circumstances&#039; if the datatype was time&lt;br /&gt;
                        -- circa may be either linked or unlinked *** internationalise later ***&lt;br /&gt;
                        if datatype ~= &amp;quot;time&amp;quot; or q ~= &amp;quot;circa&amp;quot; and not (type(q) == &amp;quot;string&amp;quot; and q:find(&amp;quot;circa]]&amp;quot;)) then&lt;br /&gt;
                            qlist[k1] = q&lt;br /&gt;
                        end&lt;br /&gt;
                    end&lt;br /&gt;
                end -- of test for wanted&lt;br /&gt;
            end -- of loop through qualifiers&lt;br /&gt;
            -- set date separator&lt;br /&gt;
			local t = timestart .. timeend&lt;br /&gt;
			-- *** internationalise date separators later ***&lt;br /&gt;
			local dsep = &amp;quot;&amp;amp;ndash;&amp;quot;&lt;br /&gt;
			if t:find(&amp;quot;%s&amp;quot;) or t:find(&amp;quot;&amp;amp;nbsp;&amp;quot;) then dsep = &amp;quot; &amp;amp;ndash; &amp;quot; end&lt;br /&gt;
            -- set the order for the list of qualifiers returned; start time and end time go last&lt;br /&gt;
			if next(qlist) then&lt;br /&gt;
                local qlistout = {}&lt;br /&gt;
                if allflag then&lt;br /&gt;
                    for k2, v2 in pairs(qlist) do&lt;br /&gt;
                        qlistout[#qlistout+1] = v2&lt;br /&gt;
                    end&lt;br /&gt;
                else&lt;br /&gt;
                    for i2, v2 in ipairs(qorder) do&lt;br /&gt;
                        qlistout[#qlistout+1] = qlist[v2]&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
                if t ~= &amp;quot;&amp;quot; then&lt;br /&gt;
                    qlistout[#qlistout+1] = timestart .. dsep .. timeend&lt;br /&gt;
                end&lt;br /&gt;
				local qstr = assembleoutput(qlistout, qargs)&lt;br /&gt;
				if qualsonly then&lt;br /&gt;
					out[#out+1] = qstr&lt;br /&gt;
				else&lt;br /&gt;
					out[#out] = out[#out] .. &amp;quot; (&amp;quot; .. qstr .. &amp;quot;)&amp;quot;&lt;br /&gt;
				end&lt;br /&gt;
			elseif t ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				if qualsonly then&lt;br /&gt;
					if timestart == &amp;quot;&amp;quot; then&lt;br /&gt;
						out[#out+1] = timeend&lt;br /&gt;
					elseif timeend == &amp;quot;&amp;quot; then&lt;br /&gt;
						out[#out+1] = timestart&lt;br /&gt;
					else&lt;br /&gt;
						out[#out+1] = timestart .. dsep .. timeend&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					out[#out] = out[#out] .. &amp;quot; (&amp;quot; .. timestart .. dsep .. timeend .. &amp;quot;)&amp;quot;&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end -- of test for qualifiers wanted&lt;br /&gt;
&lt;br /&gt;
		if maxvals &amp;gt; 0 and #out &amp;gt;= maxvals then break end&lt;br /&gt;
	end -- of for each value loop&lt;br /&gt;
&lt;br /&gt;
	-- we need to pick one value to return if the datatype was &amp;quot;monolingualtext&amp;quot;&lt;br /&gt;
	-- if there&#039;s only one value, use that&lt;br /&gt;
	-- otherwise look through the fallback languages for a match&lt;br /&gt;
	if datatype == &amp;quot;monolingualtext&amp;quot; and #out &amp;gt;1 then&lt;br /&gt;
		lang = mw.text.split( lang, &#039;-&#039;, true )[1]&lt;br /&gt;
		local fbtbl = mw.language.getFallbacksFor( lang )&lt;br /&gt;
		table.insert( fbtbl, 1, lang )&lt;br /&gt;
		local bestval = &amp;quot;&amp;quot;&lt;br /&gt;
		local found = false&lt;br /&gt;
		for idx1, lang1 in ipairs(fbtbl) do&lt;br /&gt;
			for idx2, lang2 in ipairs(mlt) do&lt;br /&gt;
				if (lang1 == lang2) and not found then&lt;br /&gt;
					bestval = out[idx2]&lt;br /&gt;
					found = true&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
			end -- loop through values of property&lt;br /&gt;
		end -- loop through fallback languages&lt;br /&gt;
		if found then&lt;br /&gt;
			-- replace output table with a table containing the best value&lt;br /&gt;
			out = { bestval }&lt;br /&gt;
		else&lt;br /&gt;
			-- more than one value and none of them on the list of fallback languages&lt;br /&gt;
			-- sod it, just give them the first one&lt;br /&gt;
			out = { out[1] }&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Common code for p.getValueByQual and p.getValueByLang&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: parseParam; setRanks; parseInput; sourced; assembleoutput;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
local _getvaluebyqual = function(frame, qualID, checkvalue)&lt;br /&gt;
&lt;br /&gt;
	-- The property ID that will have a qualifier is the first unnamed parameter&lt;br /&gt;
	local propertyID = mw.text.trim(frame.args[1] or &amp;quot;&amp;quot;)&lt;br /&gt;
	if propertyID == &amp;quot;&amp;quot; then return &amp;quot;no property supplied&amp;quot; end&lt;br /&gt;
&lt;br /&gt;
	if qualID == &amp;quot;&amp;quot; then return &amp;quot;no qualifier supplied&amp;quot; end&lt;br /&gt;
&lt;br /&gt;
	-- onlysourced is a boolean passed to return property values&lt;br /&gt;
	-- only when property values are sourced to something other than Wikipedia&lt;br /&gt;
	-- if nothing or an empty string is passed set it true&lt;br /&gt;
	-- if &amp;quot;false&amp;quot; or &amp;quot;no&amp;quot; or 0 is passed set it false&lt;br /&gt;
	local onlysrc = parseParam(frame.args.onlysourced or frame.args.osd, true)&lt;br /&gt;
&lt;br /&gt;
	-- set the requested ranks flags&lt;br /&gt;
	frame.args.reqranks = setRanks(frame.args.rank)&lt;br /&gt;
&lt;br /&gt;
	-- set a language object and code in the frame.args table&lt;br /&gt;
	frame.args.langobj = findLang(frame.args.lang)&lt;br /&gt;
	frame.args.lang = frame.args.langobj.code&lt;br /&gt;
&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
&lt;br /&gt;
	-- check for locally supplied parameter in second unnamed parameter&lt;br /&gt;
	-- success means no local parameter and the property exists&lt;br /&gt;
	local qid, props = parseInput(frame, args[2], propertyID)&lt;br /&gt;
&lt;br /&gt;
	local linked = parseParam(args.linked, true)&lt;br /&gt;
	local lpre = (args.linkprefix or args.lp or &amp;quot;&amp;quot;):gsub(&#039;&amp;quot;&#039;, &#039;&#039;)&lt;br /&gt;
	local lpost = (args.linkpostfix or &amp;quot;&amp;quot;):gsub(&#039;&amp;quot;&#039;, &#039;&#039;)&lt;br /&gt;
	local pre = (args.prefix or &amp;quot;&amp;quot;):gsub(&#039;&amp;quot;&#039;, &#039;&#039;)&lt;br /&gt;
	local post = (args.postfix or &amp;quot;&amp;quot;):gsub(&#039;&amp;quot;&#039;, &#039;&#039;)&lt;br /&gt;
	local uabbr = parseParam(args.unitabbr or args.uabbr, false)&lt;br /&gt;
	local filter = (args.unit or &amp;quot;&amp;quot;):upper()&lt;br /&gt;
	local maxvals = tonumber(args.maxvals) or 0&lt;br /&gt;
	if filter == &amp;quot;&amp;quot; then filter = nil end&lt;br /&gt;
&lt;br /&gt;
	if qid then&lt;br /&gt;
		local out = {}&lt;br /&gt;
		-- Scan through the values of the property&lt;br /&gt;
		-- we want something like property is &amp;quot;pronunciation audio (P443)&amp;quot; in propertyID&lt;br /&gt;
		-- with a qualifier like &amp;quot;language of work or name (P407)&amp;quot; in qualID&lt;br /&gt;
		-- whose value has the required ID, like &amp;quot;British English (Q7979)&amp;quot;, in qval&lt;br /&gt;
		for k1, v1 in ipairs(props) do&lt;br /&gt;
			if v1.mainsnak.snaktype == &amp;quot;value&amp;quot; then&lt;br /&gt;
				-- check if it has the right qualifier&lt;br /&gt;
				local v1q = v1.qualifiers&lt;br /&gt;
				if v1q and v1q[qualID] then&lt;br /&gt;
					if onlysrc == false or sourced(v1) then&lt;br /&gt;
						-- if we&#039;ve got this far, we have a (sourced) claim with qualifiers&lt;br /&gt;
						-- so see if matches the required value&lt;br /&gt;
						-- We&#039;ll only deal with wikibase-items and strings for now&lt;br /&gt;
						if v1q[qualID][1].datatype == &amp;quot;wikibase-item&amp;quot; then&lt;br /&gt;
							if checkvalue(v1q[qualID][1].datavalue.value.id) then&lt;br /&gt;
								out[#out + 1] = rendersnak(v1, args, linked, lpre, lpost, pre, post, uabbr, filter)&lt;br /&gt;
							end&lt;br /&gt;
						elseif v1q[qualID][1].datatype == &amp;quot;string&amp;quot; then&lt;br /&gt;
							if checkvalue(v1q[qualID][1].datavalue.value) then&lt;br /&gt;
								out[#out + 1] = rendersnak(v1, args, linked, lpre, lpost, pre, post, uabbr, filter)&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
					end -- of check for sourced&lt;br /&gt;
				end -- of check for matching required value and has qualifiers&lt;br /&gt;
			else&lt;br /&gt;
				return nil&lt;br /&gt;
			end -- of check for string&lt;br /&gt;
			if maxvals &amp;gt; 0 and #out &amp;gt;= maxvals then break end&lt;br /&gt;
		end -- of loop through values of propertyID&lt;br /&gt;
		return assembleoutput(out, frame.args, qid, propertyID)&lt;br /&gt;
	else&lt;br /&gt;
		return props -- either local parameter or nothing&lt;br /&gt;
	end -- of test for success&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- _location takes Q-id and follows P276 (location)&lt;br /&gt;
-- or P131 (located in the administrative territorial entity) or P706 (located on terrain feature)&lt;br /&gt;
-- from the initial item to higher level territories/locations until it reaches the highest.&lt;br /&gt;
-- An optional boolean, &#039;first&#039;, determines whether the first item is returned (default: false).&lt;br /&gt;
-- An optional boolean &#039;skip&#039; toggles the display to skip to the last item (default: false).&lt;br /&gt;
-- It returns a table containing the locations - linked where possible, except for the highest.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: findLang(); labelOrId(); linkedItem&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
local _location = function(qid, first, skip)&lt;br /&gt;
	first = parseParam(first, false)&lt;br /&gt;
	skip = parseParam(skip, false)&lt;br /&gt;
	local locs = {&amp;quot;P276&amp;quot;, &amp;quot;P131&amp;quot;, &amp;quot;P706&amp;quot;}&lt;br /&gt;
	local out = {}&lt;br /&gt;
	local langcode = findLang():getCode()&lt;br /&gt;
	local finished = false&lt;br /&gt;
	local count = 0&lt;br /&gt;
	local prevqid = &amp;quot;Q0&amp;quot;&lt;br /&gt;
	repeat&lt;br /&gt;
		local prop&lt;br /&gt;
		for i1, v1 in ipairs(locs) do&lt;br /&gt;
			local proptbl = mw.wikibase.getBestStatements(qid, v1)&lt;br /&gt;
			if #proptbl &amp;gt; 1 then&lt;br /&gt;
				-- there is more than one higher location&lt;br /&gt;
				local prevP131, prevP131id&lt;br /&gt;
				if prevqid ~= &amp;quot;Q0&amp;quot; then&lt;br /&gt;
					prevP131 = mw.wikibase.getBestStatements(prevqid, &amp;quot;P131&amp;quot;)[1]&lt;br /&gt;
					prevP131id = prevP131&lt;br /&gt;
					and prevP131.mainsnak.datavalue&lt;br /&gt;
					and prevP131.mainsnak.datavalue.value.id&lt;br /&gt;
				end&lt;br /&gt;
				for i2, v2 in ipairs(proptbl) do&lt;br /&gt;
					local parttbl = v2.qualifiers and v2.qualifiers.P518&lt;br /&gt;
					if parttbl then&lt;br /&gt;
						-- this higher location has qualifier &#039;applies to part&#039; (P518)&lt;br /&gt;
						for i3, v3 in ipairs(parttbl) do&lt;br /&gt;
							if v3.snaktype == &amp;quot;value&amp;quot; and v3.datavalue.value.id == prevqid then&lt;br /&gt;
								-- it has a value equal to the previous location&lt;br /&gt;
								prop = proptbl[i2]&lt;br /&gt;
								break&lt;br /&gt;
							end -- of test for matching last location&lt;br /&gt;
						end -- of loop through values of &#039;applies to part&#039;&lt;br /&gt;
					else&lt;br /&gt;
						-- there&#039;s no qualifier &#039;applies to part&#039; (P518)&lt;br /&gt;
						-- so check if the previous location had a P131 that matches this alternate&lt;br /&gt;
						if qid == prevP131id then&lt;br /&gt;
								prop = proptbl[i2]&lt;br /&gt;
								break&lt;br /&gt;
						end -- of test for matching previous P131&lt;br /&gt;
					end&lt;br /&gt;
				end -- of loop through parent locations&lt;br /&gt;
				-- fallback to second value if match not found&lt;br /&gt;
				prop = prop or proptbl[2]&lt;br /&gt;
			elseif #proptbl &amp;gt; 0 then&lt;br /&gt;
				prop = proptbl[1]&lt;br /&gt;
			end&lt;br /&gt;
			if prop then break end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- check if it&#039;s an instance of (P31) a country (Q6256) or sovereign state (Q3624078)&lt;br /&gt;
		-- and terminate the chain if it is&lt;br /&gt;
		local inst = mw.wikibase.getAllStatements(qid, &amp;quot;P31&amp;quot;)&lt;br /&gt;
		if #inst &amp;gt; 0 then&lt;br /&gt;
			for k, v in ipairs(inst) do&lt;br /&gt;
				local instid = v.mainsnak.datavalue and v.mainsnak.datavalue.value.id&lt;br /&gt;
				-- stop if it&#039;s a country (or a country within the United Kingdom if skip is true)&lt;br /&gt;
				if instid == &amp;quot;Q6256&amp;quot; or instid == &amp;quot;Q3624078&amp;quot; or (skip and instid == &amp;quot;Q3336843&amp;quot;) then&lt;br /&gt;
					prop = nil -- this will ensure this is treated as top-level location&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- get the name of this location and update qid to point to the parent location&lt;br /&gt;
		if prop and prop.mainsnak.datavalue then&lt;br /&gt;
			if not skip or count == 0 then&lt;br /&gt;
				local args = { lprefix = &amp;quot;:&amp;quot; }&lt;br /&gt;
				out[#out+1] = linkedItem(qid, args) -- get a linked value if we can&lt;br /&gt;
			end&lt;br /&gt;
			qid, prevqid = prop.mainsnak.datavalue.value.id, qid&lt;br /&gt;
		else&lt;br /&gt;
			-- This is top-level location, so get short name except when this is the first item&lt;br /&gt;
			-- Use full label if there&#039;s no short name or this is the first item&lt;br /&gt;
			local prop1813 = mw.wikibase.getAllStatements(qid, &amp;quot;P1813&amp;quot;)&lt;br /&gt;
			-- if there&#039;s a short name and this isn&#039;t the only item&lt;br /&gt;
			if prop1813[1] and (#out &amp;gt; 0)then&lt;br /&gt;
				local shortname&lt;br /&gt;
				-- short name is monolingual text, so look for match to the local language&lt;br /&gt;
				-- choose the shortest &#039;short name&#039; in that language&lt;br /&gt;
				for k, v in pairs(prop1813) do&lt;br /&gt;
					if v.mainsnak.datavalue.value.language == langcode then&lt;br /&gt;
						local name = v.mainsnak.datavalue.value.text&lt;br /&gt;
						if (not shortname) or (#name &amp;lt; #shortname) then&lt;br /&gt;
							shortname = name&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
				-- add the shortname if one is found, fallback to the label&lt;br /&gt;
				-- but skip it if it&#039;s &amp;quot;USA&amp;quot;&lt;br /&gt;
				if shortname ~= &amp;quot;USA&amp;quot; then&lt;br /&gt;
					out[#out+1] = shortname or labelOrId(qid)&lt;br /&gt;
				else&lt;br /&gt;
					if skip then out[#out+1] = &amp;quot;US&amp;quot; end&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				-- no shortname, so just add the label&lt;br /&gt;
				local loc = labelOrId(qid)&lt;br /&gt;
				-- exceptions go here:&lt;br /&gt;
				if loc == &amp;quot;United States of America&amp;quot; then&lt;br /&gt;
					out[#out+1] = &amp;quot;United States&amp;quot;&lt;br /&gt;
				else&lt;br /&gt;
					out[#out+1] = loc&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			finished = true&lt;br /&gt;
		end&lt;br /&gt;
		count = count + 1&lt;br /&gt;
	until finished or count &amp;gt;= 10 -- limit to 10 levels to avoid infinite loops&lt;br /&gt;
&lt;br /&gt;
	-- remove the first location if not required&lt;br /&gt;
	if not first then table.remove(out, 1) end&lt;br /&gt;
&lt;br /&gt;
	-- we might have duplicate text for consecutive locations, so remove them&lt;br /&gt;
	if #out &amp;gt; 2 then&lt;br /&gt;
		local plain = {}&lt;br /&gt;
		for i, v in ipairs(out) do&lt;br /&gt;
			-- strip any links&lt;br /&gt;
			plain[i] = v:gsub(&amp;quot;^%[%[[^|]*|&amp;quot;, &amp;quot;&amp;quot;):gsub(&amp;quot;]]$&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
		local idx = 2&lt;br /&gt;
		repeat&lt;br /&gt;
			if plain[idx] == plain[idx-1] then&lt;br /&gt;
				-- duplicate found&lt;br /&gt;
				local removeidx = 0&lt;br /&gt;
				if (plain[idx] ~= out[idx]) and (plain[idx-1] == out[idx-1]) then&lt;br /&gt;
					-- only second one is linked, so drop the first&lt;br /&gt;
					removeidx = idx - 1&lt;br /&gt;
				elseif (plain[idx] == out[idx]) and (plain[idx-1] ~= out[idx-1]) then&lt;br /&gt;
					-- only first one is linked, so drop the second&lt;br /&gt;
					removeidx = idx&lt;br /&gt;
				else&lt;br /&gt;
					-- pick one&lt;br /&gt;
					removeidx = idx - (os.time()%2)&lt;br /&gt;
				end&lt;br /&gt;
				table.remove(out, removeidx)&lt;br /&gt;
				table.remove(plain, removeidx)&lt;br /&gt;
			else&lt;br /&gt;
				idx = idx +1&lt;br /&gt;
			end&lt;br /&gt;
		until idx &amp;gt;= #out&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- _getsumofparts scans the property &#039;has part&#039; (P527) for values matching a list.&lt;br /&gt;
-- The list (args.vlist) consists of a string of Qids separated by spaces or any usual punctuation.&lt;br /&gt;
-- If the matched values have a qualifer &#039;quantity&#039; (P1114), those quantites are summed.&lt;br /&gt;
-- The sum is returned as a number (i.e. 0 if none)&lt;br /&gt;
-- a table of arguments is supplied implementing the usual parameters.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: setRanks; parseParam; parseInput; sourced; assembleoutput;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
local _getsumofparts = function(args)&lt;br /&gt;
	local vallist = (args.vlist or &amp;quot;&amp;quot;):upper()&lt;br /&gt;
	if vallist == &amp;quot;&amp;quot; then return end&lt;br /&gt;
	args.reqranks = setRanks(args.rank)&lt;br /&gt;
	local f = {}&lt;br /&gt;
	f.args = args&lt;br /&gt;
	local qid, props = parseInput(f, &amp;quot;&amp;quot;, &amp;quot;P527&amp;quot;)&lt;br /&gt;
	if not qid then return 0 end&lt;br /&gt;
	local onlysrc = parseParam(args.onlysourced or args.osd, true)&lt;br /&gt;
	local sum = 0&lt;br /&gt;
	for k1, v1 in ipairs(props) do&lt;br /&gt;
		if (onlysrc == false or sourced(v1))&lt;br /&gt;
			and v1.mainsnak.snaktype == &amp;quot;value&amp;quot;&lt;br /&gt;
			and v1.mainsnak.datavalue.type == &amp;quot;wikibase-entityid&amp;quot;&lt;br /&gt;
			and vallist:match( v1.mainsnak.datavalue.value.id )&lt;br /&gt;
			and v1.qualifiers&lt;br /&gt;
			then&lt;br /&gt;
			local quals = v1.qualifiers[&amp;quot;P1114&amp;quot;]&lt;br /&gt;
			if quals then&lt;br /&gt;
				for k2, v2 in ipairs(quals) do&lt;br /&gt;
					sum = sum + v2.datavalue.value.amount&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return sum&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Public functions&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- _getValue makes the functionality of getValue available to other modules&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: setRanks; parseInput; propertyvalueandquals; assembleoutput; parseParam; sourced;&lt;br /&gt;
-- labelOrId; i18n.latestdatequalifier; format_Date; makeOrdinal; roundto; decimalPrecision; decimalToDMS;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p._getValue = function(args)&lt;br /&gt;
	-- parameter sets for commonly used groups of parameters&lt;br /&gt;
	local paraset = tonumber(args.ps or args.parameterset or 0)&lt;br /&gt;
	if paraset == 1 then&lt;br /&gt;
		-- a common setting, not usable in infoboxes because the 2018 RFC requires sources&lt;br /&gt;
		args.rank = &amp;quot;best&amp;quot;&lt;br /&gt;
		args.fetchwikidata = &amp;quot;ALL&amp;quot;&lt;br /&gt;
		args.onlysourced = &amp;quot;no&amp;quot;&lt;br /&gt;
		args.noicon = &amp;quot;true&amp;quot;&lt;br /&gt;
	elseif paraset == 2 then&lt;br /&gt;
		-- equivalent to raw, not usable in infoboxes because the 2018 RFC requires sources&lt;br /&gt;
		args.rank = &amp;quot;best&amp;quot;&lt;br /&gt;
		args.fetchwikidata = &amp;quot;ALL&amp;quot;&lt;br /&gt;
		args.onlysourced = &amp;quot;no&amp;quot;&lt;br /&gt;
		args.noicon = &amp;quot;true&amp;quot;&lt;br /&gt;
		args.linked = &amp;quot;no&amp;quot;&lt;br /&gt;
		args.pd = &amp;quot;true&amp;quot;&lt;br /&gt;
	elseif paraset == 3 then&lt;br /&gt;
		-- parameterset 1, but usable in infoboxes because the 2018 RFC requires sources&lt;br /&gt;
		args.rank = &amp;quot;best&amp;quot;&lt;br /&gt;
		args.fetchwikidata = &amp;quot;ALL&amp;quot;&lt;br /&gt;
		args.onlysourced = &amp;quot;yes&amp;quot;&lt;br /&gt;
		args.noicon = &amp;quot;true&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- implement eid parameter&lt;br /&gt;
	local eid = args.eid&lt;br /&gt;
	if eid == &amp;quot;&amp;quot; then&lt;br /&gt;
		return nil&lt;br /&gt;
	elseif eid then&lt;br /&gt;
		args.qid = eid&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local propertyID = mw.text.trim(args[1] or &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	args.reqranks = setRanks(args.rank)&lt;br /&gt;
&lt;br /&gt;
	-- replacetext (rt) is a string that is returned instead of any non-empty Wikidata value&lt;br /&gt;
	-- this is useful for tracking and debugging, so we set fetchwikidata=ALL to fill the whitelist&lt;br /&gt;
	local replacetext = mw.text.trim(args.rt or args.replacetext or &amp;quot;&amp;quot;)&lt;br /&gt;
	if replacetext ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		args.fetchwikidata = &amp;quot;ALL&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local f = {}&lt;br /&gt;
	f.args = args&lt;br /&gt;
	local entityid, props = parseInput(f, f.args[2], propertyID)&lt;br /&gt;
&lt;br /&gt;
	if not entityid then&lt;br /&gt;
		return props -- either the input parameter or nothing&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- qual is a string containing the property ID of the qualifier(s) to be returned&lt;br /&gt;
	-- if qual == &amp;quot;ALL&amp;quot; then all qualifiers returned&lt;br /&gt;
	-- if qual == &amp;quot;DATES&amp;quot; then qualifiers P580 (start time) and P582 (end time) returned&lt;br /&gt;
	-- if nothing or an empty string is passed set it nil -&amp;gt; no qualifiers returned&lt;br /&gt;
	local qualID = mw.text.trim(args.qual or &amp;quot;&amp;quot;):upper()&lt;br /&gt;
	if qualID == &amp;quot;&amp;quot; then qualID = nil end&lt;br /&gt;
&lt;br /&gt;
	-- set a language object and code in the args table&lt;br /&gt;
	args.langobj = findLang(args.lang)&lt;br /&gt;
	args.lang = args.langobj.code&lt;br /&gt;
&lt;br /&gt;
	-- table &#039;out&#039; stores the return value(s):&lt;br /&gt;
	local out = propertyvalueandquals(props, args, qualID)&lt;br /&gt;
&lt;br /&gt;
	-- format the table of values and return it as a string:&lt;br /&gt;
	return assembleoutput(out, args, entityid, propertyID)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- getValue is used to get the value(s) of a property&lt;br /&gt;
-- The property ID is passed as the first unnamed parameter and is required.&lt;br /&gt;
-- A locally supplied parameter may optionaly be supplied as the second unnamed parameter.&lt;br /&gt;
-- The function will now also return qualifiers if parameter qual is supplied&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: _getValue; setRanks; parseInput; propertyvalueandquals; assembleoutput; parseParam; sourced;&lt;br /&gt;
-- labelOrId; i18n.latestdatequalifier; format_Date; makeOrdinal; roundto; decimalPrecision; decimalToDMS;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.getValue = function(frame)&lt;br /&gt;
	local args= frame.args&lt;br /&gt;
	if not args[1] then&lt;br /&gt;
		args = frame:getParent().args&lt;br /&gt;
		if not args[1] then return i18n.errors[&amp;quot;No property supplied&amp;quot;] end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return p._getValue(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- getPreferredValue is used to get a value,&lt;br /&gt;
-- (or a comma separated list of them if multiple values exist).&lt;br /&gt;
-- If preferred ranks are set, it will return those values, otherwise values with normal ranks&lt;br /&gt;
-- now redundant to getValue with |rank=best&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: p.getValue; setRanks; parseInput; propertyvalueandquals; assembleoutput;&lt;br /&gt;
-- parseParam; sourced; labelOrId; i18n.latestdatequalifier; format_Date;&lt;br /&gt;
-- makeOrdinal; roundto; decimalPrecision; decimalToDMS;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.getPreferredValue = function(frame)&lt;br /&gt;
	frame.args.rank = &amp;quot;best&amp;quot;&lt;br /&gt;
	return p.getValue(frame)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- getCoords is used to get coordinates for display in an infobox&lt;br /&gt;
-- whitelist and blacklist are implemented&lt;br /&gt;
-- optional &#039;display&#039; parameter is allowed, defaults to nil - was &amp;quot;inline, title&amp;quot;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: setRanks(); parseInput(); decimalPrecision();&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.getCoords = function(frame)&lt;br /&gt;
	local propertyID = &amp;quot;P625&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	-- if there is a &#039;display&#039; parameter supplied, use it&lt;br /&gt;
	-- otherwise default to nothing&lt;br /&gt;
	local disp = frame.args.display or &amp;quot;&amp;quot;&lt;br /&gt;
	if disp == &amp;quot;&amp;quot; then&lt;br /&gt;
		disp = nil -- default to not supplying display parameter, was &amp;quot;inline, title&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- there may be a format parameter to switch from deg/min/sec to decimal degrees&lt;br /&gt;
	-- default is deg/min/sec&lt;br /&gt;
	-- decimal degrees needs |format = dec&lt;br /&gt;
	local form = (frame.args.format or &amp;quot;&amp;quot;):lower():sub(1,3)&lt;br /&gt;
	if form ~= &amp;quot;dec&amp;quot; then&lt;br /&gt;
		form = &amp;quot;dms&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- just deal with best values&lt;br /&gt;
	frame.args.reqranks = setRanks(&amp;quot;best&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	local qid, props = parseInput(frame, frame.args[1], propertyID)&lt;br /&gt;
	if not qid then&lt;br /&gt;
		return props -- either local parameter or nothing&lt;br /&gt;
	else&lt;br /&gt;
		local dv = props[1].mainsnak.datavalue.value&lt;br /&gt;
		local lat, long, prec = dv.latitude, dv.longitude, dv.precision&lt;br /&gt;
		lat = decimalPrecision(lat, prec)&lt;br /&gt;
		long = decimalPrecision(long, prec)&lt;br /&gt;
		local lat_long = { lat, long }&lt;br /&gt;
		lat_long[&amp;quot;display&amp;quot;] = disp&lt;br /&gt;
		lat_long[&amp;quot;format&amp;quot;] = form&lt;br /&gt;
		-- invoke template Coord with the values stored in the table&lt;br /&gt;
		return frame:expandTemplate{title = &#039;coord&#039;, args = lat_long}&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- getQualifierValue is used to get a formatted value of a qualifier&lt;br /&gt;
--&lt;br /&gt;
-- The call needs:	a property (the unnamed parameter or 1=)&lt;br /&gt;
-- 					a target value for that property (pval=)&lt;br /&gt;
--					a qualifier for that target value (qual=)&lt;br /&gt;
-- The usual whitelisting and blacklisting of the property is implemented&lt;br /&gt;
-- The boolean onlysourced= parameter can be set to return nothing&lt;br /&gt;
-- when the property is unsourced (or only sourced to Wikipedia)&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: parseParam(); setRanks(); parseInput(); sourced();&lt;br /&gt;
-- propertyvalueandquals(); assembleoutput();&lt;br /&gt;
-- labelOrId(); i18n.latestdatequalifier(); format_Date();&lt;br /&gt;
-- findLang(); makeOrdinal(); roundto(); decimalPrecision(); decimalToDMS();&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.getQualifierValue = function(frame)&lt;br /&gt;
&lt;br /&gt;
	-- The property ID that will have a qualifier is the first unnamed parameter&lt;br /&gt;
	local propertyID = mw.text.trim(frame.args[1] or &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	-- The value of the property we want to match whose qualifier value is to be returned&lt;br /&gt;
	-- is passed in named parameter |pval=&lt;br /&gt;
	local propvalue = frame.args.pval&lt;br /&gt;
&lt;br /&gt;
	-- The property ID of the qualifier&lt;br /&gt;
	-- whose value is to be returned is passed in named parameter |qual=&lt;br /&gt;
	local qualifierID = frame.args.qual&lt;br /&gt;
&lt;br /&gt;
	-- A filter can be set like this: filter=P642==Q22674854&lt;br /&gt;
	local filter, fprop, fval&lt;br /&gt;
	local ftable = mw.text.split(frame.args.filter or &amp;quot;&amp;quot;, &amp;quot;==&amp;quot;)&lt;br /&gt;
	if ftable[2] then&lt;br /&gt;
		fprop = mw.text.trim(ftable[1])&lt;br /&gt;
		fval = mw.text.trim(ftable[2])&lt;br /&gt;
		filter = true&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- onlysourced is a boolean passed to return qualifiers&lt;br /&gt;
	-- only when property values are sourced to something other than Wikipedia&lt;br /&gt;
	-- if nothing or an empty string is passed set it true&lt;br /&gt;
	-- if &amp;quot;false&amp;quot; or &amp;quot;no&amp;quot; or 0 is passed set it false&lt;br /&gt;
	local onlysrc = parseParam(frame.args.onlysourced or frame.args.osd, true)&lt;br /&gt;
&lt;br /&gt;
	-- set a language object and language code in the frame.args table&lt;br /&gt;
	frame.args.langobj = findLang(frame.args.lang)&lt;br /&gt;
	frame.args.lang = frame.args.langobj.code&lt;br /&gt;
&lt;br /&gt;
	-- set the requested ranks flags&lt;br /&gt;
	frame.args.reqranks = setRanks(frame.args.rank)&lt;br /&gt;
&lt;br /&gt;
	-- check for locally supplied parameter in second unnamed parameter&lt;br /&gt;
	-- success means no local parameter and the property exists&lt;br /&gt;
	local qid, props = parseInput(frame, frame.args[2], propertyID)&lt;br /&gt;
	if qid then&lt;br /&gt;
		local out = {}&lt;br /&gt;
		-- Scan through the values of the property&lt;br /&gt;
		-- we want something like property is P793, significant event (in propertyID)&lt;br /&gt;
		-- whose value is something like Q385378, construction (in propvalue)&lt;br /&gt;
		-- then we can return the value(s) of a qualifier such as P580, start time (in qualifierID)&lt;br /&gt;
		for k1, v1 in pairs(props) do&lt;br /&gt;
			if v1.mainsnak.snaktype == &amp;quot;value&amp;quot; and v1.mainsnak.datavalue.type == &amp;quot;wikibase-entityid&amp;quot; then&lt;br /&gt;
				-- It&#039;s a wiki-linked value, so check if it&#039;s the target (in propvalue) and if it has qualifiers&lt;br /&gt;
				if v1.mainsnak.datavalue.value.id == propvalue and v1.qualifiers then&lt;br /&gt;
					if onlysrc == false or sourced(v1) then&lt;br /&gt;
						-- if we&#039;ve got this far, we have a (sourced) claim with qualifiers&lt;br /&gt;
						-- which matches the target, so apply the filter and find the value(s) of the qualifier we want&lt;br /&gt;
						if not filter or (v1.qualifiers[fprop] and v1.qualifiers[fprop][1].datavalue.value.id == fval) then&lt;br /&gt;
							local quals = v1.qualifiers[qualifierID]&lt;br /&gt;
							if quals then&lt;br /&gt;
								-- can&#039;t reference qualifer, so set onlysourced = &amp;quot;no&amp;quot; (args are strings, not boolean)&lt;br /&gt;
								local qargs = frame.args&lt;br /&gt;
								qargs.onlysourced = &amp;quot;no&amp;quot;&lt;br /&gt;
								local vals = propertyvalueandquals(quals, qargs, qid)&lt;br /&gt;
								for k, v in ipairs(vals) do&lt;br /&gt;
									out[#out + 1] = v&lt;br /&gt;
								end&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
					end -- of check for sourced&lt;br /&gt;
				end -- of check for matching required value and has qualifiers&lt;br /&gt;
			end -- of check for wikibase entity&lt;br /&gt;
		end -- of loop through values of propertyID&lt;br /&gt;
		return assembleoutput(out, frame.args, qid, propertyID)&lt;br /&gt;
	else&lt;br /&gt;
		return props -- either local parameter or nothing&lt;br /&gt;
	end -- of test for success&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- getSumOfParts scans the property &#039;has part&#039; (P527) for values matching a list.&lt;br /&gt;
-- The list is passed in parameter vlist.&lt;br /&gt;
-- It consists of a string of Qids separated by spaces or any usual punctuation.&lt;br /&gt;
-- If the matched values have a qualifier &#039;quantity&#039; (P1114), those quantities are summed.&lt;br /&gt;
-- The sum is returned as a number or nothing if zero.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: _getsumofparts;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.getSumOfParts = function(frame)&lt;br /&gt;
	local sum = _getsumofparts(frame.args)&lt;br /&gt;
	if sum == 0 then return end&lt;br /&gt;
	return sum&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- getValueByQual gets the value of a property which has a qualifier with a given entity value&lt;br /&gt;
-- The call needs:&lt;br /&gt;
--					a property ID (the unnamed parameter or 1=Pxxx)&lt;br /&gt;
--					the ID of a qualifier for that property (qualID=Pyyy)&lt;br /&gt;
--					either the Wikibase-entity ID of a value for that qualifier (qvalue=Qzzz)&lt;br /&gt;
--					or a string value for that qualifier (qvalue=abc123)&lt;br /&gt;
-- The usual whitelisting, blacklisting, onlysourced, etc. are implemented&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: _getvaluebyqual; parseParam; setRanks; parseInput; sourced;&lt;br /&gt;
-- assembleoutput;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.getValueByQual = function(frame)&lt;br /&gt;
	local qualID = frame.args.qualID&lt;br /&gt;
	-- The Q-id of the value for the qualifier we want to match is in named parameter |qvalue=&lt;br /&gt;
	local qval = frame.args.qvalue or &amp;quot;&amp;quot;&lt;br /&gt;
	if qval == &amp;quot;&amp;quot; then return &amp;quot;no qualifier value supplied&amp;quot; end&lt;br /&gt;
	local function checkQID(id)&lt;br /&gt;
		return id == qval&lt;br /&gt;
	end&lt;br /&gt;
	return _getvaluebyqual(frame, qualID, checkQID)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- getValueByLang gets the value of a property which has a qualifier P407&lt;br /&gt;
-- (&amp;quot;language of work or name&amp;quot;) whose value has the given language code&lt;br /&gt;
-- The call needs:&lt;br /&gt;
--					a property ID (the unnamed parameter or 1=Pxxx)&lt;br /&gt;
--					the MediaWiki language code to match the language (lang=xx[-yy])&lt;br /&gt;
--					(if no code is supplied, it uses the default language)&lt;br /&gt;
-- The usual whitelisting, blacklisting, onlysourced, etc. are implemented&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: _getvaluebyqual; parseParam; setRanks; parseInput; sourced; assembleoutput;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.getValueByLang = function(frame)&lt;br /&gt;
	-- The language code for the qualifier we want to match is in named parameter |lang=&lt;br /&gt;
	local langcode = findLang(frame.args.lang).code&lt;br /&gt;
	local function checkLanguage(id)&lt;br /&gt;
		-- id should represent a language like &amp;quot;British English (Q7979)&amp;quot;&lt;br /&gt;
		-- it should have string property &amp;quot;Wikimedia language code (P424)&amp;quot;&lt;br /&gt;
		-- qlcode will be a table:&lt;br /&gt;
		local qlcode = mw.wikibase.getBestStatements(id, &amp;quot;P424&amp;quot;)&lt;br /&gt;
		if (#qlcode &amp;gt; 0) and (qlcode[1].mainsnak.datavalue.value == langcode) then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return _getvaluebyqual(frame, &amp;quot;P407&amp;quot;, checkLanguage)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- getValueByRefSource gets the value of a property which has a reference &amp;quot;stated in&amp;quot; (P248)&lt;br /&gt;
-- whose value has the given entity-ID.&lt;br /&gt;
-- The call needs:&lt;br /&gt;
--					a property ID (the unnamed parameter or 1=Pxxx)&lt;br /&gt;
--					the entity ID of a value to match where the reference is stated in (match=Qzzz)&lt;br /&gt;
-- The usual whitelisting, blacklisting, onlysourced, etc. are implemented&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: parseParam; setRanks; parseInput; sourced; propertyvalueandquals assembleoutput;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.getValueByRefSource = function(frame)&lt;br /&gt;
	-- The property ID that we want to check is the first unnamed parameter&lt;br /&gt;
	local propertyID = mw.text.trim(frame.args[1] or &amp;quot;&amp;quot;):upper()&lt;br /&gt;
	if propertyID == &amp;quot;&amp;quot; then return &amp;quot;no property supplied&amp;quot; end&lt;br /&gt;
&lt;br /&gt;
	-- The Q-id of the value we want to match is in named parameter |qvalue=&lt;br /&gt;
	local qval = (frame.args.match or &amp;quot;&amp;quot;):upper()&lt;br /&gt;
	if qval == &amp;quot;&amp;quot; then qval = &amp;quot;Q21540096&amp;quot; end&lt;br /&gt;
&lt;br /&gt;
	local unit = (frame.args.unit or &amp;quot;&amp;quot;):upper()&lt;br /&gt;
	if unit == &amp;quot;&amp;quot; then unit = &amp;quot;Q4917&amp;quot; end&lt;br /&gt;
&lt;br /&gt;
	local onlysrc = parseParam(frame.args.onlysourced or frame.args.osd, true)&lt;br /&gt;
&lt;br /&gt;
	-- set the requested ranks flags&lt;br /&gt;
	frame.args.reqranks = setRanks(frame.args.rank)&lt;br /&gt;
&lt;br /&gt;
	-- set a language object and code in the frame.args table&lt;br /&gt;
	frame.args.langobj = findLang(frame.args.lang)&lt;br /&gt;
	frame.args.lang = frame.args.langobj.code&lt;br /&gt;
&lt;br /&gt;
	local linked = parseParam(frame.args.linked, true)&lt;br /&gt;
&lt;br /&gt;
	local uabbr = parseParam(frame.args.uabbr or frame.args.unitabbr, false)&lt;br /&gt;
&lt;br /&gt;
	-- qid not nil means no local parameter and the property exists&lt;br /&gt;
	local qid, props = parseInput(frame, frame.args[2], propertyID)&lt;br /&gt;
&lt;br /&gt;
	if qid then&lt;br /&gt;
		local out = {}&lt;br /&gt;
		local mlt= {}&lt;br /&gt;
		for k1, v1 in ipairs(props) do&lt;br /&gt;
			if onlysrc == false or sourced(v1) then&lt;br /&gt;
				if v1.references then&lt;br /&gt;
					for k2, v2 in ipairs(v1.references) do&lt;br /&gt;
						if v2.snaks.P248 then&lt;br /&gt;
							for k3, v3 in ipairs(v2.snaks.P248) do&lt;br /&gt;
								if v3.datavalue.value.id == qval then&lt;br /&gt;
									out[#out+1], mlt[#out+1] = rendersnak(v1, frame.args, linked, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;, uabbr, unit)&lt;br /&gt;
									if not mlt[#out] then&lt;br /&gt;
										-- we only need one match per property value&lt;br /&gt;
										-- unless datatype was monolingual text&lt;br /&gt;
										break&lt;br /&gt;
									end&lt;br /&gt;
								end -- of test for match&lt;br /&gt;
							end -- of loop through values &amp;quot;stated in&amp;quot;&lt;br /&gt;
						end -- of test that &amp;quot;stated in&amp;quot; exists&lt;br /&gt;
					end -- of loop through references&lt;br /&gt;
				end -- of test that references exist&lt;br /&gt;
			end -- of test for sourced&lt;br /&gt;
		end -- of loop through values of propertyID&lt;br /&gt;
		if #mlt &amp;gt; 0 then&lt;br /&gt;
			local langcode = frame.args.lang&lt;br /&gt;
			langcode = mw.text.split( langcode, &#039;-&#039;, true )[1]&lt;br /&gt;
			local fbtbl = mw.language.getFallbacksFor( langcode )&lt;br /&gt;
			table.insert( fbtbl, 1, langcode )&lt;br /&gt;
			local bestval = &amp;quot;&amp;quot;&lt;br /&gt;
			local found = false&lt;br /&gt;
			for idx1, lang1 in ipairs(fbtbl) do&lt;br /&gt;
				for idx2, lang2 in ipairs(mlt) do&lt;br /&gt;
					if (lang1 == lang2) and not found then&lt;br /&gt;
						bestval = out[idx2]&lt;br /&gt;
						found = true&lt;br /&gt;
						break&lt;br /&gt;
					end&lt;br /&gt;
				end -- loop through values of property&lt;br /&gt;
			end -- loop through fallback languages&lt;br /&gt;
			if found then&lt;br /&gt;
				-- replace output table with a table containing the best value&lt;br /&gt;
				out = { bestval }&lt;br /&gt;
			else&lt;br /&gt;
				-- more than one value and none of them on the list of fallback languages&lt;br /&gt;
				-- sod it, just give them the first one&lt;br /&gt;
				out = { out[1] }&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return assembleoutput(out, frame.args, qid, propertyID)&lt;br /&gt;
	else&lt;br /&gt;
		return props -- no property or local parameter supplied&lt;br /&gt;
	end -- of test for success&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- getPropertyIDs takes most of the usual parameters.&lt;br /&gt;
-- The usual whitelisting, blacklisting, onlysourced, etc. are implemented.&lt;br /&gt;
-- It returns the Entity-IDs (Qids) of the values of a property if it is a Wikibase-Entity.&lt;br /&gt;
-- Otherwise it returns nothing.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: parseParam; setRanks; parseInput; sourced; propertyvalueandquals assembleoutput;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p._getPropertyIDs = function(args)&lt;br /&gt;
	args.reqranks = setRanks(args.rank)&lt;br /&gt;
	args.langobj = findLang(args.lang)&lt;br /&gt;
	args.lang = args.langobj.code&lt;br /&gt;
	-- change default for noicon to true&lt;br /&gt;
	args.noicon = tostring(parseParam(args.noicon or &amp;quot;&amp;quot;, true))&lt;br /&gt;
	local f = {}&lt;br /&gt;
	f.args = args&lt;br /&gt;
	local pid = mw.text.trim(args[1] or &amp;quot;&amp;quot;):upper()&lt;br /&gt;
&lt;br /&gt;
	-- get the qid and table of claims for the property, or nothing and the local value passed&lt;br /&gt;
	local qid, props = parseInput(f, args[2], pid)&lt;br /&gt;
	if not qid then return props end&lt;br /&gt;
	if not props[1] then return nil end&lt;br /&gt;
	local onlysrc = parseParam(args.onlysourced or args.osd, true)&lt;br /&gt;
	local maxvals = tonumber(args.maxvals) or 0&lt;br /&gt;
&lt;br /&gt;
	local out = {}&lt;br /&gt;
	for i, v in ipairs(props) do&lt;br /&gt;
		local snak = v.mainsnak&lt;br /&gt;
		if ( snak.datatype == &amp;quot;wikibase-item&amp;quot; )&lt;br /&gt;
			and ( v.rank and args.reqranks[v.rank:sub(1, 1)] )&lt;br /&gt;
			and ( snak.snaktype == &amp;quot;value&amp;quot; )&lt;br /&gt;
			and ( sourced(v) or not onlysrc )&lt;br /&gt;
			then&lt;br /&gt;
			out[#out+1] = snak.datavalue.value.id&lt;br /&gt;
		end&lt;br /&gt;
		if maxvals &amp;gt; 0 and #out &amp;gt;= maxvals then break end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return assembleoutput(out, args, qid, pid)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.getPropertyIDs = function(frame)&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
	return p._getPropertyIDs(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- getQualifierIDs takes most of the usual parameters.&lt;br /&gt;
-- The usual whitelisting, blacklisting, onlysourced, etc. are implemented.&lt;br /&gt;
-- It takes a property-id as the first unnamed parameter, and an optional parameter qlist&lt;br /&gt;
-- which is a list of qualifier property-ids to search for (default is &amp;quot;ALL&amp;quot;)&lt;br /&gt;
-- It returns the Entity-IDs (Qids) of the values of a property if it is a Wikibase-Entity.&lt;br /&gt;
-- Otherwise it returns nothing.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: parseParam; setRanks; parseInput; sourced; propertyvalueandquals assembleoutput;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.getQualifierIDs = function(frame)&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
	args.reqranks = setRanks(args.rank)&lt;br /&gt;
	args.langobj = findLang(args.lang)&lt;br /&gt;
	args.lang = args.langobj.code&lt;br /&gt;
	-- change default for noicon to true&lt;br /&gt;
	args.noicon = tostring(parseParam(args.noicon or &amp;quot;&amp;quot;, true))&lt;br /&gt;
	local f = {}&lt;br /&gt;
	f.args = args&lt;br /&gt;
	local pid = mw.text.trim(args[1] or &amp;quot;&amp;quot;):upper()&lt;br /&gt;
&lt;br /&gt;
	-- get the qid and table of claims for the property, or nothing and the local value passed&lt;br /&gt;
	local qid, props = parseInput(f, args[2], pid)&lt;br /&gt;
	if not qid then return props end&lt;br /&gt;
	if not props[1] then return nil end&lt;br /&gt;
	-- get the other parameters&lt;br /&gt;
	local onlysrc = parseParam(args.onlysourced or args.osd, true)&lt;br /&gt;
	local maxvals = tonumber(args.maxvals) or 0&lt;br /&gt;
	local qlist = args.qlist or &amp;quot;&amp;quot;&lt;br /&gt;
	if qlist == &amp;quot;&amp;quot; then qlist = &amp;quot;ALL&amp;quot; end&lt;br /&gt;
	qlist = qlist:gsub(&amp;quot;[%p%s]+&amp;quot;, &amp;quot; &amp;quot;) .. &amp;quot; &amp;quot;&lt;br /&gt;
&lt;br /&gt;
	local out = {}&lt;br /&gt;
	for i, v in ipairs(props) do&lt;br /&gt;
		local snak = v.mainsnak&lt;br /&gt;
		if ( v.rank and args.reqranks[v.rank:sub(1, 1)] )&lt;br /&gt;
			and ( snak.snaktype == &amp;quot;value&amp;quot; )&lt;br /&gt;
			and ( sourced(v) or not onlysrc )&lt;br /&gt;
			then&lt;br /&gt;
			if v.qualifiers then&lt;br /&gt;
				for k1, v1 in pairs(v.qualifiers) do&lt;br /&gt;
					if qlist == &amp;quot;ALL &amp;quot; or qlist:match(k1 .. &amp;quot; &amp;quot;) then&lt;br /&gt;
						for i2, v2 in ipairs(v1) do&lt;br /&gt;
							if v2.datatype == &amp;quot;wikibase-item&amp;quot; and v2.snaktype == &amp;quot;value&amp;quot; then&lt;br /&gt;
								out[#out+1] = v2.datavalue.value.id&lt;br /&gt;
							end -- of test that id exists&lt;br /&gt;
						end -- of loop through qualifier values&lt;br /&gt;
					end -- of test for kq in qlist&lt;br /&gt;
				end -- of loop through qualifiers&lt;br /&gt;
			end -- of test for qualifiers&lt;br /&gt;
		end -- of test for rank value, sourced, and value exists&lt;br /&gt;
		if maxvals &amp;gt; 0 and #out &amp;gt;= maxvals then break end&lt;br /&gt;
	end -- of loop through property values&lt;br /&gt;
&lt;br /&gt;
	return assembleoutput(out, args, qid, pid)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- getPropOfProp takes two propertyIDs: prop1 and prop2 (as well as the usual parameters)&lt;br /&gt;
-- If the value(s) of prop1 are of type &amp;quot;wikibase-item&amp;quot; then it returns the value(s) of prop2&lt;br /&gt;
-- of each of those wikibase-items.&lt;br /&gt;
-- The usual whitelisting, blacklisting, onlysourced, etc. are implemented&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: parseParam; setRanks; parseInput; sourced; propertyvalueandquals assembleoutput;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p._getPropOfProp = function(args)&lt;br /&gt;
	-- parameter sets for commonly used groups of parameters&lt;br /&gt;
	local paraset = tonumber(args.ps or args.parameterset or 0)&lt;br /&gt;
	if paraset == 1 then&lt;br /&gt;
		-- a common setting&lt;br /&gt;
		args.rank = &amp;quot;best&amp;quot;&lt;br /&gt;
		args.fetchwikidata = &amp;quot;ALL&amp;quot;&lt;br /&gt;
		args.onlysourced = &amp;quot;no&amp;quot;&lt;br /&gt;
		args.noicon = &amp;quot;true&amp;quot;&lt;br /&gt;
	elseif paraset == 2 then&lt;br /&gt;
		-- equivalent to raw&lt;br /&gt;
		args.rank = &amp;quot;best&amp;quot;&lt;br /&gt;
		args.fetchwikidata = &amp;quot;ALL&amp;quot;&lt;br /&gt;
		args.onlysourced = &amp;quot;no&amp;quot;&lt;br /&gt;
		args.noicon = &amp;quot;true&amp;quot;&lt;br /&gt;
		args.linked = &amp;quot;no&amp;quot;&lt;br /&gt;
		args.pd = &amp;quot;true&amp;quot;&lt;br /&gt;
	elseif paraset == 3 then&lt;br /&gt;
		-- third set goes here&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	args.reqranks = setRanks(args.rank)&lt;br /&gt;
	args.langobj = findLang(args.lang)&lt;br /&gt;
	args.lang = args.langobj.code&lt;br /&gt;
	local pid1 = args.prop1 or args.pid1 or &amp;quot;&amp;quot;&lt;br /&gt;
	local pid2 = args.prop2 or args.pid2 or &amp;quot;&amp;quot;&lt;br /&gt;
	if pid1 == &amp;quot;&amp;quot; or pid2 == &amp;quot;&amp;quot; then return nil end&lt;br /&gt;
&lt;br /&gt;
	local f = {}&lt;br /&gt;
	f.args = args&lt;br /&gt;
	local qid1, statements1 = parseInput(f, args[1], pid1)&lt;br /&gt;
	-- parseInput nulls empty args[1] and returns args[1] if nothing on Wikidata&lt;br /&gt;
	if not qid1 then return statements1 end&lt;br /&gt;
	-- otherwise it returns the qid and a table for the statement&lt;br /&gt;
	local onlysrc = parseParam(args.onlysourced or args.osd, true)&lt;br /&gt;
	local maxvals = tonumber(args.maxvals) or 0&lt;br /&gt;
	local qualID = mw.text.trim(args.qual or &amp;quot;&amp;quot;):upper()&lt;br /&gt;
	if qualID == &amp;quot;&amp;quot; then qualID = nil end&lt;br /&gt;
	local out = {}&lt;br /&gt;
	for k, v in ipairs(statements1) do&lt;br /&gt;
		if not onlysrc or sourced(v) then&lt;br /&gt;
			local snak = v.mainsnak&lt;br /&gt;
			if snak.datatype == &amp;quot;wikibase-item&amp;quot; and snak.snaktype == &amp;quot;value&amp;quot; then&lt;br /&gt;
				local qid2 = snak.datavalue.value.id&lt;br /&gt;
				local statements2 = {}&lt;br /&gt;
				if args.reqranks.b then&lt;br /&gt;
					statements2 = mw.wikibase.getBestStatements(qid2, pid2)&lt;br /&gt;
				else&lt;br /&gt;
					statements2 = mw.wikibase.getAllStatements(qid2, pid2)&lt;br /&gt;
				end&lt;br /&gt;
				if statements2[1] then&lt;br /&gt;
					local out2 = propertyvalueandquals(statements2, args, qualID)&lt;br /&gt;
					out[#out+1] = assembleoutput(out2, args, qid2, pid2)&lt;br /&gt;
				end&lt;br /&gt;
			end -- of test for valid property1 value&lt;br /&gt;
		end -- of test for sourced&lt;br /&gt;
		if maxvals &amp;gt; 0 and #out &amp;gt;= maxvals then break end&lt;br /&gt;
	end -- of loop through values of property1&lt;br /&gt;
	return assembleoutput(out, args, qid1, pid1)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.getPropOfProp = function(frame)&lt;br /&gt;
	local args= frame.args&lt;br /&gt;
	if not args.prop1 and not args.pid1 then&lt;br /&gt;
		args = frame:getParent().args&lt;br /&gt;
		if not args.prop1 and not args.pid1 then return i18n.errors[&amp;quot;No property supplied&amp;quot;] end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return p._getPropOfProp(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- getAwardCat takes most of the usual parameters. If the item has values of P166 (award received),&lt;br /&gt;
-- then it examines each of those awards for P2517 (category for recipients of this award).&lt;br /&gt;
-- If it exists, it returns the corresponding category,&lt;br /&gt;
-- with the item&#039;s P734 (family name) as sort key, or no sort key if there is no family name.&lt;br /&gt;
-- The sort key may be overridden by the parameter |sortkey (alias |sk).&lt;br /&gt;
-- The usual whitelisting, blacklisting, onlysourced, etc. are implemented&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: parseParam; setRanks; parseInput; sourced; propertyvalueandquals assembleoutput;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.getAwardCat = function(frame)&lt;br /&gt;
	frame.args.reqranks = setRanks(frame.args.rank)&lt;br /&gt;
	frame.args.langobj = findLang(frame.args.lang)&lt;br /&gt;
	frame.args.lang = frame.args.langobj.code&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
	args.sep = &amp;quot; &amp;quot;&lt;br /&gt;
	local pid1 = args.prop1 or &amp;quot;P166&amp;quot;&lt;br /&gt;
	local pid2 = args.prop2 or &amp;quot;P2517&amp;quot;&lt;br /&gt;
	if pid1 == &amp;quot;&amp;quot; or pid2 == &amp;quot;&amp;quot; then return nil end&lt;br /&gt;
	-- locally supplied value:&lt;br /&gt;
	local localval = mw.text.trim(args[1] or &amp;quot;&amp;quot;)&lt;br /&gt;
	local qid1, statements1 = parseInput(frame, localval, pid1)&lt;br /&gt;
	if not qid1 then return localval end&lt;br /&gt;
	-- linkprefix (strip quotes)&lt;br /&gt;
	local lp = (args.linkprefix or args.lp or &amp;quot;&amp;quot;):gsub(&#039;&amp;quot;&#039;, &#039;&#039;)&lt;br /&gt;
	-- sort key (strip quotes, hyphens and periods):&lt;br /&gt;
	local sk = (args.sortkey or args.sk or &amp;quot;&amp;quot;):gsub(&#039;[&amp;quot;-.]&#039;, &#039;&#039;)&lt;br /&gt;
	-- family name:&lt;br /&gt;
	local famname = &amp;quot;&amp;quot;&lt;br /&gt;
	if sk == &amp;quot;&amp;quot; then&lt;br /&gt;
		local p734 = mw.wikibase.getBestStatements(qid1, &amp;quot;P734&amp;quot;)[1]&lt;br /&gt;
		local p734id = p734 and p734.mainsnak.snaktype == &amp;quot;value&amp;quot; and p734.mainsnak.datavalue.value.id or &amp;quot;&amp;quot;&lt;br /&gt;
		famname = mw.wikibase.getSitelink(p734id) or &amp;quot;&amp;quot;&lt;br /&gt;
		-- strip namespace and disambigation&lt;br /&gt;
		local pos = famname:find(&amp;quot;:&amp;quot;) or 0&lt;br /&gt;
		famname = famname:sub(pos+1):gsub(&amp;quot;%s%(.+%)$&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
		if famname == &amp;quot;&amp;quot; then&lt;br /&gt;
			local lbl = mw.wikibase.getLabel(p734id)&lt;br /&gt;
			famname = lbl and mw.text.nowiki(lbl) or &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local onlysrc = parseParam(args.onlysourced or args.osd, true)&lt;br /&gt;
	local maxvals = tonumber(args.maxvals) or 0&lt;br /&gt;
	local qualID = mw.text.trim(args.qual or &amp;quot;&amp;quot;):upper()&lt;br /&gt;
	if qualID == &amp;quot;&amp;quot; then qualID = nil end&lt;br /&gt;
	local out = {}&lt;br /&gt;
	for k, v in ipairs(statements1) do&lt;br /&gt;
		if not onlysrc or sourced(v) then&lt;br /&gt;
			local snak = v.mainsnak&lt;br /&gt;
			if snak.datatype == &amp;quot;wikibase-item&amp;quot; and snak.snaktype == &amp;quot;value&amp;quot; then&lt;br /&gt;
				local qid2 = snak.datavalue.value.id&lt;br /&gt;
				local statements2 = {}&lt;br /&gt;
				if args.reqranks.b then&lt;br /&gt;
					statements2 = mw.wikibase.getBestStatements(qid2, pid2)&lt;br /&gt;
				else&lt;br /&gt;
					statements2 = mw.wikibase.getAllStatements(qid2, pid2)&lt;br /&gt;
				end&lt;br /&gt;
				if statements2[1] and statements2[1].mainsnak.snaktype == &amp;quot;value&amp;quot; then&lt;br /&gt;
					local qid3 = statements2[1].mainsnak.datavalue.value.id&lt;br /&gt;
					local sitelink = mw.wikibase.getSitelink(qid3)&lt;br /&gt;
					-- if there&#039;s no local sitelink, create the sitelink from English label&lt;br /&gt;
					if not sitelink then&lt;br /&gt;
						local lbl = mw.wikibase.getLabelByLang(qid3, &amp;quot;en&amp;quot;)&lt;br /&gt;
						if lbl then&lt;br /&gt;
							if lbl:sub(1,9) == &amp;quot;Category:&amp;quot; then&lt;br /&gt;
								sitelink = mw.text.nowiki(lbl)&lt;br /&gt;
							else&lt;br /&gt;
								sitelink = &amp;quot;Category:&amp;quot; .. mw.text.nowiki(lbl)&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
					if sitelink then&lt;br /&gt;
						if sk ~= &amp;quot;&amp;quot; then&lt;br /&gt;
							out[#out+1] = &amp;quot;[[&amp;quot; .. lp .. sitelink .. &amp;quot;|&amp;quot; .. sk .. &amp;quot;]]&amp;quot;&lt;br /&gt;
						elseif famname ~= &amp;quot;&amp;quot; then&lt;br /&gt;
							out[#out+1] = &amp;quot;[[&amp;quot; .. lp .. sitelink .. &amp;quot;|&amp;quot; .. famname .. &amp;quot;]]&amp;quot;&lt;br /&gt;
						else&lt;br /&gt;
							out[#out+1] = &amp;quot;[[&amp;quot; .. lp .. sitelink .. &amp;quot;]]&amp;quot;&lt;br /&gt;
						end -- of check for sort keys&lt;br /&gt;
					end -- of test for sitelink&lt;br /&gt;
				end -- of test for category&lt;br /&gt;
			end -- of test for wikibase item has a value&lt;br /&gt;
		end -- of test for sourced&lt;br /&gt;
		if maxvals &amp;gt; 0 and #out &amp;gt;= maxvals then break end&lt;br /&gt;
	end -- of loop through values of property1&lt;br /&gt;
	return assembleoutput(out, args, qid1, pid1)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- getIntersectCat takes most of the usual parameters.&lt;br /&gt;
-- The usual whitelisting, blacklisting, onlysourced, etc. are implemented&lt;br /&gt;
-- It takes two properties, |prop1 and |prop2 (e.g. occupation and country of citizenship)&lt;br /&gt;
-- Each property&#039;s value is a wiki-base entity&lt;br /&gt;
-- For each value of the first parameter (ranks implemented) it fetches the value&#039;s main category&lt;br /&gt;
-- and then each value of the second parameter (possibly substituting a simpler description)&lt;br /&gt;
-- then it returns all of the categories representing the intersection of those properties,&lt;br /&gt;
-- (e.g. Category:Actors from Canada). A joining term may be supplied (e.g. |join=from).&lt;br /&gt;
-- The item&#039;s P734 (family name) is the sort key, or no sort key if there is no family name.&lt;br /&gt;
-- The sort key may be overridden by the parameter |sortkey (alias |sk).&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: parseParam; setRanks; parseInput; sourced; propertyvalueandquals assembleoutput;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.getIntersectCat = function(frame)&lt;br /&gt;
	frame.args.reqranks = setRanks(frame.args.rank)&lt;br /&gt;
	frame.args.langobj = findLang(frame.args.lang)&lt;br /&gt;
	frame.args.lang = frame.args.langobj.code&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
	args.sep = &amp;quot; &amp;quot;&lt;br /&gt;
	args.linked = &amp;quot;no&amp;quot;&lt;br /&gt;
	local pid1 = args.prop1 or &amp;quot;P106&amp;quot;&lt;br /&gt;
	local pid2 = args.prop2 or &amp;quot;P27&amp;quot;&lt;br /&gt;
	if pid1 == &amp;quot;&amp;quot; or pid2 == &amp;quot;&amp;quot; then return nil end&lt;br /&gt;
	local qid, statements1 = parseInput(frame, &amp;quot;&amp;quot;, pid1)&lt;br /&gt;
	if not qid then return nil end&lt;br /&gt;
	local qid, statements2 = parseInput(frame, &amp;quot;&amp;quot;, pid2)&lt;br /&gt;
	if not qid then return nil end&lt;br /&gt;
	-- topics like countries may have different names in categories from their label in Wikidata&lt;br /&gt;
	local subs_exists, subs = pcall(mw.loadData, &amp;quot;Module:WikidataIB/subs&amp;quot;)&lt;br /&gt;
	local join = args.join or &amp;quot;&amp;quot;&lt;br /&gt;
	local onlysrc = parseParam(args.onlysourced or args.osd, true)&lt;br /&gt;
	local maxvals = tonumber(args.maxvals) or 0&lt;br /&gt;
	-- linkprefix (strip quotes)&lt;br /&gt;
	local lp = (args.linkprefix or args.lp or &amp;quot;&amp;quot;):gsub(&#039;&amp;quot;&#039;, &#039;&#039;)&lt;br /&gt;
	-- sort key (strip quotes, hyphens and periods):&lt;br /&gt;
	local sk = (args.sortkey or args.sk or &amp;quot;&amp;quot;):gsub(&#039;[&amp;quot;-.]&#039;, &#039;&#039;)&lt;br /&gt;
	-- family name:&lt;br /&gt;
	local famname = &amp;quot;&amp;quot;&lt;br /&gt;
	if sk == &amp;quot;&amp;quot; then&lt;br /&gt;
		local p734 = mw.wikibase.getBestStatements(qid, &amp;quot;P734&amp;quot;)[1]&lt;br /&gt;
		local p734id = p734 and p734.mainsnak.snaktype == &amp;quot;value&amp;quot; and p734.mainsnak.datavalue.value.id or &amp;quot;&amp;quot;&lt;br /&gt;
		famname = mw.wikibase.getSitelink(p734id) or &amp;quot;&amp;quot;&lt;br /&gt;
		-- strip namespace and disambigation&lt;br /&gt;
		local pos = famname:find(&amp;quot;:&amp;quot;) or 0&lt;br /&gt;
		famname = famname:sub(pos+1):gsub(&amp;quot;%s%(.+%)$&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
		if famname == &amp;quot;&amp;quot; then&lt;br /&gt;
			local lbl = mw.wikibase.getLabel(p734id)&lt;br /&gt;
			famname = lbl and mw.text.nowiki(lbl) or &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local cat1 = {}&lt;br /&gt;
	for k, v in ipairs(statements1) do&lt;br /&gt;
		if not onlysrc or sourced(v) then&lt;br /&gt;
			-- get the ID representing the value of the property&lt;br /&gt;
			local pvalID = (v.mainsnak.snaktype == &amp;quot;value&amp;quot;) and v.mainsnak.datavalue.value.id&lt;br /&gt;
			if pvalID then&lt;br /&gt;
				-- get the topic&#039;s main category (P910) for that entity&lt;br /&gt;
				local p910 = mw.wikibase.getBestStatements(pvalID, &amp;quot;P910&amp;quot;)[1]&lt;br /&gt;
				if p910 and p910.mainsnak.snaktype == &amp;quot;value&amp;quot; then&lt;br /&gt;
					local tmcID = p910.mainsnak.datavalue.value.id&lt;br /&gt;
					-- use sitelink or the English label for the cat&lt;br /&gt;
					local cat = mw.wikibase.getSitelink(tmcID)&lt;br /&gt;
					if not cat then&lt;br /&gt;
						local lbl = mw.wikibase.getLabelByLang(tmcID, &amp;quot;en&amp;quot;)&lt;br /&gt;
						if lbl then&lt;br /&gt;
							if lbl:sub(1,9) == &amp;quot;Category:&amp;quot; then&lt;br /&gt;
								cat = mw.text.nowiki(lbl)&lt;br /&gt;
							else&lt;br /&gt;
								cat = &amp;quot;Category:&amp;quot; .. mw.text.nowiki(lbl)&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
					cat1[#cat1+1] = cat&lt;br /&gt;
				end -- of test for topic&#039;s main category exists&lt;br /&gt;
			end -- of test for property has vaild value&lt;br /&gt;
		end -- of test for sourced&lt;br /&gt;
		if maxvals &amp;gt; 0 and #cat1 &amp;gt;= maxvals then break end&lt;br /&gt;
	end&lt;br /&gt;
	local cat2 = {}&lt;br /&gt;
	for k, v in ipairs(statements2) do&lt;br /&gt;
		if not onlysrc or sourced(v) then&lt;br /&gt;
			local cat = rendersnak(v, args)&lt;br /&gt;
			if subs[cat] then cat = subs[cat] end&lt;br /&gt;
			cat2[#cat2+1] = cat&lt;br /&gt;
		end&lt;br /&gt;
		if maxvals &amp;gt; 0 and #cat2 &amp;gt;= maxvals then break end&lt;br /&gt;
	end&lt;br /&gt;
	local out = {}&lt;br /&gt;
	for k1, v1 in ipairs(cat1) do&lt;br /&gt;
		for k2, v2 in ipairs(cat2) do&lt;br /&gt;
			if sk ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				out[#out+1] = &amp;quot;[[&amp;quot; .. lp .. v1 .. &amp;quot; &amp;quot; .. join .. &amp;quot; &amp;quot; .. v2 .. &amp;quot;|&amp;quot; .. sk .. &amp;quot;]]&amp;quot;&lt;br /&gt;
			elseif famname ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				out[#out+1] = &amp;quot;[[&amp;quot; .. lp .. v1 .. &amp;quot; &amp;quot; .. join .. &amp;quot; &amp;quot; .. v2 .. &amp;quot;|&amp;quot; .. famname .. &amp;quot;]]&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				out[#out+1] = &amp;quot;[[&amp;quot; .. lp .. v1 .. &amp;quot; &amp;quot; .. join .. &amp;quot; &amp;quot; .. v2 .. &amp;quot;]]&amp;quot;&lt;br /&gt;
			end -- of check for sort keys&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	args.noicon = &amp;quot;true&amp;quot;&lt;br /&gt;
	return assembleoutput(out, args, qid, pid1)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- qualsToTable takes most of the usual parameters.&lt;br /&gt;
-- The usual whitelisting, blacklisting, onlysourced, etc. are implemented.&lt;br /&gt;
-- A qid may be given, and the first unnamed parameter is the property ID, which is of type wikibase item.&lt;br /&gt;
-- It takes a list of qualifier property IDs as |quals=&lt;br /&gt;
-- For a given qid and property, it creates the rows of an html table,&lt;br /&gt;
-- each row being a value of the property (optionally only if the property matches the value in |pval= )&lt;br /&gt;
-- each cell being the first value of the qualifier corresponding to the list in |quals&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: parseParam; setRanks; parseInput; sourced;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.qualsToTable = function(frame)&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
&lt;br /&gt;
	local quals = args.quals or &amp;quot;&amp;quot;&lt;br /&gt;
	if quals == &amp;quot;&amp;quot; then return &amp;quot;&amp;quot; end&lt;br /&gt;
&lt;br /&gt;
	args.reqranks = setRanks(args.rank)&lt;br /&gt;
&lt;br /&gt;
	local propertyID = mw.text.trim(args[1] or &amp;quot;&amp;quot;)&lt;br /&gt;
	local f = {}&lt;br /&gt;
	f.args = args&lt;br /&gt;
	local entityid, props = parseInput(f, &amp;quot;&amp;quot;, propertyID)&lt;br /&gt;
	if not entityid then return &amp;quot;&amp;quot; end&lt;br /&gt;
&lt;br /&gt;
	args.langobj = findLang(args.lang)&lt;br /&gt;
	args.lang = args.langobj.code&lt;br /&gt;
&lt;br /&gt;
	local pval = args.pval or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	local qplist = mw.text.split(quals, &amp;quot;%p&amp;quot;) -- split at punctuation and make a sequential table&lt;br /&gt;
	for i, v in ipairs(qplist) do&lt;br /&gt;
		qplist[i] = mw.text.trim(v):upper() -- remove whitespace and capitalise&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local col1 = args.firstcol or &amp;quot;&amp;quot;&lt;br /&gt;
	if col1 ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		col1 = col1 .. &amp;quot;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local emptycell = args.emptycell or &amp;quot;&amp;amp;nbsp;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	-- construct a 2-D array of qualifier values in qvals&lt;br /&gt;
	local qvals = {}&lt;br /&gt;
	for i, v in ipairs(props) do&lt;br /&gt;
		local skip = false&lt;br /&gt;
		if pval ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local pid = v.mainsnak.datavalue and v.mainsnak.datavalue.value.id&lt;br /&gt;
			if pid ~= pval then skip = true end&lt;br /&gt;
		end&lt;br /&gt;
		if not skip then&lt;br /&gt;
			local qval = {}&lt;br /&gt;
			local vqualifiers = v.qualifiers or {}&lt;br /&gt;
			-- go through list of wanted qualifier properties&lt;br /&gt;
			for i1, v1 in ipairs(qplist) do&lt;br /&gt;
				-- check for that property ID in the statement&#039;s qualifiers&lt;br /&gt;
				local qv, qtype&lt;br /&gt;
				if vqualifiers[v1] then&lt;br /&gt;
					qtype = vqualifiers[v1][1].datatype&lt;br /&gt;
					if qtype == &amp;quot;time&amp;quot; then&lt;br /&gt;
						if vqualifiers[v1][1].snaktype == &amp;quot;value&amp;quot; then&lt;br /&gt;
							qv = mw.wikibase.renderSnak(vqualifiers[v1][1])&lt;br /&gt;
							qv = frame:expandTemplate{title=&amp;quot;dts&amp;quot;, args={qv}}&lt;br /&gt;
						else&lt;br /&gt;
							qv = &amp;quot;?&amp;quot;&lt;br /&gt;
						end&lt;br /&gt;
					elseif qtype == &amp;quot;url&amp;quot; then&lt;br /&gt;
						if vqualifiers[v1][1].snaktype == &amp;quot;value&amp;quot; then&lt;br /&gt;
							qv = mw.wikibase.renderSnak(vqualifiers[v1][1])&lt;br /&gt;
							local display = mw.ustring.match( mw.uri.decode(qv, &amp;quot;WIKI&amp;quot;), &amp;quot;([%w ]+)$&amp;quot; )&lt;br /&gt;
							if display then&lt;br /&gt;
								qv = &amp;quot;[&amp;quot; .. qv .. &amp;quot; &amp;quot; .. display .. &amp;quot;]&amp;quot;&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
					else&lt;br /&gt;
						qv = mw.wikibase.formatValue(vqualifiers[v1][1])&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
				-- record either the value or a placeholder&lt;br /&gt;
				qval[i1] = qv or emptycell&lt;br /&gt;
			end -- of loop through list of qualifiers&lt;br /&gt;
			-- add the list of qualifier values as a &amp;quot;row&amp;quot; in the main list&lt;br /&gt;
			qvals[#qvals+1] = qval&lt;br /&gt;
		end&lt;br /&gt;
	end -- of for each value loop&lt;br /&gt;
&lt;br /&gt;
	local out = {}&lt;br /&gt;
	for i, v in ipairs(qvals) do&lt;br /&gt;
		out[i] = &amp;quot;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;quot; .. col1 .. table.concat(qvals[i], &amp;quot;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;quot;) .. &amp;quot;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(out, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- getGlobe takes an optional qid of a Wikidata entity passed as |qid=&lt;br /&gt;
-- otherwise it uses the linked item for the current page.&lt;br /&gt;
-- If returns the Qid of the globe used in P625 (coordinate location),&lt;br /&gt;
-- or nil if there isn&#039;t one.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: none&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.getGlobe = function(frame)&lt;br /&gt;
	local qid = frame.args.qid or frame.args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
	if qid == &amp;quot;&amp;quot; then qid = mw.wikibase.getEntityIdForCurrentPage() end&lt;br /&gt;
	local coords = mw.wikibase.getBestStatements(qid, &amp;quot;P625&amp;quot;)[1]&lt;br /&gt;
	local globeid&lt;br /&gt;
	if coords and coords.mainsnak.snaktype == &amp;quot;value&amp;quot; then&lt;br /&gt;
		globeid = coords.mainsnak.datavalue.value.globe:match(&amp;quot;(Q%d+)&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	return globeid&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- getCommonsLink takes an optional qid of a Wikidata entity passed as |qid=&lt;br /&gt;
-- It returns one of the following in order of preference:&lt;br /&gt;
-- the Commons sitelink of the linked Wikidata item;&lt;br /&gt;
-- the Commons sitelink of the topic&#039;s main category of the linked Wikidata item;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: _getCommonslink(); _getSitelink(); parseParam()&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.getCommonsLink = function(frame)&lt;br /&gt;
	local oc = frame.args.onlycat or frame.args.onlycategories&lt;br /&gt;
	local fb = parseParam(frame.args.fallback or frame.args.fb, true)&lt;br /&gt;
	return _getCommonslink(frame.args.qid, oc, fb)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- getSitelink takes the qid of a Wikidata entity passed as |qid=&lt;br /&gt;
-- It takes an optional parameter |wiki= to determine which wiki is to be checked for a sitelink&lt;br /&gt;
-- If the parameter is blank, then it uses the local wiki.&lt;br /&gt;
-- If there is a sitelink to an article available, it returns the plain text link to the article&lt;br /&gt;
-- If there is no sitelink, it returns nil.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: none&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.getSiteLink = function(frame)&lt;br /&gt;
	return _getSitelink(frame.args.qid, frame.args.wiki or mw.text.trim(frame.args[1] or &amp;quot;&amp;quot;))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- getLink has the qid of a Wikidata entity passed as the first unnamed parameter or as |qid=&lt;br /&gt;
-- If there is a sitelink to an article on the local Wiki, it returns a link to the article&lt;br /&gt;
-- with the Wikidata label as the displayed text.&lt;br /&gt;
-- If there is no sitelink, it returns the label as plain text.&lt;br /&gt;
-- If there is no label in the local language, it displays the qid instead.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: none&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.getLink = function(frame)&lt;br /&gt;
	local itemID = mw.text.trim(frame.args[1] or frame.args.qid or &amp;quot;&amp;quot;)&lt;br /&gt;
	if itemID == &amp;quot;&amp;quot; then return end&lt;br /&gt;
	local sitelink = mw.wikibase.getSitelink(itemID)&lt;br /&gt;
	local label = labelOrId(itemID)&lt;br /&gt;
	if sitelink then&lt;br /&gt;
		return &amp;quot;[[:&amp;quot; .. sitelink .. &amp;quot;|&amp;quot; .. label .. &amp;quot;]]&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return label&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- getLabel has the qid of a Wikidata entity passed as the first unnamed parameter or as |qid=&lt;br /&gt;
-- It returns the Wikidata label for the local language as plain text.&lt;br /&gt;
-- If there is no label in the local language, it displays the qid instead.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: none&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.getLabel = function(frame)&lt;br /&gt;
	local itemID = mw.text.trim(frame.args[1] or frame.args.qid or &amp;quot;&amp;quot;)&lt;br /&gt;
	if itemID == &amp;quot;&amp;quot; then return end&lt;br /&gt;
	local lang = frame.args.lang or &amp;quot;&amp;quot;&lt;br /&gt;
	if lang == &amp;quot;&amp;quot; then lang = nil end&lt;br /&gt;
	local label = labelOrId(itemID, lang)&lt;br /&gt;
	return label&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- label has the qid of a Wikidata entity passed as the first unnamed parameter or as |qid=&lt;br /&gt;
-- if no qid is supplied, it uses the qid associated with the current page.&lt;br /&gt;
-- It returns the Wikidata label for the local language as plain text.&lt;br /&gt;
-- If there is no label in the local language, it returns nil.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: none&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.label = function(frame)&lt;br /&gt;
	local qid = mw.text.trim(frame.args[1] or frame.args.qid or &amp;quot;&amp;quot;)&lt;br /&gt;
	if qid == &amp;quot;&amp;quot; then qid = mw.wikibase.getEntityIdForCurrentPage() end&lt;br /&gt;
	if not qid then return end&lt;br /&gt;
	local lang = frame.args.lang or &amp;quot;&amp;quot;&lt;br /&gt;
	if lang == &amp;quot;&amp;quot; then lang = nil end&lt;br /&gt;
	local label, success = labelOrId(qid, lang)&lt;br /&gt;
	if success then return label end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- getAT (Article Title)&lt;br /&gt;
-- has the qid of a Wikidata entity passed as the first unnamed parameter or as |qid=&lt;br /&gt;
-- If there is a sitelink to an article on the local Wiki, it returns the sitelink as plain text.&lt;br /&gt;
-- If there is no sitelink or qid supplied, it returns nothing.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: none&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.getAT = function(frame)&lt;br /&gt;
	local itemID = mw.text.trim(frame.args[1] or frame.args.qid or &amp;quot;&amp;quot;)&lt;br /&gt;
	if itemID == &amp;quot;&amp;quot; then return end&lt;br /&gt;
	return mw.wikibase.getSitelink(itemID)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- getDescription has the qid of a Wikidata entity passed as |qid=&lt;br /&gt;
-- (it defaults to the associated qid of the current article if omitted)&lt;br /&gt;
-- and a local parameter passed as the first unnamed parameter.&lt;br /&gt;
-- Any local parameter passed (other than &amp;quot;Wikidata&amp;quot; or &amp;quot;none&amp;quot;) becomes the return value.&lt;br /&gt;
-- It returns the article description for the Wikidata entity if the local parameter is &amp;quot;Wikidata&amp;quot;.&lt;br /&gt;
-- Nothing is returned if the description doesn&#039;t exist or &amp;quot;none&amp;quot; is passed as the local parameter.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: none&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.getDescription = function(frame)&lt;br /&gt;
	local desc = mw.text.trim(frame.args[1] or &amp;quot;&amp;quot;)&lt;br /&gt;
	local itemID = mw.text.trim(frame.args.qid or &amp;quot;&amp;quot;)&lt;br /&gt;
	if itemID == &amp;quot;&amp;quot; then itemID = nil end&lt;br /&gt;
	if desc:lower() == &#039;wikidata&#039; then&lt;br /&gt;
		return mw.wikibase.getDescription(itemID)&lt;br /&gt;
	elseif desc:lower() == &#039;none&#039; then&lt;br /&gt;
		return nil&lt;br /&gt;
	else&lt;br /&gt;
		return desc&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- getAliases has the qid of a Wikidata entity passed as |qid=&lt;br /&gt;
-- (it defaults to the associated qid of the current article if omitted)&lt;br /&gt;
-- and a local parameter passed as the first unnamed parameter.&lt;br /&gt;
-- It implements blacklisting and whitelisting with a field name of &amp;quot;alias&amp;quot; by default.&lt;br /&gt;
-- Any local parameter passed becomes the return value.&lt;br /&gt;
-- Otherwise it returns the aliases for the Wikidata entity with the usual list options.&lt;br /&gt;
-- Nothing is returned if the aliases do not exist.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: findLang(); assembleoutput()&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.getAliases = function(frame)&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
&lt;br /&gt;
	local fieldname = args.name or &amp;quot;&amp;quot;&lt;br /&gt;
	if fieldname == &amp;quot;&amp;quot; then fieldname = &amp;quot;alias&amp;quot; end&lt;br /&gt;
&lt;br /&gt;
	local blacklist = args.suppressfields or args.spf or &amp;quot;&amp;quot;&lt;br /&gt;
	if blacklist:find(fieldname) then return nil end&lt;br /&gt;
&lt;br /&gt;
	local localval = mw.text.trim(args[1] or &amp;quot;&amp;quot;)&lt;br /&gt;
	if localval ~= &amp;quot;&amp;quot; then return localval end&lt;br /&gt;
&lt;br /&gt;
	local whitelist = args.fetchwikidata or args.fwd or &amp;quot;&amp;quot;&lt;br /&gt;
	if whitelist == &amp;quot;&amp;quot; then whitelist = &amp;quot;NONE&amp;quot; end&lt;br /&gt;
	if not (whitelist == &#039;ALL&#039; or whitelist:find(fieldname)) then return nil end&lt;br /&gt;
&lt;br /&gt;
	local qid = args.qid or &amp;quot;&amp;quot;&lt;br /&gt;
	if qid == &amp;quot;&amp;quot; then qid = mw.wikibase.getEntityIdForCurrentPage() end&lt;br /&gt;
	if not qid or not mw.wikibase.entityExists(qid) then return nil end&lt;br /&gt;
&lt;br /&gt;
	local aliases = mw.wikibase.getEntity(qid).aliases&lt;br /&gt;
	if not aliases then return nil end&lt;br /&gt;
&lt;br /&gt;
	args.langobj = findLang(args.lang)&lt;br /&gt;
	local langcode = args.langobj.code&lt;br /&gt;
	args.lang = langcode&lt;br /&gt;
&lt;br /&gt;
	local out = {}&lt;br /&gt;
	for k1, v1 in pairs(aliases) do&lt;br /&gt;
		if v1[1].language == langcode then&lt;br /&gt;
			for k1, v2 in ipairs(v1) do&lt;br /&gt;
				out[#out+1] = v2.value&lt;br /&gt;
			end&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return assembleoutput(out, args, qid)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- pageId returns the page id (entity ID, Qnnn) of the current page&lt;br /&gt;
-- returns nothing if the page is not connected to Wikidata&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: none&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.pageId = function(frame)&lt;br /&gt;
	return mw.wikibase.getEntityIdForCurrentPage()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- formatDate is a wrapper to export the private function format_Date&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: format_Date();&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.formatDate = function(frame)&lt;br /&gt;
	return format_Date(frame.args[1], frame.args.df, frame.args.bc)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- location is a wrapper to export the private function _location&lt;br /&gt;
-- it takes the entity-id as qid or the first unnamed parameter&lt;br /&gt;
-- optional boolean parameter first toggles the display of the first item&lt;br /&gt;
-- optional boolean parameter skip toggles the display to skip to the last item&lt;br /&gt;
-- parameter debug=&amp;lt;y/n&amp;gt; (default &#039;n&#039;) adds error msg if not a location&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: _location();&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.location = function(frame)&lt;br /&gt;
	local debug = (frame.args.debug or &amp;quot;&amp;quot;):sub(1, 1):lower()&lt;br /&gt;
	if debug == &amp;quot;&amp;quot; then debug = &amp;quot;n&amp;quot; end&lt;br /&gt;
	local qid = mw.text.trim(frame.args.qid or frame.args[1] or &amp;quot;&amp;quot;):upper()&lt;br /&gt;
	if qid == &amp;quot;&amp;quot; then qid=mw.wikibase.getEntityIdForCurrentPage() end&lt;br /&gt;
	if not qid then&lt;br /&gt;
		if debug ~= &amp;quot;n&amp;quot; then&lt;br /&gt;
			return i18n.errors[&amp;quot;entity-not-found&amp;quot;]&lt;br /&gt;
		else&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local first = mw.text.trim(frame.args.first or &amp;quot;&amp;quot;)&lt;br /&gt;
	local skip = mw.text.trim(frame.args.skip or &amp;quot;&amp;quot;)&lt;br /&gt;
	return table.concat( _location(qid, first, skip), &amp;quot;, &amp;quot; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- checkBlacklist implements a test to check whether a named field is allowed&lt;br /&gt;
-- returns true if the field is not blacklisted (i.e. allowed)&lt;br /&gt;
-- returns false if the field is blacklisted (i.e. disallowed)&lt;br /&gt;
-- {{#if:{{#invoke:WikidataIB |checkBlacklist |name=Joe |suppressfields=Dave; Joe; Fred}} | not blacklisted | blacklisted}}&lt;br /&gt;
-- displays &amp;quot;blacklisted&amp;quot;&lt;br /&gt;
-- {{#if:{{#invoke:WikidataIB |checkBlacklist |name=Jim |suppressfields=Dave; Joe; Fred}} | not blacklisted | blacklisted}}&lt;br /&gt;
-- displays &amp;quot;not blacklisted&amp;quot;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: none&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.checkBlacklist = function(frame)&lt;br /&gt;
	local blacklist = frame.args.suppressfields or frame.args.spf or &amp;quot;&amp;quot;&lt;br /&gt;
	local fieldname = frame.args.name or &amp;quot;&amp;quot;&lt;br /&gt;
	if blacklist ~= &amp;quot;&amp;quot; and fieldname ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		if blacklist:find(fieldname) then&lt;br /&gt;
			return false&lt;br /&gt;
		else&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		-- one of the fields is missing: let&#039;s call that &amp;quot;not on the list&amp;quot;&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- emptyor returns nil if its first unnamed argument is just punctuation, whitespace or html tags&lt;br /&gt;
-- otherwise it returns the argument unchanged (including leading/trailing space).&lt;br /&gt;
-- If the argument may contain &amp;quot;=&amp;quot;, then it must be called explicitly:&lt;br /&gt;
-- |1=arg&lt;br /&gt;
-- (In that case, leading and trailing spaces are trimmed)&lt;br /&gt;
-- It finds use in infoboxes where it can replace tests like:&lt;br /&gt;
-- {{#if: {{#invoke:WikidatIB |getvalue |P99 |fwd=ALL}} | &amp;lt;span class=&amp;quot;xxx&amp;quot;&amp;gt;{{#invoke:WikidatIB |getvalue |P99 |fwd=ALL}}&amp;lt;/span&amp;gt; | }}&lt;br /&gt;
-- with a form that uses just a single call to Wikidata:&lt;br /&gt;
-- {{#invoke |WikidataIB |emptyor |1= &amp;lt;span class=&amp;quot;xxx&amp;quot;&amp;gt;{{#invoke:WikidataIB |getvalue |P99 |fwd=ALL}}&amp;lt;/span&amp;gt; }}&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: none&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.emptyor = function(frame)&lt;br /&gt;
	local s = frame.args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
	if s == &amp;quot;&amp;quot; then return nil end&lt;br /&gt;
	local sx = s:gsub(&amp;quot;%s&amp;quot;, &amp;quot;&amp;quot;):gsub(&amp;quot;&amp;lt;[^&amp;gt;]*&amp;gt;&amp;quot;, &amp;quot;&amp;quot;):gsub(&amp;quot;%p&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
	if sx == &amp;quot;&amp;quot; then&lt;br /&gt;
		return nil&lt;br /&gt;
	else&lt;br /&gt;
		return s&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- labelorid is a public function to expose the output of labelOrId()&lt;br /&gt;
-- Pass the Q-number as |qid= or as an unnamed parameter.&lt;br /&gt;
-- It returns the Wikidata label for that entity or the qid if no label exists.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: labelOrId&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.labelorid = function(frame)&lt;br /&gt;
	return (labelOrId(frame.args.qid or frame.args[1]))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- getLang returns the MediaWiki language code of the current content.&lt;br /&gt;
-- If optional parameter |style=full, it returns the language name.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: none&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.getLang = function(frame)&lt;br /&gt;
	local style = (frame.args.style or &amp;quot;&amp;quot;):lower()&lt;br /&gt;
	local langcode = mw.language.getContentLanguage().code&lt;br /&gt;
	if style == &amp;quot;full&amp;quot; then&lt;br /&gt;
		return mw.language.fetchLanguageName( langcode )&lt;br /&gt;
	end&lt;br /&gt;
	return langcode&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- getItemLangCode takes a qid parameter (using the current page&#039;s qid if blank)&lt;br /&gt;
-- If the item for that qid has property country (P17) it looks at the first preferred value&lt;br /&gt;
-- If the country has an official language (P37), it looks at the first preferred value&lt;br /&gt;
-- If that official language has a language code (P424), it returns the first preferred value&lt;br /&gt;
-- Otherwise it returns nothing.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: _getItemLangCode()&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.getItemLangCode = function(frame)&lt;br /&gt;
	return _getItemLangCode(frame.args.qid or frame.args[1])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- findLanguage exports the local findLang() function&lt;br /&gt;
-- It takes an optional language code and returns, in order of preference:&lt;br /&gt;
-- the code if a known language;&lt;br /&gt;
-- the user&#039;s language, if set;&lt;br /&gt;
-- the server&#039;s content language.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: findLang&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.findLanguage = function(frame)&lt;br /&gt;
	return findLang(frame.args.lang or frame.args[1]).code&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- getQid returns the qid, if supplied&lt;br /&gt;
-- failing that, the Wikidata entity ID of the &amp;quot;category&#039;s main topic (P301)&amp;quot;, if it exists&lt;br /&gt;
-- failing that, the Wikidata entity ID associated with the current page, if it exists&lt;br /&gt;
-- otherwise, nothing&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: none&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.getQid = function(frame)&lt;br /&gt;
	local qid = (frame.args.qid or &amp;quot;&amp;quot;):upper()&lt;br /&gt;
	-- check if a qid was passed; if so, return it:&lt;br /&gt;
	if qid ~= &amp;quot;&amp;quot; then return qid end&lt;br /&gt;
	-- check if there&#039;s a &amp;quot;category&#039;s main topic (P301)&amp;quot;:&lt;br /&gt;
	qid = mw.wikibase.getEntityIdForCurrentPage()&lt;br /&gt;
	if qid then&lt;br /&gt;
		local prop301 = mw.wikibase.getBestStatements(qid, &amp;quot;P301&amp;quot;)&lt;br /&gt;
		if prop301[1] then&lt;br /&gt;
			local mctid = prop301[1].mainsnak.datavalue.value.id&lt;br /&gt;
			if mctid then return mctid end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- otherwise return the page qid (if any)&lt;br /&gt;
	return qid&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- followQid takes four optional parameters: qid, props, list and all.&lt;br /&gt;
-- If qid is not given, it uses the qid for the connected page&lt;br /&gt;
-- or returns nil if there isn&#039;t one.&lt;br /&gt;
-- props is a list of properties, separated by punctuation.&lt;br /&gt;
-- If props is given, the Wikidata item for the qid is examined for each property in turn.&lt;br /&gt;
-- If that property contains a value that is another Wikibase-item, that item&#039;s qid is returned,&lt;br /&gt;
-- and the search terminates, unless |all=y when all of the qids are returned, separated by spaces.&lt;br /&gt;
-- If |list= is set to a template, the qids are passed as arguments to the template.&lt;br /&gt;
-- If props is not given, the qid is returned.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: parseParam()&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p._followQid = function(args)&lt;br /&gt;
	local qid = (args.qid or &amp;quot;&amp;quot;):upper()&lt;br /&gt;
	local all = parseParam(args.all, false)&lt;br /&gt;
	local list = args.list or &amp;quot;&amp;quot;&lt;br /&gt;
	if list == &amp;quot;&amp;quot; then list = nil end&lt;br /&gt;
	if qid == &amp;quot;&amp;quot; then&lt;br /&gt;
		qid = mw.wikibase.getEntityIdForCurrentPage()&lt;br /&gt;
	end&lt;br /&gt;
	if not qid then return nil end&lt;br /&gt;
	local out = {}&lt;br /&gt;
	local props = (args.props or &amp;quot;&amp;quot;):upper()&lt;br /&gt;
	if props ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		for p in mw.text.gsplit(props, &amp;quot;%p&amp;quot;) do -- split at punctuation and iterate&lt;br /&gt;
			p = mw.text.trim(p)&lt;br /&gt;
			for i, v in ipairs( mw.wikibase.getBestStatements(qid, p) ) do&lt;br /&gt;
				local linkedid = v.mainsnak.datavalue and v.mainsnak.datavalue.value.id&lt;br /&gt;
				if linkedid then&lt;br /&gt;
					if all then&lt;br /&gt;
						out[#out+1] = linkedid&lt;br /&gt;
					else&lt;br /&gt;
						return linkedid&lt;br /&gt;
					end -- test for all or just the first one found&lt;br /&gt;
				end -- test for value exists for that property&lt;br /&gt;
			end -- loop through values of property to follow&lt;br /&gt;
		end -- loop through list of properties to follow&lt;br /&gt;
	end&lt;br /&gt;
	if #out &amp;gt; 0 then&lt;br /&gt;
		local ret = &amp;quot;&amp;quot;&lt;br /&gt;
		if list then&lt;br /&gt;
			ret = mw.getCurrentFrame():expandTemplate{title = list, args = out}&lt;br /&gt;
		else&lt;br /&gt;
			ret = table.concat(out, &amp;quot; &amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
		return ret&lt;br /&gt;
	else&lt;br /&gt;
		return qid&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.followQid = function(frame)&lt;br /&gt;
	return p._followQid(frame.args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- globalSiteID returns the globalSiteID for the current wiki&lt;br /&gt;
-- e.g. returns &amp;quot;enwiki&amp;quot; for the English Wikipedia, &amp;quot;enwikisource&amp;quot; for English Wikisource, etc.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: none&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.globalSiteID = function(frame)&lt;br /&gt;
	return mw.wikibase.getGlobalSiteId()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- siteID returns the root of the globalSiteID&lt;br /&gt;
-- e.g. &amp;quot;en&amp;quot; for &amp;quot;enwiki&amp;quot;, &amp;quot;enwikisource&amp;quot;, etc.&lt;br /&gt;
-- treats &amp;quot;en-gb&amp;quot; as &amp;quot;en&amp;quot;, etc.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: none&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.siteID = function(frame)&lt;br /&gt;
	local txtlang = frame:callParserFunction(&#039;int&#039;, {&#039;lang&#039;}) or &amp;quot;&amp;quot;&lt;br /&gt;
	-- This deals with specific exceptions: be-tarask -&amp;gt; be-x-old&lt;br /&gt;
	if txtlang == &amp;quot;be-tarask&amp;quot; then&lt;br /&gt;
		return &amp;quot;be_x_old&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	local pos = txtlang:find(&amp;quot;-&amp;quot;)&lt;br /&gt;
	local ret = &amp;quot;&amp;quot;&lt;br /&gt;
	if pos then&lt;br /&gt;
		ret = txtlang:sub(1, pos-1)&lt;br /&gt;
	else&lt;br /&gt;
		ret = txtlang&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- projID returns the code used to link to the reader&#039;s language&#039;s project&lt;br /&gt;
-- e.g &amp;quot;en&amp;quot; for [[:en:WikidataIB]]&lt;br /&gt;
-- treats &amp;quot;en-gb&amp;quot; as &amp;quot;en&amp;quot;, etc.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: none&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.projID = function(frame)&lt;br /&gt;
	local txtlang = frame:callParserFunction(&#039;int&#039;, {&#039;lang&#039;}) or &amp;quot;&amp;quot;&lt;br /&gt;
	-- This deals with specific exceptions: be-tarask -&amp;gt; be-x-old&lt;br /&gt;
	if txtlang == &amp;quot;be-tarask&amp;quot; then&lt;br /&gt;
		return &amp;quot;be-x-old&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	local pos = txtlang:find(&amp;quot;-&amp;quot;)&lt;br /&gt;
	local ret = &amp;quot;&amp;quot;&lt;br /&gt;
	if pos then&lt;br /&gt;
		ret = txtlang:sub(1, pos-1)&lt;br /&gt;
	else&lt;br /&gt;
		ret = txtlang&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- formatNumber formats a number according to the the supplied language code (&amp;quot;|lang=&amp;quot;)&lt;br /&gt;
-- or the default language if not supplied.&lt;br /&gt;
-- The number is the first unnamed parameter or &amp;quot;|num=&amp;quot;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: findLang()&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.formatNumber = function(frame)&lt;br /&gt;
	local lang&lt;br /&gt;
	local num = tonumber(frame.args[1] or frame.args.num) or 0&lt;br /&gt;
	lang = findLang(frame.args.lang)&lt;br /&gt;
	return lang:formatNum( num )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- examine dumps the property (the unnamed parameter or pid)&lt;br /&gt;
-- from the item given by the parameter &#039;qid&#039; (or the other unnamed parameter)&lt;br /&gt;
-- or from the item corresponding to the current page if qid is not supplied.&lt;br /&gt;
-- e.g. {{#invoke:WikidataIB |examine |pid=P26 |qid=Q42}}&lt;br /&gt;
-- or {{#invoke:WikidataIB |examine |P26 |Q42}} or any combination of these&lt;br /&gt;
-- or {{#invoke:WikidataIB |examine |P26}} for the current page.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: none&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.examine = function( frame )&lt;br /&gt;
	local args&lt;br /&gt;
	if frame.args[1] or frame.args.pid or frame.args.qid then&lt;br /&gt;
		args = frame.args&lt;br /&gt;
	else&lt;br /&gt;
		args = frame:getParent().args&lt;br /&gt;
	end&lt;br /&gt;
	local par = {}&lt;br /&gt;
	local pid = (args.pid or &amp;quot;&amp;quot;):upper()&lt;br /&gt;
	local qid = (args.qid or &amp;quot;&amp;quot;):upper()&lt;br /&gt;
	par[1] = mw.text.trim( args[1] or &amp;quot;&amp;quot; ):upper()&lt;br /&gt;
	par[2] = mw.text.trim( args[2] or &amp;quot;&amp;quot; ):upper()&lt;br /&gt;
	table.sort(par)&lt;br /&gt;
	if par[2]:sub(1,1) == &amp;quot;P&amp;quot; then par[1], par[2] = par[2], par[1] end&lt;br /&gt;
	if pid == &amp;quot;&amp;quot; then pid = par[1] end&lt;br /&gt;
	if qid == &amp;quot;&amp;quot; then qid = par[2] end&lt;br /&gt;
	local q1 = qid:sub(1,1)&lt;br /&gt;
	if pid:sub(1,1) ~= &amp;quot;P&amp;quot; then return &amp;quot;No property supplied&amp;quot; end&lt;br /&gt;
	if q1 ~= &amp;quot;Q&amp;quot; and q1 ~= &amp;quot;M&amp;quot; then qid = mw.wikibase.getEntityIdForCurrentPage() end&lt;br /&gt;
	if not qid then return &amp;quot;No item for this page&amp;quot; end&lt;br /&gt;
	return &amp;quot;&amp;lt;pre&amp;gt;&amp;quot; .. mw.dumpObject( mw.wikibase.getAllStatements( qid, pid ) ) .. &amp;quot;&amp;lt;/pre&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- checkvalue looks for &#039;val&#039; as a wikibase-item value of a property (the unnamed parameter or pid)&lt;br /&gt;
-- from the item given by the parameter &#039;qid&#039;&lt;br /&gt;
-- or from the Wikidata item associated with the current page if qid is not supplied.&lt;br /&gt;
-- It only checks ranks that are requested (preferred and normal by default)&lt;br /&gt;
-- If property is not supplied, then P31 (instance of) is assumed.&lt;br /&gt;
-- It returns val if found or nothing if not found.&lt;br /&gt;
-- e.g. {{#invoke:WikidataIB |checkvalue |val=Q5 |pid=P31 |qid=Q42}}&lt;br /&gt;
-- or {{#invoke:WikidataIB |checkvalue |val=Q5 |P31 |qid=Q42}}&lt;br /&gt;
-- or {{#invoke:WikidataIB |checkvalue |val=Q5 |qid=Q42}}&lt;br /&gt;
-- or {{#invoke:WikidataIB |checkvalue |val=Q5 |P31}} for the current page.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: none&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.checkvalue = function( frame )&lt;br /&gt;
	local args&lt;br /&gt;
	if frame.args.val then&lt;br /&gt;
		args = frame.args&lt;br /&gt;
	else&lt;br /&gt;
		args = frame:getParent().args&lt;br /&gt;
	end&lt;br /&gt;
	local val = args.val&lt;br /&gt;
	if not val then return nil end&lt;br /&gt;
	local pid = mw.text.trim(args.pid or args[1] or &amp;quot;P31&amp;quot;):upper()&lt;br /&gt;
	local qid = (args.qid or &amp;quot;&amp;quot;):upper()&lt;br /&gt;
	if pid:sub(1,1) ~= &amp;quot;P&amp;quot; then return nil end&lt;br /&gt;
	if qid:sub(1,1) ~= &amp;quot;Q&amp;quot; then qid = mw.wikibase.getEntityIdForCurrentPage() end&lt;br /&gt;
	if not qid then return nil end&lt;br /&gt;
	local ranks = setRanks(args.rank)&lt;br /&gt;
	local stats = {}&lt;br /&gt;
	if ranks.b then&lt;br /&gt;
		stats = mw.wikibase.getBestStatements(qid, pid)&lt;br /&gt;
	else&lt;br /&gt;
		stats = mw.wikibase.getAllStatements( qid, pid )&lt;br /&gt;
	end&lt;br /&gt;
	if not stats[1] then return nil end&lt;br /&gt;
	if stats[1].mainsnak.datatype == &amp;quot;wikibase-item&amp;quot; then&lt;br /&gt;
		for k, v in pairs( stats ) do&lt;br /&gt;
			local ms = v.mainsnak&lt;br /&gt;
			if ranks[v.rank:sub(1,1)] and ms.snaktype == &amp;quot;value&amp;quot; and ms.datavalue.value.id == val then&lt;br /&gt;
				return val&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- url2 takes a parameter url= that is a proper url and formats it for use in an infobox.&lt;br /&gt;
-- If no parameter is supplied, it returns nothing.&lt;br /&gt;
-- This is the equivalent of Template:URL&lt;br /&gt;
-- but it keeps the &amp;quot;edit at Wikidata&amp;quot; pen icon out of the microformat.&lt;br /&gt;
-- Usually it will take its url parameter directly from a Wikidata call:&lt;br /&gt;
-- e.g. {{#invoke:WikidataIB |url2 |url={{wdib |P856 |qid=Q23317 |fwd=ALL |osd=no}} }}&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: none&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.url2 = function(frame)&lt;br /&gt;
	local txt = frame.args.url or &amp;quot;&amp;quot;&lt;br /&gt;
	if txt == &amp;quot;&amp;quot; then return nil end&lt;br /&gt;
	-- extract any icon&lt;br /&gt;
	local url, icon = txt:match(&amp;quot;(.+)&amp;amp;nbsp;(.+)&amp;quot;)&lt;br /&gt;
	-- make sure there&#039;s at least a space at the end&lt;br /&gt;
	url = (url or txt) .. &amp;quot; &amp;quot;&lt;br /&gt;
	icon = icon or &amp;quot;&amp;quot;&lt;br /&gt;
	-- extract any protocol like https://&lt;br /&gt;
	local prot = url:match(&amp;quot;(https*://).+[ \&amp;quot;\&#039;]&amp;quot;)&lt;br /&gt;
	-- extract address&lt;br /&gt;
	local addr = &amp;quot;&amp;quot;&lt;br /&gt;
	if prot then&lt;br /&gt;
		addr = url:match(&amp;quot;https*://(.+)[ \&amp;quot;\&#039;]&amp;quot;) or &amp;quot; &amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		prot = &amp;quot;//&amp;quot;&lt;br /&gt;
		addr = url:match(&amp;quot;[^%p%s]+%.(.+)[ \&amp;quot;\&#039;]&amp;quot;) or &amp;quot; &amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	-- strip trailing / from end of domain-only url and add &amp;lt;wbr/&amp;gt; before . and /&lt;br /&gt;
	local disp, n = addr:gsub( &amp;quot;^([^/]+)/$&amp;quot;, &amp;quot;%1&amp;quot; ):gsub(&amp;quot;%/&amp;quot;, &amp;quot;&amp;lt;wbr/&amp;gt;/&amp;quot;):gsub(&amp;quot;%.&amp;quot;, &amp;quot;&amp;lt;wbr/&amp;gt;.&amp;quot;)&lt;br /&gt;
	return &#039;&amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;[&#039; .. prot .. addr .. &amp;quot; &amp;quot; .. disp .. &amp;quot;]&amp;lt;/span&amp;gt;&amp;amp;nbsp;&amp;quot; .. icon&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- getWebsite fetches the Official website (P856) and formats it for use in an infobox.&lt;br /&gt;
-- This is similar to Template:Official website but with a url displayed,&lt;br /&gt;
-- and it adds the &amp;quot;edit at Wikidata&amp;quot; pen icon beyond the microformat if enabled.&lt;br /&gt;
-- A local value will override the Wikidata value. &amp;quot;NONE&amp;quot; returns nothing.&lt;br /&gt;
-- e.g. {{#invoke:WikidataIB |getWebsite |qid= |noicon= |lang= |url= }}&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: findLang(); parseParam();&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.getWebsite = function(frame)&lt;br /&gt;
	local url = frame.args.url or &amp;quot;&amp;quot;&lt;br /&gt;
	if url:upper() == &amp;quot;NONE&amp;quot; then return nil end&lt;br /&gt;
	local urls = {}&lt;br /&gt;
	local quals = {}&lt;br /&gt;
	local qid = frame.args.qid or &amp;quot;&amp;quot;&lt;br /&gt;
	if url and url ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		urls[1] = url&lt;br /&gt;
	else&lt;br /&gt;
		if qid == &amp;quot;&amp;quot; then qid = mw.wikibase.getEntityIdForCurrentPage() end&lt;br /&gt;
		if not qid then return nil end&lt;br /&gt;
&lt;br /&gt;
		local prop856 = mw.wikibase.getBestStatements(qid, &amp;quot;P856&amp;quot;)&lt;br /&gt;
		for k, v in pairs(prop856) do&lt;br /&gt;
			if v.mainsnak.snaktype == &amp;quot;value&amp;quot; then&lt;br /&gt;
				urls[#urls+1] = v.mainsnak.datavalue.value&lt;br /&gt;
				if v.qualifiers and v.qualifiers[&amp;quot;P1065&amp;quot;] then&lt;br /&gt;
					 -- just take the first archive url (P1065)&lt;br /&gt;
					local au = v.qualifiers[&amp;quot;P1065&amp;quot;][1]&lt;br /&gt;
					if au.snaktype == &amp;quot;value&amp;quot; then&lt;br /&gt;
						quals[#urls] = au.datavalue.value&lt;br /&gt;
					end -- test for archive url having a value&lt;br /&gt;
				end -- test for qualifers&lt;br /&gt;
			end -- test for website having a value&lt;br /&gt;
		end -- loop through website(s)&lt;br /&gt;
	end&lt;br /&gt;
	if #urls == 0 then return nil end&lt;br /&gt;
&lt;br /&gt;
	local out = {}&lt;br /&gt;
	for i, u in ipairs(urls) do&lt;br /&gt;
		local link = quals[i] or u&lt;br /&gt;
		local prot, addr = u:match(&amp;quot;(http[s]*://)(.+)&amp;quot;)&lt;br /&gt;
		addr = addr or u&lt;br /&gt;
		local disp, n = addr:gsub(&amp;quot;%.&amp;quot;, &amp;quot;&amp;lt;wbr/&amp;gt;%.&amp;quot;)&lt;br /&gt;
		out[#out+1] = &#039;&amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;[&#039; .. link .. &amp;quot; &amp;quot; .. disp .. &amp;quot;]&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local langcode = findLang(frame.args.lang).code&lt;br /&gt;
	local noicon = parseParam(frame.args.noicon, false)&lt;br /&gt;
	if url == &amp;quot;&amp;quot; and not noicon then&lt;br /&gt;
		out[#out] = out[#out] .. createicon(langcode, qid, &amp;quot;P856&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local ret = &amp;quot;&amp;quot;&lt;br /&gt;
	if #out &amp;gt; 1 then&lt;br /&gt;
		ret = mw.getCurrentFrame():expandTemplate{title = &amp;quot;ubl&amp;quot;, args = out}&lt;br /&gt;
	else&lt;br /&gt;
		ret = out[1]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- getAllLabels fetches the set of labels and formats it for display as wikitext.&lt;br /&gt;
-- It takes a parameter &#039;qid&#039; for arbitrary access, otherwise it uses the current page.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: none&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.getAllLabels = function(frame)&lt;br /&gt;
	local args = frame.args or frame:getParent().args or {}&lt;br /&gt;
&lt;br /&gt;
	local qid = args.qid or &amp;quot;&amp;quot;&lt;br /&gt;
	if qid == &amp;quot;&amp;quot; then qid = mw.wikibase.getEntityIdForCurrentPage() end&lt;br /&gt;
	if not qid or not mw.wikibase.entityExists(qid) then return i18n[&amp;quot;entity-not-found&amp;quot;] end&lt;br /&gt;
&lt;br /&gt;
	local labels = mw.wikibase.getEntity(qid).labels&lt;br /&gt;
	if not labels then return i18n[&amp;quot;labels-not-found&amp;quot;] end&lt;br /&gt;
&lt;br /&gt;
	local out = {}&lt;br /&gt;
	for k, v in pairs(labels) do&lt;br /&gt;
		out[#out+1] = v.value .. &amp;quot; (&amp;quot; .. v.language .. &amp;quot;)&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table.concat(out, &amp;quot;; &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- getAllDescriptions fetches the set of descriptions and formats it for display as wikitext.&lt;br /&gt;
-- It takes a parameter &#039;qid&#039; for arbitrary access, otherwise it uses the current page.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: none&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.getAllDescriptions = function(frame)&lt;br /&gt;
	local args = frame.args or frame:getParent().args or {}&lt;br /&gt;
&lt;br /&gt;
	local qid = args.qid or &amp;quot;&amp;quot;&lt;br /&gt;
	if qid == &amp;quot;&amp;quot; then qid = mw.wikibase.getEntityIdForCurrentPage() end&lt;br /&gt;
	if not qid or not mw.wikibase.entityExists(qid) then return i18n[&amp;quot;entity-not-found&amp;quot;] end&lt;br /&gt;
&lt;br /&gt;
	local descriptions = mw.wikibase.getEntity(qid).descriptions&lt;br /&gt;
	if not descriptions then return i18n[&amp;quot;descriptions-not-found&amp;quot;] end&lt;br /&gt;
&lt;br /&gt;
	local out = {}&lt;br /&gt;
	for k, v in pairs(descriptions) do&lt;br /&gt;
		out[#out+1] = v.value .. &amp;quot; (&amp;quot; .. v.language .. &amp;quot;)&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table.concat(out, &amp;quot;; &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- getAllAliases fetches the set of aliases and formats it for display as wikitext.&lt;br /&gt;
-- It takes a parameter &#039;qid&#039; for arbitrary access, otherwise it uses the current page.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: none&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.getAllAliases = function(frame)&lt;br /&gt;
	local args = frame.args or frame:getParent().args or {}&lt;br /&gt;
&lt;br /&gt;
	local qid = args.qid or &amp;quot;&amp;quot;&lt;br /&gt;
	if qid == &amp;quot;&amp;quot; then qid = mw.wikibase.getEntityIdForCurrentPage() end&lt;br /&gt;
	if not qid or not mw.wikibase.entityExists(qid) then return i18n[&amp;quot;entity-not-found&amp;quot;] end&lt;br /&gt;
&lt;br /&gt;
	local aliases = mw.wikibase.getEntity(qid).aliases&lt;br /&gt;
	if not aliases then return i18n[&amp;quot;aliases-not-found&amp;quot;] end&lt;br /&gt;
&lt;br /&gt;
	local out = {}&lt;br /&gt;
	for k1, v1 in pairs(aliases) do&lt;br /&gt;
		local lang = v1[1].language&lt;br /&gt;
		local val = {}&lt;br /&gt;
		for k1, v2 in ipairs(v1) do&lt;br /&gt;
			val[#val+1] = v2.value&lt;br /&gt;
		end&lt;br /&gt;
		out[#out+1] = table.concat(val, &amp;quot;, &amp;quot;) .. &amp;quot; (&amp;quot; .. lang .. &amp;quot;)&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table.concat(out, &amp;quot;; &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- showNoLinks displays the article titles that should not be linked.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: none&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.showNoLinks = function(frame)&lt;br /&gt;
	local out = {}&lt;br /&gt;
	for k, v in pairs(donotlink) do&lt;br /&gt;
		out[#out+1] = k&lt;br /&gt;
	end&lt;br /&gt;
	table.sort( out )&lt;br /&gt;
	return table.concat(out, &amp;quot;; &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- checkValidity checks whether the first unnamed parameter represents a valid entity-id,&lt;br /&gt;
-- that is, something like Q1235 or P123.&lt;br /&gt;
-- It returns the strings &amp;quot;true&amp;quot; or &amp;quot;false&amp;quot;.&lt;br /&gt;
-- Change false to nil to return &amp;quot;true&amp;quot; or &amp;quot;&amp;quot; (easier to test with #if:).&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: none&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
function p.checkValidity(frame)&lt;br /&gt;
	local id = mw.text.trim(frame.args[1] or &amp;quot;&amp;quot;)&lt;br /&gt;
	if mw.wikibase.isValidEntityId(id) then&lt;br /&gt;
		return true&lt;br /&gt;
	else&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- getEntityFromTitle returns the Entity-ID (Q-number) for a given title.&lt;br /&gt;
-- Modification of Module:ResolveEntityId&lt;br /&gt;
-- The title is the first unnamed parameter.&lt;br /&gt;
-- The site parameter determines the site/language for the title. Defaults to current wiki.&lt;br /&gt;
-- The showdab parameter determines whether dab pages should return the Q-number or nil. Defaults to true.&lt;br /&gt;
-- Returns the Q-number or nil if it does not exist.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: parseParam&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
function p.getEntityFromTitle(frame)&lt;br /&gt;
	local args=frame.args&lt;br /&gt;
	if not args[1] then args=frame:getParent().args end&lt;br /&gt;
	if not args[1] then return nil end&lt;br /&gt;
	local title = mw.text.trim(args[1])&lt;br /&gt;
	local site = args.site or &amp;quot;&amp;quot;&lt;br /&gt;
	local showdab = parseParam(args.showdab, true)&lt;br /&gt;
	local qid = mw.wikibase.getEntityIdForTitle(title, site)&lt;br /&gt;
	if qid then&lt;br /&gt;
		local prop31 = mw.wikibase.getBestStatements(qid, &amp;quot;P31&amp;quot;)[1]&lt;br /&gt;
		if not showdab and prop31 and prop31.mainsnak.datavalue.value.id == &amp;quot;Q4167410&amp;quot; then&lt;br /&gt;
			return nil&lt;br /&gt;
		else&lt;br /&gt;
			return qid&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- getDatePrecision returns the number representing the precision of the first best date value&lt;br /&gt;
-- for the given property.&lt;br /&gt;
-- It takes the qid and property ID&lt;br /&gt;
-- The meanings are given at https://www.mediawiki.org/wiki/Wikibase/DataModel#Dates_and_times&lt;br /&gt;
-- 0 = 1 billion years .. 6 = millennium, 7 = century, 8 = decade, 9 = year, 10 = month, 11 = day&lt;br /&gt;
-- Returns 0 (or the second unnamed parameter) if the Wikidata does not exist.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: parseParam; sourced;&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
function p.getDatePrecision(frame)&lt;br /&gt;
	local args=frame.args&lt;br /&gt;
	if not args[1] then args=frame:getParent().args end&lt;br /&gt;
	local default = tonumber(args[2] or args.default) or 0&lt;br /&gt;
	local prop = mw.text.trim(args[1] or &amp;quot;&amp;quot;)&lt;br /&gt;
	if prop == &amp;quot;&amp;quot; then return default end&lt;br /&gt;
	local qid = args.qid or &amp;quot;&amp;quot;&lt;br /&gt;
	if qid == &amp;quot;&amp;quot; then qid = mw.wikibase.getEntityIdForCurrentPage() end&lt;br /&gt;
	if not qid then return default end&lt;br /&gt;
	local onlysrc = parseParam(args.onlysourced or args.osd, true)&lt;br /&gt;
	local stat = mw.wikibase.getBestStatements(qid, prop)&lt;br /&gt;
	for i, v in ipairs(stat) do&lt;br /&gt;
		local prec = (onlysrc == false or sourced(v))&lt;br /&gt;
			and v.mainsnak.datavalue&lt;br /&gt;
			and v.mainsnak.datavalue.value&lt;br /&gt;
			and v.mainsnak.datavalue.value.precision&lt;br /&gt;
		if prec then return prec end&lt;br /&gt;
	end&lt;br /&gt;
	return default&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
return p&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- List of exported functions&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
--[[&lt;br /&gt;
_getValue&lt;br /&gt;
getValue&lt;br /&gt;
getPreferredValue&lt;br /&gt;
getCoords&lt;br /&gt;
getQualifierValue&lt;br /&gt;
getSumOfParts&lt;br /&gt;
getValueByQual&lt;br /&gt;
getValueByLang&lt;br /&gt;
getValueByRefSource&lt;br /&gt;
getPropertyIDs&lt;br /&gt;
getQualifierIDs&lt;br /&gt;
getPropOfProp&lt;br /&gt;
getAwardCat&lt;br /&gt;
getIntersectCat&lt;br /&gt;
getGlobe&lt;br /&gt;
getCommonsLink&lt;br /&gt;
getSiteLink&lt;br /&gt;
getLink&lt;br /&gt;
getLabel&lt;br /&gt;
label&lt;br /&gt;
getAT&lt;br /&gt;
getDescription&lt;br /&gt;
getAliases&lt;br /&gt;
pageId&lt;br /&gt;
formatDate&lt;br /&gt;
location&lt;br /&gt;
checkBlacklist&lt;br /&gt;
emptyor&lt;br /&gt;
labelorid&lt;br /&gt;
getLang&lt;br /&gt;
getItemLangCode&lt;br /&gt;
findLanguage&lt;br /&gt;
getQID&lt;br /&gt;
followQid&lt;br /&gt;
globalSiteID&lt;br /&gt;
siteID&lt;br /&gt;
projID&lt;br /&gt;
formatNumber&lt;br /&gt;
examine&lt;br /&gt;
checkvalue&lt;br /&gt;
url2&lt;br /&gt;
getWebsite&lt;br /&gt;
getAllLabels&lt;br /&gt;
getAllDescriptions&lt;br /&gt;
getAllAliases&lt;br /&gt;
showNoLinks&lt;br /&gt;
checkValidity&lt;br /&gt;
getEntityFromTitle&lt;br /&gt;
getDatePrecision&lt;br /&gt;
--]]&lt;br /&gt;
-------------------------------------------------------------------------------&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Template:Plainlist&amp;diff=3534</id>
		<title>Template:Plainlist</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Template:Plainlist&amp;diff=3534"/>
		<updated>2026-01-10T08:42:15Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;templatestyles src=&amp;quot;Plainlist/styles.css&amp;quot;/&amp;gt;&amp;lt;div class=&amp;quot;plainlist {{{class|}}}&amp;quot; {{safesubst&amp;lt;noinclude /&amp;gt;:#if:{{{style|}}}{{{indent|}}}|style=&amp;quot;{{safesubst&amp;lt;noinclude /&amp;gt;:#if:{{{indent|}}}|margin-left: {{safesubst&amp;lt;noinclude /&amp;gt;:#expr:{{{indent}}}*1.6}}em;}} {{{style|}}}&amp;quot;}}&amp;gt;{{safesubst&amp;lt;noinclude /&amp;gt;:#if:{{{1|}}}|&lt;br /&gt;
{{{1}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using plainlist with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Plainlist]] with unknown parameter &amp;quot;_VALUE_&amp;quot;|ignoreblank=y| class | style | indent | 1 }}&amp;lt;noinclude&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Template:Infobox_writing_system&amp;diff=3532</id>
		<title>Template:Infobox writing system</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Template:Infobox_writing_system&amp;diff=3532"/>
		<updated>2026-01-10T08:42:15Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{Infobox&lt;br /&gt;
| autoheaders = y&lt;br /&gt;
| bodystyle = {{{bodystyle|}}}&lt;br /&gt;
| headerstyle = background:#ddd; color:inherit;&lt;br /&gt;
| labelstyle = padding-right:0.6em;&amp;lt;!-- ensures at least 0.6em between a label&#039;s end and its data --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Main heading (`|above=`) --&amp;gt;&lt;br /&gt;
| abovestyle =&lt;br /&gt;
       padding:0.25em;&lt;br /&gt;
    background:{{#switch:{{lc:{{{type|}}}}}&lt;br /&gt;
                |abjad|[[abjad]]|impure abjad|impure [[abjad]]|consonantary|[[consonantary]]=palegreen&lt;br /&gt;
                |alphabet|[[alphabet]]=lightblue   |abugida|[[abugida]]=navajowhite&lt;br /&gt;
                |syllabary|[[syllabary]]=pink      |semisyllabary|[[semisyllabary]]|semi-syllabary|[[semi-syllabary]]=violet&lt;br /&gt;
                |manual|[[manual alphabets|manual]]|[[manual]]=paleturquoise   |pictographic|[[pictographic]]=palegoldenrod&lt;br /&gt;
                |ideographic|[[ideographic]]=gold  |logographic|[[logographic]]|[[logosyllabic]]=mistyrose&lt;br /&gt;
                |stenography|[[stenography]] |shorthand|[[shorthand]] =&lt;br /&gt;
                  {{#switch:{{lc:{{{SHtype|}}}}}&lt;br /&gt;
                   |abjad|[[abjad]]|impure abjad|impure [[abjad]]|consonantal|[[consonantal]]=palegreen&lt;br /&gt;
                   |alphabetic|[[alphabetic]]=lightblue   |abugida|[[abugida]]=navajowhite&lt;br /&gt;
                   |syllabic|[[syllabic]]=pink            |semisyllabic|[[semisyllabic]]|semi-syllabary|[[semi-syllabary]]=violet&lt;br /&gt;
                   |undeciphered|[[undeciphered writing systems|undeciphered]]=gainsboro&lt;br /&gt;
                   |alternative|[[list of writing systems#alternative alphabets|alternative]]=khaki&lt;br /&gt;
                   |#default=turquoise&lt;br /&gt;
                  }}&lt;br /&gt;
                |undeciphered|[[undeciphered writing systems|undeciphered]]=gainsboro&lt;br /&gt;
                |alternative|[[list of writing systems#alternative alphabets|alternative]]=khaki&lt;br /&gt;
                |tactile|[[tactile alphabet|tactile]]=white;font-variant:small-caps&lt;br /&gt;
                |#default=white&lt;br /&gt;
               }}; color:inherit;&lt;br /&gt;
&lt;br /&gt;
| above = {{{name|{{PAGENAMEBASE}}}}}&amp;lt;br /&amp;gt;&amp;lt;div style=&amp;quot;font-weight:normal&amp;quot;&amp;gt;{{{altname|{{{native_name|}}}}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- IMAGE --&amp;gt;&lt;br /&gt;
| imagestyle = padding-top:0.4em;padding-bottom:0.4em;{{{imagestyle|}}}&lt;br /&gt;
| image     = {{#invoke:InfoboxImage|InfoboxImage|image={{{sample|}}}|size={{{image size|{{{image_size|{{{imagesize|}}}}}}}}}|alt={{{alt|}}}|class={{{imageclass|skin-invert-image}}}}} &lt;br /&gt;
| captionstyle = border-bottom:1px solid #aaa;&amp;lt;!-- to ensure caption and first line of info kept distinct --&amp;gt;{{{captionstyle|}}}&lt;br /&gt;
| caption = {{{caption|}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TOP --&amp;gt;&lt;br /&gt;
| label3 = Script type&lt;br /&gt;
|  data3 = {{{typedesc-prefix|}}} {{#if:{{{SHline|}}}{{{SHform|}}}{{{SHtype|}}}{{{mode|}}}{{{type|}}}&lt;br /&gt;
           | {{longitem|style=line-height:1.25em&lt;br /&gt;
              | {{#if:{{{SHline|}}}|{{{SHline|}}}-line|}} {{{SHform|}}} {{{SHtype|}}} {{{mode|}}} {{{type|}}}&lt;br /&gt;
          }} }} {{{typedesc|}}}&lt;br /&gt;
&lt;br /&gt;
| label5 = Creator&lt;br /&gt;
|  data5 = {{{creator|}}}&lt;br /&gt;
&lt;br /&gt;
| label7 = Created&lt;br /&gt;
|  data7 = {{#if:{{{date|}}} |{{{date}}} }}&lt;br /&gt;
&lt;br /&gt;
| label9 = Published&lt;br /&gt;
|  data9 = {{#if:{{{SHdates|}}}{{{published|}}}&lt;br /&gt;
           | {{longitem|style=line-height:1.25em&lt;br /&gt;
              |   {{#if:{{{SHdates|}}} |{{{SHdates}}}}} {{#if:{{{published|}}} |{{{published}}}}}&lt;br /&gt;
          }} }}&lt;br /&gt;
&lt;br /&gt;
| label11 = {{longitem|Period}}&lt;br /&gt;
|  data11 = {{{time|}}}&lt;br /&gt;
&lt;br /&gt;
| label13 = Status&lt;br /&gt;
|  data13 = {{{status|}}}&lt;br /&gt;
&lt;br /&gt;
| label15 = Direction&lt;br /&gt;
|  data15 = {{#invoke:String2 | ucfirst | {{#invoke:WikidataIB|getValue |P1406 |{{{direction|}}} |qid={{{qid|}}} |onlysourced=no |fwd=ALL}} }} {{{direction comment|}}}&lt;br /&gt;
&lt;br /&gt;
| label17 = Official script&lt;br /&gt;
|  data17 = {{{official script|}}}&lt;br /&gt;
| label18 = Region&lt;br /&gt;
|  data18 = {{{region|}}}&lt;br /&gt;
&lt;br /&gt;
| label19 = {{longitem|Print basis}}&lt;br /&gt;
|  data19 = {{{print|}}}&lt;br /&gt;
&lt;br /&gt;
| label21 = {{engvar|defaultWord=Romanized |defaultLang=en-US |en-US=Romanized |us=Romanized | gb=Romanised |engvar={{{engvar|}}} }} from&lt;br /&gt;
|  data21 = {{{romanised-from|{{{romanized-from|}}}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- LANGUAGES --&amp;gt;&lt;br /&gt;
| label25 = Language&lt;br /&gt;
|  data25 = {{{language|}}}&lt;br /&gt;
&lt;br /&gt;
| label26 = Languages&lt;br /&gt;
|  data26 = {{{languages|}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- RELATED SCRIPTS --&amp;gt;&lt;br /&gt;
| header30= Related scripts&lt;br /&gt;
&lt;br /&gt;
| label33 = {{#if:{{{fam1|{{{family|}}}}}} |{{longitem|Parent systems}}}}&lt;br /&gt;
|  data33 = {{#if:{{{fam1|{{{family|}}}}}}&lt;br /&gt;
           | &amp;lt;div style=&amp;quot;padding-top:0.15em;&amp;quot;&amp;gt;{{{fam1|{{{family}}}}}}&amp;lt;!--&lt;br /&gt;
 --&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;{{#if:{{{fam2|}}}|{{{fam2}}}&amp;lt;!--&lt;br /&gt;
 --&amp;gt;&amp;lt;ul style=&amp;quot;margin-left:0.8em;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;{{#if:{{{fam3|}}}|{{{fam3}}}&amp;lt;!--&lt;br /&gt;
 --&amp;gt;&amp;lt;ul style=&amp;quot;margin-left:0.8em;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;{{#if:{{{fam4|}}}|{{{fam4}}}&amp;lt;!--&lt;br /&gt;
 --&amp;gt;&amp;lt;ul style=&amp;quot;margin-left:0.8em;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;{{#if:{{{fam5|}}}|{{{fam5}}}&amp;lt;!--&lt;br /&gt;
 --&amp;gt;&amp;lt;ul style=&amp;quot;margin-left:0.8em;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;{{#if:{{{fam6|}}}|{{{fam6}}}&amp;lt;!--&lt;br /&gt;
 --&amp;gt;&amp;lt;ul style=&amp;quot;margin-left:0.8em;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;{{#if:{{{fam7|}}}|{{{fam7}}}&amp;lt;!--&lt;br /&gt;
 --&amp;gt;&amp;lt;ul style=&amp;quot;margin-left:0.8em;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;{{#if:{{{fam8|}}}|{{{fam8}}}&amp;lt;!--&lt;br /&gt;
 --&amp;gt;&amp;lt;ul style=&amp;quot;margin-left:0.8em;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;{{#if:{{{fam9|}}}|{{{fam9}}}&amp;lt;!--&lt;br /&gt;
 --&amp;gt;&amp;lt;ul style=&amp;quot;margin-left:0.8em;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;{{#if:{{{fam10|}}}|{{{fam10}}}&amp;lt;!--&lt;br /&gt;
 --&amp;gt;&amp;lt;ul style=&amp;quot;margin-left:0.8em;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;{{#if:{{{fam11|}}}|{{{fam11}}}&amp;lt;!--&lt;br /&gt;
 --&amp;gt;&amp;lt;ul style=&amp;quot;margin-left:0.8em;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;{{#if:{{{fam12|}}}|{{{fam12}}}&amp;lt;!--&lt;br /&gt;
 --&amp;gt;&amp;lt;ul style=&amp;quot;margin-left:0.8em;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;{{#if:{{{fam13|}}}|{{{fam13}}}&amp;lt;!--&lt;br /&gt;
 --&amp;gt;&amp;lt;ul style=&amp;quot;margin-left:0.8em;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;{{#if:{{{fam14|}}}|{{{fam14}}}&amp;lt;!--&lt;br /&gt;
 --&amp;gt;&amp;lt;ul style=&amp;quot;margin-left:0.8em;&amp;quot;&amp;gt;&amp;lt;!--&lt;br /&gt;
  --&amp;gt;&amp;lt;li&amp;gt;{{#if:{{{fam15|}}} |{{{fam15}}} &amp;lt;ul style=&amp;quot;margin-left:0.3em;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;{{{name|{{PAGENAMEBASE}}}}}&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt; |{{{name|{{PAGENAMEBASE}}}}} }}&amp;lt;/li&amp;gt;&amp;lt;!--&lt;br /&gt;
 --&amp;gt;&amp;lt;/ul&amp;gt; |{{{name|{{PAGENAMEBASE}}}}}}}&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt; |{{{name|{{PAGENAMEBASE}}}}}}}&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt; |{{{name|{{PAGENAMEBASE}}}}}}}&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt; |{{{name|{{PAGENAMEBASE}}}}}}}&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt; |{{{name|{{PAGENAMEBASE}}}}}}}&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt; |{{{name|{{PAGENAMEBASE}}}}}}}&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt; |{{{name|{{PAGENAMEBASE}}}}}}}&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt; |{{{name|{{PAGENAMEBASE}}}}}}}&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt; |{{{name|{{PAGENAMEBASE}}}}}}}&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt; |{{{name|{{PAGENAMEBASE}}}}}}}&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt; |{{{name|{{PAGENAMEBASE}}}}}}}&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt; |{{{name|{{PAGENAMEBASE}}}}}}}&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt; |{{{name|{{PAGENAMEBASE}}}}}}}&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;/div&amp;gt; }}&lt;br /&gt;
&lt;br /&gt;
| label37 = {{longitem|Child systems}}&lt;br /&gt;
|  data37 = {{{children|}}}&lt;br /&gt;
&lt;br /&gt;
| label39 = {{longitem|Sister systems}}&lt;br /&gt;
|  data39 = {{{sisters|}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ISO 15924 --&amp;gt;&lt;br /&gt;
| header40= ISO 15924&lt;br /&gt;
&lt;br /&gt;
| label43 = [[ISO 15924]]&lt;br /&gt;
|  data43 = {{#if:{{ISO 15924 code|{{{iso15924|}}}|default=}} |{{mono|1={{ISO 15924 code|{{{iso15924|}}} }}}} {{mono|1=({{ISO 15924 number|alpha4={{{iso15924|}}}}})}},&amp;amp;#x20;&amp;amp;#x200B;{{ISO 15924 name|{{{iso15924|}}}}}{{Main other|[[Category:Scripts with ISO 15924 four-letter codes]]}}}} {{{iso15924 note|}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- UNICODE --&amp;gt;&lt;br /&gt;
| header50= [[Unicode]]&lt;br /&gt;
&lt;br /&gt;
| label53 = {{longitem|Unicode alias}}&lt;br /&gt;
|  data53 = {{#if:{{{iso15924|}}} |{{ISO 15924 alias|{{{iso15924|}}}}}}}&lt;br /&gt;
&lt;br /&gt;
| label55 = {{longitem|[[Unicode range]]}}&lt;br /&gt;
|  data55 = {{#switch:{{lc:{{{unicode|}}}}}&lt;br /&gt;
 |no|not|none|not in unicode=Not in Unicode&lt;br /&gt;
 |#default={{{unicode|}}}}}&lt;br /&gt;
&lt;br /&gt;
|  data56 = {{{module|}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- FOOTNOTES --&amp;gt;&lt;br /&gt;
|header60 = _BLANK_&lt;br /&gt;
|  data61 = {{#if:{{{footnotes|}}} |&amp;lt;div style=&amp;quot;border-top:1px solid #aaa;text-align:left;&amp;quot;&amp;gt;{{{footnotes}}}&amp;lt;/div&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
| belowclass = noprint selfref&lt;br /&gt;
| belowstyle = text-align:left; background:#eee; color:inherit;&lt;br /&gt;
| below = {{#switch:{{lc:{{{note|{{{ipa-note|yes}}}}}}}}&lt;br /&gt;
 |none|no|0=&lt;br /&gt;
 |#default={{Infobox writing system/ipa-note}}}}&lt;br /&gt;
}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox writing system with unknown parameters|_VALUE_]]}}|preview = Page using [[Template:Infobox writing system]] with unknown parameter &amp;quot;_VALUE_&amp;quot;|ignoreblank=y&lt;br /&gt;
| SHdates | SHform | SHline | SHtype | alt | altname | bodystyle | caption | captionstyle | children | creator | date | direction comment | direction | engvar | fam10 | fam11 | fam12 | fam13 | fam14 | fam15 | fam1 | fam2 | fam3 | fam4 | fam5 | fam6 | fam7 | fam8 | fam9 | family | footnotes | image size | imagesize | imagestyle | ipa-note | iso15924 note | iso15924 | language | languages | mode | module | name | native_name | note | official script | print | published | qid | region | romanized_from | romanised_from | sample | sisters | status | time | type | typedesc | typedesc-prefix | unicode&lt;br /&gt;
}}&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Documentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Aracinia&amp;diff=3530</id>
		<title>Aracinia</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Aracinia&amp;diff=3530"/>
		<updated>2026-01-10T08:40:17Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox country&lt;br /&gt;
|conventional_long_name=Republic of Aracinia&lt;br /&gt;
|native_name={{cs|ciana|ünciné haraxiñes}}&amp;lt;br&amp;gt;&#039;&#039;Ynciné Harachinies&#039;&#039;&lt;br /&gt;
|image_flag=Aracinia flag.png&lt;br /&gt;
|image_coat=Aracinia coa.png&lt;br /&gt;
|common_name=Aracinia&lt;br /&gt;
|national_motto={{cs|ciana|yamsiavin ös a rixa eftoxu hance}}&amp;lt;br&amp;gt;&amp;quot;Have faith in the old gods&amp;quot;&lt;br /&gt;
|national_anthem={{cs|ciana|r&#039;exlexs haraxinize}}&amp;lt;br&amp;gt;&amp;quot;The Aracinian March&amp;quot;&lt;br /&gt;
|capital=[[Miënnaí]]&lt;br /&gt;
|largest_city=&lt;br /&gt;
|official_languages=[[Aracinian language|Aracinian]]&lt;br /&gt;
|common_languages=&lt;br /&gt;
|religion=[[Fthocrithrís]]&lt;br /&gt;
|demonym=Aracinian&lt;br /&gt;
|leader_title1=President&lt;br /&gt;
|leader_name1=Name Nameson&lt;br /&gt;
|leader_title2=[[Yóncler|Ionche]]&lt;br /&gt;
|leader_name2=[[Ierdu Achstis]]&lt;br /&gt;
|government_type=[[Wikipedia:Unitary state|Unitary]] [[Wikipedia:Parliamentary system|parliamentary republic]]&lt;br /&gt;
|established_event1 = Grand Duchy of Aracinia&lt;br /&gt;
|established_date1 = 1XXX&lt;br /&gt;
|established_event2 = Independence from [[Sensuîerreí]]&lt;br /&gt;
|established_date2 = 1956&lt;br /&gt;
|area_km2 = 62330&lt;br /&gt;
|population_estimate = &lt;br /&gt;
|population_estimate_year = &lt;br /&gt;
|population_census = &lt;br /&gt;
|population_census_year = &lt;br /&gt;
|population_density_km2 = &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aracinia&#039;&#039;&#039; ({{small|[[Aracinian language|Aracinian]]}}: {{cs|ciana|haraxiñ}} &#039;&#039;Harachin&#039;&#039;), officially the &#039;&#039;&#039;Republic of Aracinia&#039;&#039;&#039; ({{small|[[Aracinian language|Aracinian]]}}: {{cs|ciana|ünciné haraxiñes}} &#039;&#039;Ynciné Harachinies&#039;&#039;) is a sovereign country in [[Sharrat]]. It borders [[Sensuîerreí]] and [[Briginthië|Briginthia]] to the south, [[Farsis]] to the west and [[Norairianguk]] to the north. Aracinia is bordered by the [[Melóryan Sea]], which connects to the [[Idrisiuchian Sea]] and many important trade routes in the region.&lt;br /&gt;
&lt;br /&gt;
==Name==&lt;br /&gt;
The name &#039;&#039;Aracinia&#039;&#039; is an anglicization of [[Aracinian language|Aracinian]] &#039;&#039;Harachin&#039;&#039;. The word is directly inherited from [[High Ciána language|High Ciána]] &#039;&#039;Âracinië&#039;&#039;, which ultimately comes from a substrate language, reconstructed as &#039;&#039;*xarākīnej-&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
===Early history===&lt;br /&gt;
===Medieval period===&lt;br /&gt;
===Early modern period===&lt;br /&gt;
===Independence===&lt;br /&gt;
{{main|Pagan Revolution}}&lt;br /&gt;
&lt;br /&gt;
==Geography==&lt;br /&gt;
===Climate===&lt;br /&gt;
===Biodiversity===&lt;br /&gt;
&lt;br /&gt;
==Politics==&lt;br /&gt;
===Government===&lt;br /&gt;
===Administrative divisions===&lt;br /&gt;
===Foreign relations===&lt;br /&gt;
===Military===&lt;br /&gt;
&lt;br /&gt;
==Economy==&lt;br /&gt;
===Transport===&lt;br /&gt;
===Energy===&lt;br /&gt;
===Science and technology===&lt;br /&gt;
===Tourism===&lt;br /&gt;
&lt;br /&gt;
==Demographics==&lt;br /&gt;
===Ethnic groups===&lt;br /&gt;
===Urbanization===&lt;br /&gt;
===Language===&lt;br /&gt;
===Education===&lt;br /&gt;
===Healthcare===&lt;br /&gt;
===Religion===&lt;br /&gt;
[[Fthocrithrís]] remains the dominant religion in Aracinia. Although it has no official status by law, it is heavily promoted by government institutions and religion and ethics classes are part of every public school&#039;s mandatory curriculum. According to a 1992 study, about 63% of Aracinians self-identify as Fthocrithrists, 13% as [[Hanctheism|Hanctheists]], 10% other faiths and about 14% identify with no religion. Fthocrithrís has long been the majority religion in the country, which has historically contrasted with Hanctheism as a state religion. Following Aracinia&#039;s independence, Hanctheism was no longer defined by law as the state religion which led to a steady decline in followers in the country.&lt;br /&gt;
&lt;br /&gt;
==Culture==&lt;br /&gt;
===Literature===&lt;br /&gt;
===Art===&lt;br /&gt;
===Sport===&lt;br /&gt;
===Symbols===&lt;br /&gt;
&lt;br /&gt;
[[Category:Countries]]&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Aracinia&amp;diff=3529</id>
		<title>Aracinia</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Aracinia&amp;diff=3529"/>
		<updated>2026-01-10T08:37:58Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox country&lt;br /&gt;
|conventional_long_name=Republic of Aracinia&lt;br /&gt;
|native_name={{cs|ciana|ünciné haraxiñes}}&amp;lt;br&amp;gt;&#039;&#039;Ynciné Harachinies&#039;&#039;&lt;br /&gt;
|image_flag=Aracinia flag.png&lt;br /&gt;
|image_coat=Aracinia coa.png&lt;br /&gt;
|common_name=Aracinia&lt;br /&gt;
|national_motto={{cs|ciana|yamsiavin ös a rixa eftoxu hance}}&amp;lt;br&amp;gt;&amp;quot;Have faith in the old gods&amp;quot;&lt;br /&gt;
|national_anthem={{cs|ciana|r&#039;exlexs haraxinize}}&amp;lt;br&amp;gt;&amp;quot;The Aracinian March&amp;quot;&lt;br /&gt;
|capital=[[Miënnaí]]&lt;br /&gt;
|largest_city=&lt;br /&gt;
|official_languages=[[Aracinian language|Aracinian]]&lt;br /&gt;
|common_languages=&lt;br /&gt;
|religion=[[Fthocrithrís]]&lt;br /&gt;
|demonym=Aracinian&lt;br /&gt;
|national_anthem=&lt;br /&gt;
|leader_title1=President&lt;br /&gt;
|leader_name1=Name Nameson&lt;br /&gt;
|leader_title2=[[Yóncler|Ionche]]&lt;br /&gt;
|leader_name2=[[Ierdu Achstis]]&lt;br /&gt;
|government_type=[[Wikipedia:Unitary state|Unitary]] [[Wikipedia:Parliamentary system|parliamentary republic]]&lt;br /&gt;
|established_event1 = Grand Duchy of Aracinia&lt;br /&gt;
|established_date1 = 1XXX&lt;br /&gt;
|established_event2 = Independence from [[Sensuîerreí]]&lt;br /&gt;
|established_date2 = 1956&lt;br /&gt;
|area_km2 = 62330&lt;br /&gt;
|population_estimate = &lt;br /&gt;
|population_estimate_year = &lt;br /&gt;
|population_census = &lt;br /&gt;
|population_census_year = &lt;br /&gt;
|population_density_km2 = &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aracinia&#039;&#039;&#039; ({{small|[[Aracinian language|Aracinian]]}}: {{cs|ciana|haraxiñ}} &#039;&#039;Harachin&#039;&#039;), officially the &#039;&#039;&#039;Republic of Aracinia&#039;&#039;&#039; ({{small|[[Aracinian language|Aracinian]]}}: {{cs|ciana|ünciné haraxiñes}} &#039;&#039;Ynciné Harachinies&#039;&#039;) is a sovereign country in [[Sharrat]]. It borders [[Sensuîerreí]] and [[Briginthië|Briginthia]] to the south, [[Farsis]] to the west and [[Norairianguk]] to the north. Aracinia is bordered by the [[Melóryan Sea]], which connects to the [[Idrisiuchian Sea]] and many important trade routes in the region.&lt;br /&gt;
&lt;br /&gt;
==Name==&lt;br /&gt;
The name &#039;&#039;Aracinia&#039;&#039; is an anglicization of [[Aracinian language|Aracinian]] &#039;&#039;Harachin&#039;&#039;. The word is directly inherited from [[High Ciána language|High Ciána]] &#039;&#039;Âracinië&#039;&#039;, which ultimately comes from a substrate language, reconstructed as &#039;&#039;*xarākīnej-&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
===Early history===&lt;br /&gt;
===Medieval period===&lt;br /&gt;
===Early modern period===&lt;br /&gt;
===Independence===&lt;br /&gt;
{{main|Pagan Revolution}}&lt;br /&gt;
&lt;br /&gt;
==Geography==&lt;br /&gt;
===Climate===&lt;br /&gt;
===Biodiversity===&lt;br /&gt;
&lt;br /&gt;
==Politics==&lt;br /&gt;
===Government===&lt;br /&gt;
===Administrative divisions===&lt;br /&gt;
===Foreign relations===&lt;br /&gt;
===Military===&lt;br /&gt;
&lt;br /&gt;
==Economy==&lt;br /&gt;
===Transport===&lt;br /&gt;
===Energy===&lt;br /&gt;
===Science and technology===&lt;br /&gt;
===Tourism===&lt;br /&gt;
&lt;br /&gt;
==Demographics==&lt;br /&gt;
===Ethnic groups===&lt;br /&gt;
===Urbanization===&lt;br /&gt;
===Language===&lt;br /&gt;
===Education===&lt;br /&gt;
===Healthcare===&lt;br /&gt;
===Religion===&lt;br /&gt;
[[Fthocrithrís]] remains the dominant religion in Aracinia. Although it has no official status by law, it is heavily promoted by government institutions and religion and ethics classes are part of every public school&#039;s mandatory curriculum. According to a 1992 study, about 63% of Aracinians self-identify as Fthocrithrists, 13% as [[Hanctheism|Hanctheists]], 10% other faiths and about 14% identify with no religion. Fthocrithrís has long been the majority religion in the country, which has historically contrasted with Hanctheism as a state religion. Following Aracinia&#039;s independence, Hanctheism was no longer defined by law as the state religion which led to a steady decline in followers in the country.&lt;br /&gt;
&lt;br /&gt;
==Culture==&lt;br /&gt;
===Literature===&lt;br /&gt;
===Art===&lt;br /&gt;
===Sport===&lt;br /&gt;
===Symbols===&lt;br /&gt;
&lt;br /&gt;
[[Category:Countries]]&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Sensu%C3%AEerre%C3%AD&amp;diff=3528</id>
		<title>Sensuîerreí</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Sensu%C3%AEerre%C3%AD&amp;diff=3528"/>
		<updated>2026-01-10T08:36:15Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox country|conventional_long_name=Most Holy Union of a Hundred Kingdoms|native_name={{cs|ciana|teágmë taikokoëma sensún îerréo}}&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Teágmë Taicocoëma Sensún Îerréo&#039;&#039;|image_flag=sensuierreiflagnew.png|common_name=Sensuîerreí|capital=[[Coëmanthë]]|largest_city=[[Iös-Carma]]|official_languages=[[High Ciána]]|common_languages=[[Femps]]|religion={{ubl|item_style=white-space:nowrap|82.35% [[Samsaric Hanctheist]]|9.72%% [[Paradisaic Hanctheist]]|2.6% [[Fthocrithridist]]}}|demonym=Sensundrian (people)&amp;lt;br&amp;gt;&lt;br /&gt;
Sensuîerrisian (relational)|national_anthem=[[Arise, Undying Sun]]|leader_title1=[[Archaegus]]|leader_name1=[[Âns I]]|leader_title2=[[Yóncler]]|leader_name2=[[Ronabe Êborione]]|government_type=Constitutional monarchy (de jure)&lt;br /&gt;
Military junta (de facto)|motto=&#039;&#039;Bíthin Eána&#039;&#039; &amp;lt;small&amp;gt;(High Ciána)&amp;lt;/small&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;God with us&amp;quot;|flag=|flag_type=[[Flag of Sensuîerreí|Flag]]|image_coat=sensuierreicoa.png|coa_size=120px|legislature=[[Imfól]]|currency=[[Cántaurë]]|currency_code=CTR|drives_on=right|official_website=sensuierrei.gov.sen|population_census=258,574,000|population_census_year=1993}}&#039;&#039;&#039;Sensuîerreí&#039;&#039;&#039; (IPA: /sɛnzu(h)ɪˈɹeɪ/, &amp;lt;small&amp;gt;High Ciána:&amp;lt;/small&amp;gt; {{cs|ciana|sensuîerreí}} [ɕẽ.zy.hi.ˈɾi], &amp;lt;small&amp;gt;[[Femps]]:&amp;lt;/small&amp;gt; &#039;&#039;Siensyïrrai&#039;&#039; [ʃɛnziːˈrɛ), formally the &#039;&#039;&#039;Most Holy Union of a Hundred Kingdoms&#039;&#039;&#039; (&amp;lt;small&amp;gt;High Ciána:&amp;lt;/small&amp;gt; &#039;&#039;Teágmë Taicocoëma Sensún Îerréo&#039;&#039; [ˈtɕi̯ag.mə te.ko.ˈko.e.ma ɕẽ.ˈzyn hi.ˈɾeu̯], &#039;&#039;&#039;TTSI&#039;&#039;&#039; ({{cs|ciana|t.t.s.i}}), &amp;lt;small&amp;gt;[[Femps]]:&amp;lt;/small&amp;gt; {{cs|ciana|Tkiagma Taikokóëma d&#039;hi Siensulli Hirri}} &#039;&#039;Tciagma Taicocóëma d&#039;hi Scensylli Hirri&#039;&#039; [ˈt͡ʃaɣma tɛkɔˈkɔɛma di ʃɛnˈzili ˈiri]), is a state in [[Sharrat]]. Since 1956 the nation has been a constitutional monarchy, with [[archaegus]] [[Âns I]] as head of state. Its [[yóncler]], the head of government, is [[Ronabe Êborione|Ronabe Heborione]]. It is the oldest continuous polity in the region, having existed in various forms since 856 CE.&lt;br /&gt;
&lt;br /&gt;
Its domains are separated by the [[Idrisiuchian Sea]], with most of its territories located in Eastern Sharrat.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
The very first Ciánic-speaking peoples existed in a loose trade confederation of city-states along the Ioxian, Laptian, and the Meloryan Seas from around 200 CE to 623 CE. In 623, the city states of Bémps and Priostoí merged together through a strategic marriage, and founded the Archaegate of [[Bémps-Priostoí]]. This state would unite the rest of the Ciánic speaking realms under their banner through both diplomacy and warfare until the Great Unification of 856, where Sensuîerreí was founded by [[Lailéos I]].&lt;br /&gt;
&lt;br /&gt;
=== Fourth Solar Crusade ===&lt;br /&gt;
Since the independence of [[Thullumia]], Sensuîerreí has launched crusades against the country in 1872 as a response to its declaration of independence, and in 1900 in response to Thullumia becoming a cenonist state. [[Síbridryor V Dádhor]], as a child, watched the country fail to intervene properly in cenonist Thullumia during the Second Solar Crusade during the reign of [[Édmhor III Mongor]]. Cenonist movements have been growing in Sensuîerreí since the founding of the [[Cenonist Irreúehsze]] in 1899. Síbridryor V Dádhor was highly motivated to remove cenonist elements from both his realm and from Thullumia, where the regime actively teaches and trains cenonist activists from many countries. &lt;br /&gt;
&lt;br /&gt;
=== Occupation and Democratic Reforms ===&lt;br /&gt;
Sensuîerreí officially accepted the terms surrender of the X Conference on November 26th (Kyu had already occupied since 1949 by Thullumia), and delegations from [[Thullumia]], [[Voylvurlch]], and the [[Archdessodom of Ishkur]] were flown into [[Iös-Carma]] to further discuss the finer points of the terms. The official signing of the &#039;&#039;Unconditional Surrender of Sensuîerreí and Kyu to the Accord Powers&#039;&#039; and the ceremony was held on December 31st, 1950, which officially ended the [[Great War]].&lt;br /&gt;
&lt;br /&gt;
Per the document, Sensuîerreí was divided into a Thullumian, Voylvurlic, and an Ishkurite zone. Prior to 1950, Thullumia had been exporting anti-imperialist and cenonist propaganda in its captured territories in the Western Sensuîerrisian îerreí, which contributed to a widespread discontent with remaining in union under Sensuîerreí. As part of the instrument of surrender, the occupying forces held a national referendum in each îerrë in April 1951 in an effort to promote a smaller and manageable Sensuîerreí, the first election in the country with universal suffrage. Additionally, the new states, Aracinia, Farsis, Briginthia, Labuarrë, Umbutrië, and Êilôthë were to have general multiparty elections in September 1955 in preparation for independence in 1956, the same year the occupation of Sensuîerreí ends. However, most of these states pivoted hard left and voted cenonist parties into power, which greatly alarmed the anti-cenonist Archdessedom of Ishkur. The provisional Sensuîerrisian government, already unhappy with the results of the independence referendum, viewed the fact that its former territories had embraced cenonism, and petitioned Voylvurlch and the Archdessedom of Ishkur to intervene on 4 October 1955. The Archdessedom of Ishkur was more than willing to militarily intervene in the affected territories, but Voylvurlch was uncomfortable with committing troops to intervene in a legitimate democratic process. Moreover, the elections occurred within the Thullumian occupation zone, making any military action to be detrimental to the already-fragile balance and peace between the three occupiers. Additionally, since [[Qonklaks]] (the other nuclear power besides the Archdessedom at the time) had offered economic and political assistance to the new states along with Thullumia, they could not rule out an armed conflict with a nuclear power.&lt;br /&gt;
&lt;br /&gt;
Under diplomatic and economic pressure, Sensuîerreí was forced to accept the newly independence states as they gained independence one by one in 1956. The Treaty of Somgor, which reaffirmed the end date of the occupation outlined in the &#039;&#039;Unconditional Surrender of Sensuîerreí and Kyu to the Accord Powers&#039;&#039; as 26 August, 1956, ended the Accord-led occupation in Sensuîerreí under its new archaegus, [[Édmhor IV]].&lt;br /&gt;
&lt;br /&gt;
These events served as a wake up call to the non-cenonist Accord powers, which felt that cenonism must be contained to prevent such a political blunder from happening again, and that stronger military responses must be issued to deal with the spread of cenonism.&lt;br /&gt;
&lt;br /&gt;
=== Jiq Zàw&#039;s Thaw ===&lt;br /&gt;
As [[Qonklaks]]&lt;br /&gt;
&lt;br /&gt;
== Politics ==&lt;br /&gt;
&lt;br /&gt;
=== Administrative Divisions ===&lt;br /&gt;
Since 1950, Sensuîerreí is divided into 32 &#039;&#039;îerreí&#039;&#039; and 228 &#039;&#039;aedir&#039;&#039;. &lt;br /&gt;
[[Category:Countries]]&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Category:Language_guides&amp;diff=3520</id>
		<title>Category:Language guides</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Category:Language_guides&amp;diff=3520"/>
		<updated>2026-01-10T07:39:40Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: Created page with &amp;quot;Category:Languages&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Languages]]&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Femps_Guide&amp;diff=3519</id>
		<title>Femps Guide</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Femps_Guide&amp;diff=3519"/>
		<updated>2026-01-10T07:39:22Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;Cioria gene!&#039;&#039; The following page will provide a comprehensive guide to [[Femps]], the unofficial lingua franca of [[Sensuîerreí]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Cioria fina!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Articles ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Definite article (with combinations with prepositions)&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; |preposition&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |singular&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; |plural&lt;br /&gt;
|-&lt;br /&gt;
!anim.&lt;br /&gt;
!inan.&lt;br /&gt;
|-&lt;br /&gt;
| -&lt;br /&gt;
|&#039;&#039;ho&#039;&#039;&lt;br /&gt;
|&#039;&#039;ha&#039;&#039;&lt;br /&gt;
|&#039;&#039;hi&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;da&#039;&#039; &#039;of&#039;&lt;br /&gt;
|&#039;&#039;d&#039;ho&#039;&#039;&lt;br /&gt;
|&#039;&#039;d&#039;ha&#039;&#039;&lt;br /&gt;
|&#039;&#039;d&#039;hi&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;gio&#039;&#039; &#039;for&#039;&lt;br /&gt;
|&#039;&#039;gioho&#039;&#039;&lt;br /&gt;
|&#039;&#039;gioha&#039;&#039;&lt;br /&gt;
|&#039;&#039;giohi&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;li&#039;&#039; &#039;in, at&#039;&lt;br /&gt;
|&#039;&#039;l&#039;ho&#039;&#039;&lt;br /&gt;
|&#039;&#039;l&#039;ha&#039;&#039;&lt;br /&gt;
|&#039;&#039;l&#039;hi&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|em &#039;to, at&#039;&lt;br /&gt;
|&#039;&#039;emho&#039;&#039;&lt;br /&gt;
|&#039;&#039;emha&#039;&#039;&lt;br /&gt;
|&#039;&#039;emhi&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Inefinite article (with combinations with prepositions)&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; |preposition&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |singular&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; |plural&lt;br /&gt;
|-&lt;br /&gt;
!anim.&lt;br /&gt;
!inan.&lt;br /&gt;
|-&lt;br /&gt;
| -&lt;br /&gt;
|&#039;&#039;sceö&#039;&#039;&lt;br /&gt;
|&#039;&#039;sceä&#039;&#039;&lt;br /&gt;
|&#039;&#039;sceï&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;da&#039;&#039; &#039;of&#039;&lt;br /&gt;
|&#039;&#039;desceö&#039;&#039;&lt;br /&gt;
|&#039;&#039;desceä&#039;&#039;&lt;br /&gt;
|&#039;&#039;desceï&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;gio&#039;&#039; &#039;for&#039;&lt;br /&gt;
|&#039;&#039;gesceö&#039;&#039;&lt;br /&gt;
|&#039;&#039;gesceä&#039;&#039;&lt;br /&gt;
|&#039;&#039;gesceï&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;li&#039;&#039; &#039;in, at&#039;&lt;br /&gt;
|&#039;&#039;lisceö&#039;&#039;&lt;br /&gt;
|&#039;&#039;lisceä&#039;&#039;&lt;br /&gt;
|&#039;&#039;lesceï&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;em&#039;&#039; &#039;to, at&#039;&lt;br /&gt;
|&#039;&#039;ensceö&#039;&#039;&lt;br /&gt;
|&#039;&#039;ensceä&#039;&#039;&lt;br /&gt;
|&#039;&#039;ensceï&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pronouns ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; rowspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; |Subject&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |Direct Object&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; |Indirect Object&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; |Possessive (nominal)&lt;br /&gt;
|-&lt;br /&gt;
!Clitic form&lt;br /&gt;
!Stressed form&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; |sing.&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |1st&lt;br /&gt;
|&#039;&#039;ymme&#039;&#039;&lt;br /&gt;
|&#039;&#039;ce-, c(i)&#039;-&#039;&#039;&lt;br /&gt;
|&#039;&#039;cy&#039;&#039;&lt;br /&gt;
|&#039;&#039;cogio&#039;&#039;&lt;br /&gt;
|&#039;&#039;ci&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |2nd&lt;br /&gt;
|&#039;&#039;sci&#039;&#039;&lt;br /&gt;
|&#039;&#039;sce-, sc(i)&#039;-&#039;&#039;&lt;br /&gt;
|&#039;&#039;sy&#039;&#039;&lt;br /&gt;
|&#039;&#039;sogio&#039;&#039;&lt;br /&gt;
|&#039;&#039;sci&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; |3rd&lt;br /&gt;
!an.&lt;br /&gt;
|&#039;&#039;niu&#039;&#039;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |&#039;&#039;y-, m&#039;-&#039;&#039;&lt;br /&gt;
|&#039;&#039;niu&#039;&#039;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |&#039;&#039;niugio&#039;&#039;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |&#039;&#039;niuti&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!inan.&lt;br /&gt;
|&#039;&#039;niuä&#039;&#039;&lt;br /&gt;
|&#039;&#039;niuä&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; |plural&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |1st&lt;br /&gt;
|&#039;&#039;vo&#039;&#039;&lt;br /&gt;
|&#039;&#039;be-, b&#039;-&#039;&#039;&lt;br /&gt;
|&#039;&#039;ban&#039;&#039;&lt;br /&gt;
|&#039;&#039;begio&#039;&#039;&lt;br /&gt;
|&#039;&#039;bidgi&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |2nd&lt;br /&gt;
|&#039;&#039;tci&#039;&#039;&lt;br /&gt;
|&#039;&#039;te-, t&#039;-&#039;&#039;&lt;br /&gt;
|&#039;&#039;tan&#039;&#039;&lt;br /&gt;
|&#039;&#039;tcegio&#039;&#039;&lt;br /&gt;
|&#039;&#039;tcidgi&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |3rd&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&#039;&#039;niuti&#039;&#039;&lt;br /&gt;
|&#039;&#039;niutegio&#039;&#039;&lt;br /&gt;
|&#039;&#039;niutó&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; |relative&lt;br /&gt;
|&#039;&#039;tai&#039;&#039;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&#039;&#039;tagin&#039;&#039;&lt;br /&gt;
|&#039;&#039;togio&#039;&#039;&lt;br /&gt;
|&#039;&#039;ti&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Possessive (adjectival)&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
!singular&lt;br /&gt;
!plural&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;6&amp;quot; |sing.&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; |1st&lt;br /&gt;
!an.&lt;br /&gt;
|&#039;&#039;cyö&#039;&#039;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |&#039;&#039;cyï&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!inan.&lt;br /&gt;
|&#039;&#039;cyä&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; |2nd&lt;br /&gt;
!an.&lt;br /&gt;
|&#039;&#039;syö&#039;&#039;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |&#039;&#039;syï&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!inan.&lt;br /&gt;
|&#039;&#039;syä&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; |3rd&lt;br /&gt;
!an.&lt;br /&gt;
|&#039;&#039;niutigio&#039;&#039;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |&#039;&#039;niutigi&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!inan.&lt;br /&gt;
|&#039;&#039;niutigia&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;6&amp;quot; |plur.&lt;br /&gt;
!1st&lt;br /&gt;
!an.&lt;br /&gt;
|&#039;&#039;bovo&#039;&#039;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |&#039;&#039;boï&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
!inan.&lt;br /&gt;
|&#039;&#039;bova&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!2nd&lt;br /&gt;
!an.&lt;br /&gt;
|&#039;&#039;tovo&#039;&#039;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |&#039;&#039;toï&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
!inan.&lt;br /&gt;
|&#039;&#039;tova&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!3rd&lt;br /&gt;
!an.&lt;br /&gt;
|&#039;&#039;niutogio&#039;&#039;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |&#039;&#039;niutogi&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
!inan.&lt;br /&gt;
|&#039;&#039;niutogia&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; |relative&lt;br /&gt;
|&#039;&#039;tigio&#039;&#039;&lt;br /&gt;
|&#039;&#039;tigi&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Nouns ==&lt;br /&gt;
Nouns are divided into five major classes based on the historical High Ciána declensions.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; |High Ciána declension&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; |High Ciána class&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; |High Ciána example&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |Femps ending&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |Femps example&lt;br /&gt;
|-&lt;br /&gt;
!singular&lt;br /&gt;
!plural&lt;br /&gt;
!singular&lt;br /&gt;
!plural&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |1st declension&lt;br /&gt;
|or-class&lt;br /&gt;
|&#039;&#039;maror&#039;&#039; &#039;honour&#039;&lt;br /&gt;
| &#039;&#039;-o&#039;&#039;&lt;br /&gt;
| &#039;&#039;-i&#039;&#039;&lt;br /&gt;
|&#039;&#039;maro&#039;&#039;&lt;br /&gt;
|&#039;&#039;mari&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|ar-class&lt;br /&gt;
|&#039;&#039;fínar&#039;&#039; &#039;town&#039;&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | &#039;&#039;-a&#039;&#039;&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | &#039;&#039;-i&#039;&#039;&lt;br /&gt;
|&#039;&#039;fina&#039;&#039;&lt;br /&gt;
|&#039;&#039;fini&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |2nd declension&lt;br /&gt;
|a-class&lt;br /&gt;
|&#039;&#039;mbóa&#039;&#039; &#039;sea&#039;&lt;br /&gt;
|&#039;&#039;emboa&#039;&#039;&lt;br /&gt;
|&#039;&#039;emboi&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|ë-class&lt;br /&gt;
|&#039;&#039;sfareë&#039;&#039; &#039;victory&#039;&lt;br /&gt;
|&#039;&#039;esfarea&#039;&#039;&lt;br /&gt;
|&#039;&#039;esfarei&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|3rd declension&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |chaos nouns&lt;br /&gt;
|&#039;&#039;ulúx, ulúgi&#039;&#039; &#039;village&#039;&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | &#039;&#039;-e&#039;&#039;&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | &#039;&#039;-o&#039;&#039;&lt;br /&gt;
|&#039;&#039;ylyge&#039;&#039;&lt;br /&gt;
|&#039;&#039;ylygio&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|4th declension&lt;br /&gt;
|&#039;&#039;áx, ási, ác&#039;&#039; &#039;thought&#039;&lt;br /&gt;
|&#039;&#039;asce&#039;&#039;&lt;br /&gt;
|&#039;&#039;ascio&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|5th declension&lt;br /&gt;
|&#039;&#039;nóx, néri, nóc&#039;&#039; &#039;sun&#039;&lt;br /&gt;
|&#039;&#039;nere&#039;&#039;&lt;br /&gt;
|&#039;&#039;nero&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|6th declension&lt;br /&gt;
|ou-nouns&lt;br /&gt;
|&#039;&#039;nerisíou&#039;&#039; &#039;founder&#039;&lt;br /&gt;
|&#039;&#039;-u&#039;&#039;&lt;br /&gt;
|&#039;&#039;-a&#039;&#039;&lt;br /&gt;
|&#039;&#039;nerigiu&#039;&#039;&lt;br /&gt;
|&#039;&#039;nerigia&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|7th declension&lt;br /&gt;
|dual nouns&lt;br /&gt;
|&#039;&#039;ighé&#039;&#039; &#039;trousers&#039;&lt;br /&gt;
|&#039;&#039;-é&#039;&#039;&lt;br /&gt;
|&#039;&#039;-eso&#039;&#039;&lt;br /&gt;
|&#039;&#039;igé&#039;&#039;&lt;br /&gt;
|&#039;&#039;igeso&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Adjectives ==&lt;br /&gt;
Adjective endings are similar to noun endings, except there are only two classes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; |High Ciána class&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; |High Ciána example&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |Femps ending&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |Femps example&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |animate&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |inanimate&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |animate&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |inanimate&lt;br /&gt;
|-&lt;br /&gt;
!singular&lt;br /&gt;
!plural&lt;br /&gt;
!singular&lt;br /&gt;
!plural&lt;br /&gt;
!singular&lt;br /&gt;
!plural&lt;br /&gt;
!singular&lt;br /&gt;
!plural&lt;br /&gt;
|-&lt;br /&gt;
|standard&lt;br /&gt;
|&#039;&#039;ôtor, ôta&#039;&#039; &#039;hot&#039;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |&#039;&#039;-o&#039;&#039;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |&#039;&#039;-i&#039;&#039;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |&#039;&#039;-a&#039;&#039;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |&#039;&#039;-i&#039;&#039;&lt;br /&gt;
|&#039;&#039;hoto&#039;&#039;&lt;br /&gt;
|&#039;&#039;hoti&#039;&#039;&lt;br /&gt;
|&#039;&#039;hota&#039;&#039;&lt;br /&gt;
|&#039;&#039;hoti&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|iota-ë&lt;br /&gt;
|&#039;&#039;nuáryor, nuáryë&#039;&#039; &#039;lunar&#039;&lt;br /&gt;
|&#039;&#039;nuarigio&#039;&#039;&lt;br /&gt;
|&#039;&#039;nuarigi&#039;&#039;&lt;br /&gt;
|&#039;&#039;nuarigia&#039;&#039;&lt;br /&gt;
|&#039;&#039;nuarigi&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|chaos adjectives&lt;br /&gt;
|&#039;&#039;siréx, siréghi&#039;&#039; &#039;watchful&#039;&lt;br /&gt;
|&#039;&#039;-e&#039;&#039;&lt;br /&gt;
|&#039;&#039;-o&#039;&#039;&lt;br /&gt;
|&#039;&#039;-e&#039;&#039;&lt;br /&gt;
|&#039;&#039;-o&#039;&#039;&lt;br /&gt;
|&#039;&#039;scirege&#039;&#039;&lt;br /&gt;
|&#039;&#039;sciregio&#039;&#039;&lt;br /&gt;
|&#039;&#039;scirege&#039;&#039;&lt;br /&gt;
|&#039;&#039;sciregio&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Degrees of comparison ===&lt;br /&gt;
Femps adjectives have two degrees of comparison: comparative and superaltive.&lt;br /&gt;
&lt;br /&gt;
The comparative is formed by attaching the suffix &#039;&#039;-iroce&#039;&#039; to the adjectival root, for instance:&lt;br /&gt;
&lt;br /&gt;
* (&#039;&#039;&#039;&#039;&#039;ciorio&#039;&#039;&#039;&#039;&#039; &#039;good&#039;) &#039;&#039;Emme &#039;&#039;&#039;cioriroce&#039;&#039;&#039; da sy.&#039;&#039; (&#039;I am &#039;&#039;&#039;better&#039;&#039;&#039; than you&#039;)&lt;br /&gt;
* (&#039;&#039;&#039;&#039;&#039;egio&#039;&#039;&#039;&#039;&#039; &#039;tall&#039;) &#039;&#039;Y né sceö cono &#039;&#039;&#039;egiroce&#039;&#039;&#039;.&#039;&#039; (&#039;There is a &#039;&#039;&#039;taller&#039;&#039;&#039; man&#039;)&lt;br /&gt;
&lt;br /&gt;
The superlative is formed by attaching the suffix &#039;&#039;-isto&#039;&#039; to the adjectival root, for instance:&lt;br /&gt;
* (&#039;&#039;&#039;&#039;&#039;ciorio&#039;&#039;&#039;&#039;&#039; &#039;good&#039;) &#039;&#039;Emme &#039;&#039;&#039;cioristo&#039;&#039;&#039; li plittire.&#039;&#039; (&#039;I am &#039;&#039;&#039;the best&#039;&#039;&#039; at swimming&#039;)&lt;br /&gt;
* (&#039;&#039;&#039;&#039;&#039;egio&#039;&#039;&#039;&#039;&#039; &#039;tall&#039;) &#039;&#039;Né ho cono &#039;&#039;&#039;egisto&#039;&#039;&#039;.&#039;&#039; (&#039;This is the tallest man&#039;)&lt;br /&gt;
&lt;br /&gt;
== Verbs ==&lt;br /&gt;
Almost all Femps verbs can be assigned into three conjugation patterns based on its infinitive endings (&#039;&#039;-an, -on, -in&#039;&#039;), except for the verb &#039;&#039;entci&#039;&#039; &#039;to be&#039;, and several other verbs with irregular past tense stems inherited from High Ciána.&lt;br /&gt;
&lt;br /&gt;
=== Simple tenses ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&#039;&#039;orgon&#039;&#039; &#039;to do&#039;&lt;br /&gt;
!Tense&lt;br /&gt;
!Femps name&lt;br /&gt;
!Example&lt;br /&gt;
!Translation&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |Indicative Mood&lt;br /&gt;
|-&lt;br /&gt;
!Present&lt;br /&gt;
|&#039;&#039;mancedrigio&#039;&#039;&lt;br /&gt;
|&#039;&#039;orgo&#039;&#039;&lt;br /&gt;
|I do&lt;br /&gt;
I am doing&lt;br /&gt;
|-&lt;br /&gt;
!Imperfect&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;orgio&#039;&#039;&lt;br /&gt;
|I was doing&lt;br /&gt;
I used to do&lt;br /&gt;
|-&lt;br /&gt;
!Future&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;orgotci&#039;&#039;&lt;br /&gt;
|I will do&lt;br /&gt;
|-&lt;br /&gt;
!Remote Past (Perfect)&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;orgú&#039;&#039;&lt;br /&gt;
|I did&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |Subjunctive&lt;br /&gt;
|-&lt;br /&gt;
!Present&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;orgore&#039;&#039;&lt;br /&gt;
|I do&lt;br /&gt;
I am doing&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |Imperative&lt;br /&gt;
|-&lt;br /&gt;
!Present&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;orga&#039;&#039;&lt;br /&gt;
|Do it!&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Language guides]]&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Aglisic_script&amp;diff=3461</id>
		<title>Aglisic script</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Aglisic_script&amp;diff=3461"/>
		<updated>2026-01-08T09:49:45Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Aglisic script&#039;&#039;&#039;, (from High Ciána {{Cs|ciana|êþíos áglisa}} &#039;&#039;êthíos áglisa&#039;&#039; &#039;steppe alphabet&#039;)&lt;br /&gt;
&lt;br /&gt;
== Chart ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:90%&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Letter&lt;br /&gt;
!Codepoint&lt;br /&gt;
!Name in High Ciána&lt;br /&gt;
!Romanization&lt;br /&gt;
!Phoneme&lt;br /&gt;
!High Ciána value&lt;br /&gt;
!Aracinian&amp;lt;br&amp;gt;value&lt;br /&gt;
!Lailian&amp;lt;br&amp;gt;value&lt;br /&gt;
!Voylvurlic&amp;lt;br&amp;gt;value&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|a}}&lt;br /&gt;
|a&lt;br /&gt;
|{{Cs|ciana|á}}&lt;br /&gt;
|&#039;&#039;á&#039;&#039; &lt;br /&gt;
|/a/&lt;br /&gt;
|[a]&lt;br /&gt;
|[a]&lt;br /&gt;
|[a]&lt;br /&gt;
|[a]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|æ}}&lt;br /&gt;
|æ&lt;br /&gt;
|{{Cs|ciana|émeitra}}&lt;br /&gt;
|&#039;&#039;émeitra&#039;&#039;&lt;br /&gt;
|/ɛ/&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|[ɛ]&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|å}}&lt;br /&gt;
|å&lt;br /&gt;
|{{Cs|ciana|ómeitra}}&lt;br /&gt;
|&#039;&#039;ómeitra&#039;&#039;&lt;br /&gt;
|/ɔ/&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|[ɔ]&lt;br /&gt;
|[ɔ]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|k}}&lt;br /&gt;
|k&lt;br /&gt;
|{{Cs|ciana|ké}}&lt;br /&gt;
|&#039;&#039;cé&#039;&#039;&lt;br /&gt;
|/k/, /ts/, /s/&lt;br /&gt;
|[k]&lt;br /&gt;
|[k]&lt;br /&gt;
|[k]&lt;br /&gt;
|[k]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|x}}&lt;br /&gt;
|x&lt;br /&gt;
|{{Cs|ciana|óx}}&lt;br /&gt;
|&#039;&#039;óch&#039;&#039;&lt;br /&gt;
|/x/, /h/&lt;br /&gt;
|[x]&lt;br /&gt;
|[x]&lt;br /&gt;
|[x]&lt;br /&gt;
|[h]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|č}}&lt;br /&gt;
|č&lt;br /&gt;
|{{Cs|ciana|té}}&lt;br /&gt;
|&#039;&#039;té&#039;&#039;&lt;br /&gt;
|/tɕ/&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|[tʃ]&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|[tɕ]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|s}}&lt;br /&gt;
|s&lt;br /&gt;
|{{Cs|ciana|saé}}&lt;br /&gt;
|&#039;&#039;saé&#039;&#039;&lt;br /&gt;
|/s/&lt;br /&gt;
|[s]~[ɕ]&lt;br /&gt;
|[s]~[ʃ]&lt;br /&gt;
|[s]&lt;br /&gt;
|[s]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|š}}&lt;br /&gt;
|š&lt;br /&gt;
|{{Cs|ciana|sé}}&lt;br /&gt;
|&#039;&#039;sé&#039;&#039;&lt;br /&gt;
|/ɕ/&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|[ɕ]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|n}}&lt;br /&gt;
|n&lt;br /&gt;
|{{Cs|ciana|nén}}&lt;br /&gt;
|&#039;&#039;nén&#039;&#039;&lt;br /&gt;
|/n/&lt;br /&gt;
|[n]~[ŋ]~[Ṽ]&lt;br /&gt;
|[n]~[ŋ]&lt;br /&gt;
|[n]&lt;br /&gt;
|[n]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|ñ}}&lt;br /&gt;
|ñ&lt;br /&gt;
|{{Cs|ciana|nhén}}&lt;br /&gt;
|&#039;&#039;nhén&#039;&#039;&lt;br /&gt;
|/ɲ/&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|[ɲ]&lt;br /&gt;
|[j]&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|ŋ}}&lt;br /&gt;
|ŋ&lt;br /&gt;
|{{Cs|ciana|ngénk}}&lt;br /&gt;
|&#039;&#039;ngénc&#039;&#039;&lt;br /&gt;
|/ŋ/&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|[ŋ]&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|p}}&lt;br /&gt;
|p&lt;br /&gt;
|{{Cs|ciana|pé}}&lt;br /&gt;
|&#039;&#039;pé&#039;&#039;&lt;br /&gt;
|/p/&lt;br /&gt;
|[p]&lt;br /&gt;
|[p]&lt;br /&gt;
|[p]&lt;br /&gt;
|[p]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|t}}&lt;br /&gt;
|t&lt;br /&gt;
|{{Cs|ciana|taé}}&lt;br /&gt;
|&#039;&#039;taé&#039;&#039;&lt;br /&gt;
|/t/&lt;br /&gt;
|[t]~[tɕ]&lt;br /&gt;
|[t]&lt;br /&gt;
|[t]&lt;br /&gt;
|[t]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|þ}}&lt;br /&gt;
|þ&lt;br /&gt;
|{{Cs|ciana|þé}}&lt;br /&gt;
|&#039;&#039;thé&#039;&#039;&lt;br /&gt;
|/θ/&lt;br /&gt;
|[θ]&lt;br /&gt;
|[t]~[s]~[∅]&lt;br /&gt;
|[s]&lt;br /&gt;
|[θ]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|c}}&lt;br /&gt;
|c&lt;br /&gt;
|{{Cs|ciana|itsaé}}&lt;br /&gt;
|&#039;&#039;itsaé&#039;&#039;&lt;br /&gt;
|/ts/&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|[ts]&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|i}}&lt;br /&gt;
|i&lt;br /&gt;
|{{Cs|ciana|í}}&lt;br /&gt;
|&#039;&#039;í&#039;&#039;&lt;br /&gt;
|/i/&lt;br /&gt;
|[i]&lt;br /&gt;
|[i]&lt;br /&gt;
|[i]&lt;br /&gt;
|[i]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|f}}&lt;br /&gt;
|f&lt;br /&gt;
|{{Cs|ciana|fé}}&lt;br /&gt;
|&#039;&#039;fé&#039;&#039;&lt;br /&gt;
|/f/&lt;br /&gt;
|[f]&lt;br /&gt;
|[f]&lt;br /&gt;
|[f]&lt;br /&gt;
|[f]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|g}}&lt;br /&gt;
|g&lt;br /&gt;
|{{Cs|ciana|gé}}&lt;br /&gt;
|&#039;&#039;gé&#039;&#039;&lt;br /&gt;
|/g/&lt;br /&gt;
|[g]&lt;br /&gt;
|[g]&lt;br /&gt;
|[g]&lt;br /&gt;
|[g]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|dz}}&lt;br /&gt;
|dz&lt;br /&gt;
|{{Cs|ciana|idsaé}}&lt;br /&gt;
|&#039;&#039;idsaé&#039;&#039;&lt;br /&gt;
|/dz/&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|dž}}&lt;br /&gt;
|dž&lt;br /&gt;
|{{Cs|ciana|dé}}&lt;br /&gt;
|&#039;&#039;dé&#039;&#039;&lt;br /&gt;
|/dʑ/&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|[dʒ]&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|z}}&lt;br /&gt;
|z&lt;br /&gt;
|{{Cs|ciana|isaé}}&lt;br /&gt;
|&#039;&#039;isaé&#039;&#039;&lt;br /&gt;
|/z/&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|[z]~[ʒ]&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|[z]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|ž}}&lt;br /&gt;
|ž&lt;br /&gt;
|{{Cs|ciana|isé}}&lt;br /&gt;
|&#039;&#039;isé&#039;&#039;&lt;br /&gt;
|/ʑ/&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|[ʑ]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|m}}&lt;br /&gt;
|m&lt;br /&gt;
|{{Cs|ciana|mém}}&lt;br /&gt;
|&#039;&#039;mém&#039;&#039;&lt;br /&gt;
|/m/&lt;br /&gt;
|[m]~[Ṽ]&lt;br /&gt;
|[m]&lt;br /&gt;
|[m]&lt;br /&gt;
|[m]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|b}}&lt;br /&gt;
|b&lt;br /&gt;
|{{Cs|ciana|bé}}&lt;br /&gt;
|&#039;&#039;bé&#039;&#039;&lt;br /&gt;
|/b/&lt;br /&gt;
|[b]&lt;br /&gt;
|[b]&lt;br /&gt;
|[b]&lt;br /&gt;
|[b]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|d}}&lt;br /&gt;
|d&lt;br /&gt;
|{{Cs|ciana|daé}}&lt;br /&gt;
|&#039;&#039;daé&#039;&#039;&lt;br /&gt;
|/d/&lt;br /&gt;
|[d]~[dʑ]&lt;br /&gt;
|[d]&lt;br /&gt;
|[d]&lt;br /&gt;
|[d]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|ð}}&lt;br /&gt;
|ð&lt;br /&gt;
|{{Cs|ciana|ðé}}&lt;br /&gt;
|&#039;&#039;dhé&#039;&#039;&lt;br /&gt;
|/ð/&lt;br /&gt;
|[ð]&lt;br /&gt;
|[d]~[z]~[∅]&lt;br /&gt;
|[z]&lt;br /&gt;
|[ð]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|o}}&lt;br /&gt;
|o&lt;br /&gt;
|{{Cs|ciana|ó}}&lt;br /&gt;
|&#039;&#039;ó&#039;&#039;&lt;br /&gt;
|/o/&lt;br /&gt;
|[o]&lt;br /&gt;
|[o]&lt;br /&gt;
|[u]&lt;br /&gt;
|[o]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|l}}&lt;br /&gt;
|l&lt;br /&gt;
|{{Cs|ciana|lól}}&lt;br /&gt;
|&#039;&#039;lól&#039;&#039;&lt;br /&gt;
|/l/&lt;br /&gt;
|[l]&lt;br /&gt;
|[l]&lt;br /&gt;
|[l]&lt;br /&gt;
|[l]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|r}}&lt;br /&gt;
|r&lt;br /&gt;
|{{Cs|ciana|rór}}&lt;br /&gt;
|&#039;&#039;rór&#039;&#039;&lt;br /&gt;
|/r/&lt;br /&gt;
|[r]&lt;br /&gt;
|[r]&lt;br /&gt;
|[r]&lt;br /&gt;
|[r]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|h}}&lt;br /&gt;
|h&lt;br /&gt;
|{{Cs|ciana|ôú}}&lt;br /&gt;
|&#039;&#039;ôú&#039;&#039;&lt;br /&gt;
|/h/, &#039;&#039;modifier letter&#039;&#039;&lt;br /&gt;
|[∅]&lt;br /&gt;
|[∅]&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|&#039;&#039;denotes a long vowel&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|v}}&lt;br /&gt;
|v&lt;br /&gt;
|{{Cs|ciana|vé}}&lt;br /&gt;
|&#039;&#039;vé&#039;&#039;&lt;br /&gt;
|/v/&lt;br /&gt;
|[v]&lt;br /&gt;
|[v]&lt;br /&gt;
|[v]&lt;br /&gt;
|[v]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|u}}&lt;br /&gt;
|u&lt;br /&gt;
|{{Cs|ciana|óu}}&lt;br /&gt;
|&#039;&#039;óu&#039;&#039;&lt;br /&gt;
|/y/, /u/&lt;br /&gt;
|[y]~[u]&lt;br /&gt;
|[u]&lt;br /&gt;
|[y]&lt;br /&gt;
|[u]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|y}}&lt;br /&gt;
|y&lt;br /&gt;
|{{Cs|ciana|yáy}}&lt;br /&gt;
|&#039;&#039;yáy&#039;&#039;&lt;br /&gt;
|/j/&lt;br /&gt;
|[j]&lt;br /&gt;
|[j]&lt;br /&gt;
|[y]&lt;br /&gt;
|[j]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|e}}&lt;br /&gt;
|e&lt;br /&gt;
|{{Cs|ciana|é}}&lt;br /&gt;
|&#039;&#039;é&#039;&#039;&lt;br /&gt;
|/e/&lt;br /&gt;
|[e]&lt;br /&gt;
|[ə]&lt;br /&gt;
|[e]&lt;br /&gt;
|[e]&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|w}}&lt;br /&gt;
|w&lt;br /&gt;
|{{Cs|ciana|mháu}}&lt;br /&gt;
|&#039;&#039;mháu&#039;&#039;&lt;br /&gt;
|/w/&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|[ɰ]&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|ks}}&lt;br /&gt;
|ks&lt;br /&gt;
|{{Cs|ciana|éksa}}&lt;br /&gt;
|&#039;&#039;éxa&#039;&#039;&lt;br /&gt;
|/ks/&lt;br /&gt;
|[ks]~[kɕ]&lt;br /&gt;
|&#039;&#039;loan words&#039;&#039;&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|ps}}&lt;br /&gt;
|ps&lt;br /&gt;
|{{Cs|ciana|épsa}}&lt;br /&gt;
|&#039;&#039;épsa&#039;&#039;&lt;br /&gt;
|/ps/&lt;br /&gt;
|[ps]~[pɕ]&lt;br /&gt;
|[ps]&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|&#039;&#039;not used&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diacritcs (with letter a) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Letter&lt;br /&gt;
!Codepoint&lt;br /&gt;
!Name in High Ciána&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|á}}&lt;br /&gt;
|á&lt;br /&gt;
|&#039;&#039;á issíba&#039;&#039;&lt;br /&gt;
|stress, high pitch&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|à}}&lt;br /&gt;
|à&lt;br /&gt;
|&#039;&#039;á nóuva&#039;&#039;&lt;br /&gt;
|low pitch&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|ä}}&lt;br /&gt;
|ä&lt;br /&gt;
|&#039;&#039;á âgesmeta&#039;&#039;&lt;br /&gt;
|vowel separation&lt;br /&gt;
|-&lt;br /&gt;
|{{Cs|ciana|â}}&lt;br /&gt;
|â&lt;br /&gt;
|&#039;&#039;á braêliöna&#039;&#039;&lt;br /&gt;
|vowel is preaspirated with /h-/&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripts]]&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Aracinia&amp;diff=3444</id>
		<title>Aracinia</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Aracinia&amp;diff=3444"/>
		<updated>2026-01-07T09:20:53Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox country&lt;br /&gt;
|conventional_long_name=Republic of Aracinia&lt;br /&gt;
|native_name={{cs|ciana|ünciné haraxiñes}}&amp;lt;br&amp;gt;&#039;&#039;Ynciné Harachinies&#039;&#039;&lt;br /&gt;
|image_flag=Aracinia flag.png&lt;br /&gt;
|image_coat=Aracinia coa.png&lt;br /&gt;
|common_name=Aracinia&lt;br /&gt;
|capital=[[Miënnaí]]&lt;br /&gt;
|largest_city=&lt;br /&gt;
|official_languages=[[Aracinian language|Aracinian]]&lt;br /&gt;
|common_languages=&lt;br /&gt;
|religion=[[Fthocrithrís]]&lt;br /&gt;
|demonym=Aracinian&lt;br /&gt;
|national_anthem=&lt;br /&gt;
|leader_title1=President&lt;br /&gt;
|leader_name1=Name Nameson&lt;br /&gt;
|leader_title2=[[Yóncler|Ionche]]&lt;br /&gt;
|leader_name2=[[Ierdu Achstis]]&lt;br /&gt;
|government_type=[[Wikipedia:Unitary state|Unitary]] [[Wikipedia:Parliamentary system|parliamentary republic]]&lt;br /&gt;
|established_event1 = Grand Duchy of Aracinia&lt;br /&gt;
|established_date1 = 1XXX&lt;br /&gt;
|established_event2 = Independence from [[Sensuîerreí]]&lt;br /&gt;
|established_date2 = 1956&lt;br /&gt;
|area_km2 = 62330&lt;br /&gt;
|population_estimate = &lt;br /&gt;
|population_estimate_year = &lt;br /&gt;
|population_census = &lt;br /&gt;
|population_census_year = &lt;br /&gt;
|population_density_km2 = &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aracinia&#039;&#039;&#039; ({{small|[[Aracinian language|Aracinian]]}}: {{cs|ciana|haraxiñ}} &#039;&#039;Harachin&#039;&#039;), officially the &#039;&#039;&#039;Republic of Aracinia&#039;&#039;&#039; ({{small|[[Aracinian language|Aracinian]]}}: {{cs|ciana|ünciné haraxiñes}} &#039;&#039;Ynciné Harachinies&#039;&#039;) is a sovereign country in [[Sharrat]]. It borders [[Sensuîerreí]] and [[Briginthië|Briginthia]] to the south, [[Farsis]] to the west and [[Norairianguk]] to the north. Aracinia is bordered by the [[Melóryan Sea]], which connects to the [[Idrisiuchian Sea]] and many important trade routes in the region.&lt;br /&gt;
&lt;br /&gt;
==Name==&lt;br /&gt;
The name &#039;&#039;Aracinia&#039;&#039; is an anglicization of [[Aracinian language|Aracinian]] &#039;&#039;Harachin&#039;&#039;. The word is directly inherited from [[High Ciána language|High Ciána]] &#039;&#039;Âracinië&#039;&#039;, which ultimately comes from a substrate language, reconstructed as &#039;&#039;*xarākīnej-&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
===Early history===&lt;br /&gt;
===Medieval period===&lt;br /&gt;
===Early modern period===&lt;br /&gt;
===Independence===&lt;br /&gt;
{{main|Pagan Revolution}}&lt;br /&gt;
&lt;br /&gt;
==Geography==&lt;br /&gt;
===Climate===&lt;br /&gt;
===Biodiversity===&lt;br /&gt;
&lt;br /&gt;
==Politics==&lt;br /&gt;
===Government===&lt;br /&gt;
===Administrative divisions===&lt;br /&gt;
===Foreign relations===&lt;br /&gt;
===Military===&lt;br /&gt;
&lt;br /&gt;
==Economy==&lt;br /&gt;
===Transport===&lt;br /&gt;
===Energy===&lt;br /&gt;
===Science and technology===&lt;br /&gt;
===Tourism===&lt;br /&gt;
&lt;br /&gt;
==Demographics==&lt;br /&gt;
===Ethnic groups===&lt;br /&gt;
===Urbanization===&lt;br /&gt;
===Language===&lt;br /&gt;
===Education===&lt;br /&gt;
===Healthcare===&lt;br /&gt;
===Religion===&lt;br /&gt;
[[Fthocrithrís]] remains the dominant religion in Aracinia. Although it has no official status by law, it is heavily promoted by government institutions and religion and ethics classes are part of every public school&#039;s mandatory curriculum. According to a 1992 study, about 63% of Aracinians self-identify as Fthocrithrists, 13% as [[Hanctheism|Hanctheists]], 10% other faiths and about 14% identify with no religion. Fthocrithrís has long been the majority religion in the country, which has historically contrasted with Hanctheism as a state religion. Following Aracinia&#039;s independence, Hanctheism was no longer defined by law as the state religion which led to a steady decline in followers in the country.&lt;br /&gt;
&lt;br /&gt;
==Culture==&lt;br /&gt;
===Literature===&lt;br /&gt;
===Art===&lt;br /&gt;
===Sport===&lt;br /&gt;
===Symbols===&lt;br /&gt;
&lt;br /&gt;
[[Category:Countries]]&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Aracinia&amp;diff=3443</id>
		<title>Aracinia</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Aracinia&amp;diff=3443"/>
		<updated>2026-01-07T09:20:07Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox country&lt;br /&gt;
|conventional_long_name=Republic of Aracinia&lt;br /&gt;
|native_name={{cs|ciana|ünciné haraxinyes}}&amp;lt;br&amp;gt;&#039;&#039;Ynciné Harachinies&#039;&#039;&lt;br /&gt;
|image_flag=Aracinia flag.png&lt;br /&gt;
|image_coat=Aracinia coa.png&lt;br /&gt;
|common_name=Aracinia&lt;br /&gt;
|capital=[[Miënnaí]]&lt;br /&gt;
|largest_city=&lt;br /&gt;
|official_languages=[[Aracinian language|Aracinian]]&lt;br /&gt;
|common_languages=&lt;br /&gt;
|religion=[[Fthocrithrís]]&lt;br /&gt;
|demonym=Aracinian&lt;br /&gt;
|national_anthem=&lt;br /&gt;
|leader_title1=President&lt;br /&gt;
|leader_name1=Name Nameson&lt;br /&gt;
|leader_title2=[[Yóncler|Ionche]]&lt;br /&gt;
|leader_name2=[[Ierdu Achstis]]&lt;br /&gt;
|government_type=[[Wikipedia:Unitary state|Unitary]] [[Wikipedia:Parliamentary system|parliamentary republic]]&lt;br /&gt;
|established_event1 = Grand Duchy of Aracinia&lt;br /&gt;
|established_date1 = 1XXX&lt;br /&gt;
|established_event2 = Independence from [[Sensuîerreí]]&lt;br /&gt;
|established_date2 = 1956&lt;br /&gt;
|area_km2 = 62330&lt;br /&gt;
|population_estimate = &lt;br /&gt;
|population_estimate_year = &lt;br /&gt;
|population_census = &lt;br /&gt;
|population_census_year = &lt;br /&gt;
|population_density_km2 = &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aracinia&#039;&#039;&#039; ({{small|[[Aracinian language|Aracinian]]}}: {{cs|ciana|haraxiñ}} &#039;&#039;Harachin&#039;&#039;), officially the &#039;&#039;&#039;Republic of Aracinia&#039;&#039;&#039; ({{small|[[Aracinian language|Aracinian]]}}: {{cs|ciana|ünciné haraxiñes}} &#039;&#039;Ynciné Harachinies&#039;&#039;) is a sovereign country in [[Sharrat]]. It borders [[Sensuîerreí]] and [[Briginthië|Briginthia]] to the south, [[Farsis]] to the west and [[Norairianguk]] to the north. Aracinia is bordered by the [[Melóryan Sea]], which connects to the [[Idrisiuchian Sea]] and many important trade routes in the region.&lt;br /&gt;
&lt;br /&gt;
==Name==&lt;br /&gt;
The name &#039;&#039;Aracinia&#039;&#039; is an anglicization of [[Aracinian language|Aracinian]] &#039;&#039;Harachin&#039;&#039;. The word is directly inherited from [[High Ciána language|High Ciána]] &#039;&#039;Âracinië&#039;&#039;, which ultimately comes from a substrate language, reconstructed as &#039;&#039;*xarākīnej-&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
===Early history===&lt;br /&gt;
===Medieval period===&lt;br /&gt;
===Early modern period===&lt;br /&gt;
===Independence===&lt;br /&gt;
{{main|Pagan Revolution}}&lt;br /&gt;
&lt;br /&gt;
==Geography==&lt;br /&gt;
===Climate===&lt;br /&gt;
===Biodiversity===&lt;br /&gt;
&lt;br /&gt;
==Politics==&lt;br /&gt;
===Government===&lt;br /&gt;
===Administrative divisions===&lt;br /&gt;
===Foreign relations===&lt;br /&gt;
===Military===&lt;br /&gt;
&lt;br /&gt;
==Economy==&lt;br /&gt;
===Transport===&lt;br /&gt;
===Energy===&lt;br /&gt;
===Science and technology===&lt;br /&gt;
===Tourism===&lt;br /&gt;
&lt;br /&gt;
==Demographics==&lt;br /&gt;
===Ethnic groups===&lt;br /&gt;
===Urbanization===&lt;br /&gt;
===Language===&lt;br /&gt;
===Education===&lt;br /&gt;
===Healthcare===&lt;br /&gt;
===Religion===&lt;br /&gt;
[[Fthocrithrís]] remains the dominant religion in Aracinia. Although it has no official status by law, it is heavily promoted by government institutions and religion and ethics classes are part of every public school&#039;s mandatory curriculum. According to a 1992 study, about 63% of Aracinians self-identify as Fthocrithrists, 13% as [[Hanctheism|Hanctheists]], 10% other faiths and about 14% identify with no religion. Fthocrithrís has long been the majority religion in the country, which has historically contrasted with Hanctheism as a state religion. Following Aracinia&#039;s independence, Hanctheism was no longer defined by law as the state religion which led to a steady decline in followers in the country.&lt;br /&gt;
&lt;br /&gt;
==Culture==&lt;br /&gt;
===Literature===&lt;br /&gt;
===Art===&lt;br /&gt;
===Sport===&lt;br /&gt;
===Symbols===&lt;br /&gt;
&lt;br /&gt;
[[Category:Countries]]&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Ierdu_Achstis&amp;diff=3426</id>
		<title>Ierdu Achstis</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Ierdu_Achstis&amp;diff=3426"/>
		<updated>2026-01-05T11:59:59Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox officeholder&lt;br /&gt;
|name=Ierdu Achstis&lt;br /&gt;
|honorific_prefix=His Excellency&lt;br /&gt;
|image name=Ierdu Achstis.jpg&lt;br /&gt;
|caption=Achstis in 1994&lt;br /&gt;
|image_size=200px&lt;br /&gt;
|native_name={{cs|ciana|axstis yerdu}}&lt;br /&gt;
|office=Ionche of Aracinia&lt;br /&gt;
|term=1992 –&lt;br /&gt;
|order=11th&lt;br /&gt;
|predecessor=[[Voḑachs Loris]]&lt;br /&gt;
|birth_date={{birth date|1937|2|6|df=yes}}&lt;br /&gt;
|party=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ierdu Achstis&#039;&#039;&#039; ({{small|[[Aracinian language|Aracinian]]}}: {{cs|ciana|axstis yerdu}} [axˈʃis ˈjərdu], {{small|[[High Ciána language|High Ciána]]}}: {{cs|ciana|aksþís yéardor}} [aksˈθis ˈjerdor]; born 6 February 1937) is an Aracinian politician serving as [[Ionche of Aracinia]] since D M 1992. He has also served as leader of [Party] since April 1990.&lt;br /&gt;
&lt;br /&gt;
[[Category:People]][[Category:Politicians]]&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=File:Aracinia_coa.png&amp;diff=3425</id>
		<title>File:Aracinia coa.png</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=File:Aracinia_coa.png&amp;diff=3425"/>
		<updated>2026-01-05T10:55:41Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: Roxanne uploaded a new version of File:Aracinia coa.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=File:Aracinia_flag.png&amp;diff=3424</id>
		<title>File:Aracinia flag.png</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=File:Aracinia_flag.png&amp;diff=3424"/>
		<updated>2026-01-05T10:55:26Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: Roxanne uploaded a new version of File:Aracinia flag.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Lail%C3%A9os_I&amp;diff=3423</id>
		<title>Lailéos I</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Lail%C3%A9os_I&amp;diff=3423"/>
		<updated>2026-01-05T09:20:37Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox officeholder|image=LaileosI.png|honorific prefix=His Majesty|name=Lailéos I|imagesize=200|spouse=}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lailéos I&#039;&#039;&#039; (High Ciána: [le.ˈleu̯s ˈli.jor]) is the founding [[archaegus]] of [[Sensuîerreí]].&lt;br /&gt;
&lt;br /&gt;
[[Category:People]][[Category:Monarchs]]&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Government_of_Sensu%C3%AEerre%C3%AD&amp;diff=3300</id>
		<title>Government of Sensuîerreí</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Government_of_Sensu%C3%AEerre%C3%AD&amp;diff=3300"/>
		<updated>2025-12-21T13:37:06Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Infobox executive government&lt;br /&gt;
 | government_name = Government of Sensuîerreí&lt;br /&gt;
 | nativename = [[High Ciána]]: Biomhë Sensuîerréo&lt;br /&gt;
 | border = Central&lt;br /&gt;
 | image = govsensu.png&lt;br /&gt;
 | image_size = 200&lt;br /&gt;
 | state = [[Sensuîerreí]]&lt;br /&gt;
 | leader_title = [[Yóncler]]&lt;br /&gt;
 | appointed = [[Archaegus]] ([[Âns I]])&lt;br /&gt;
 | main_organ = Cabinet of Sensuîerreí&lt;br /&gt;
 | responsible = [[Imfól]]&lt;br /&gt;
 | background_color = #13357a&lt;br /&gt;
 }}&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Government of Sensuîerreí&#039;&#039;&#039; is.&lt;br /&gt;
&lt;br /&gt;
[[Category:Governments]]&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Imf%C3%B3l&amp;diff=3299</id>
		<title>Imfól</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Imf%C3%B3l&amp;diff=3299"/>
		<updated>2025-12-21T13:36:50Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Imfól&#039;&#039;&#039;, officially &#039;&#039;&#039;His Majesty&#039;s Imfól&#039;&#039;&#039; (High Ciána: &#039;&#039;Imfól Taicéodi Nayoí&#039;&#039;) is the parliament of [[Sensuîerreí]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Parliaments]]&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Kwang_people&amp;diff=3298</id>
		<title>Kwang people</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Kwang_people&amp;diff=3298"/>
		<updated>2025-12-21T13:36:26Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox ethnic group|group=Kwang people / Hiang people|native_name=Kwan / Hèin|population=c. 1.03 billion}}&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Kwang&#039;&#039;&#039; &#039;&#039;&#039;people&#039;&#039;&#039; (&amp;lt;small&amp;gt;Kwang:&amp;lt;/small&amp;gt; &#039;&#039;ngeiq Kwan&#039;&#039;), officially recognized by the [[Qonklaks|Qonklese]] government as the &#039;&#039;&#039;Hiang people&#039;&#039;&#039; (&amp;lt;small&amp;gt;Kwang:&amp;lt;/small&amp;gt; &#039;&#039;ngeiq Hèin&#039;&#039;, lit. &#039;people of the [[Hiang]]) are a Southern Tammuz ethnic group who speak [[Kwang language|Kwang]], the most widely spoken Macro-Kwang language. They make up 91% percent of the population in [[Qonklaks]].&lt;br /&gt;
&lt;br /&gt;
== Terminology ==&lt;br /&gt;
&lt;br /&gt;
=== Kwang ===&lt;br /&gt;
Prior to the founding of cenonist Qonklaks, the most common term referring to this group was &#039;&#039;Kwan&#039;&#039;, the same ethnonym found in the Kwang word for Qonklaks, &#039;&#039;Kwai Kwan&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Hiang ===&lt;br /&gt;
In 1950, the cenonist government, in an effort to distance itself from the nationalist and Kwang superiority attitudes of [[Qonklese Empire|imperial Qonklaks]], officially recognized X ethnic groups in the country, whose dignities are enshrined in the constitution. As having an ethnonym &#039;&#039;Kwan&#039;&#039; in the name of the country would inadvertently signal the elevation of one ethnic group as more important over others, the government officially classifies the Kwang people with the ethnonym &#039;&#039;&#039;Hiang&#039;&#039;&#039; (&amp;lt;small&amp;gt;Kwang:&amp;lt;/small&amp;gt; &#039;&#039;Hèin&#039;&#039;), harkening back to the Hiang dynasty, the polity most commonly attributed for the birth of Qonklese culture.&lt;br /&gt;
&lt;br /&gt;
[[Category:Ethnic groups]]&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Quinticolor&amp;diff=3264</id>
		<title>Quinticolor</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Quinticolor&amp;diff=3264"/>
		<updated>2025-12-17T11:04:37Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox flag&lt;br /&gt;
| Name = Quinticolor&lt;br /&gt;
| Image = 1975qonkflag.png&lt;br /&gt;
| Proportion = 1:2&lt;br /&gt;
| Adoption = 1975&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Quinticolor&#039;&#039;&#039; is the official flag of [[Qonklaks]] since 1975.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
The Quinticolor was first adopted by the [[People&#039;s Republic of Qonklaks]] in 1942. The colour of the second stripe was a deep black, unlike the modern dark grey. The top left corner was instead occupied by the symbol of the 88th Division, two u-shaped symbols.&lt;br /&gt;
&lt;br /&gt;
The Quinticolor, being itself originally a military banner co-opted for the PRQ, was deemed to be ideologically inappropriate for a post-war nation committed to peace. A contest was held in September 1949 to design a new flag for the country. A total of 22 finalists was presented to [[Mheiq Ku]], who initially selected Proposal 12 as he personally favoured the Quinticolor. However, pressure to align with worldwide cenonist movements compelled Mheiq Ku to eventually select Proposal 8, the Yellow Banner.[[File:PRQ.png|thumb|150x150px|The Quinticolor of the [[People&#039;s Republic of Qonklaks|PRQ]]|center]]&lt;br /&gt;
== Switch to the Yellow Banner ==&lt;br /&gt;
The flag of [[Qonklaks]] from 1950 to 1975 was the Yellow Banner.&lt;br /&gt;
[[File:Qonkflag.png|thumb|150x150px|The Yellow Banner (1950-1975)|center]]&lt;br /&gt;
&lt;br /&gt;
== Colours ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Hexcode&lt;br /&gt;
|#AF2626&lt;br /&gt;
|#31383A&lt;br /&gt;
|#FFFFFF&lt;br /&gt;
|#05406F&lt;br /&gt;
|#FFAD4B&lt;br /&gt;
|-&lt;br /&gt;
!True RBG&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#ab0000; color:white;&amp;quot; | Red&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#313032; color:white;&amp;quot; | Grey&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#ffffff; color:black;&amp;quot; | White&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#05406f; color:white;&amp;quot; | Blue&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#ffad00; color:black;&amp;quot; | Yellow&lt;br /&gt;
|-&lt;br /&gt;
!Pantone&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#af2626; color:white;&amp;quot; | Pantone 1805&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#31383a; color:white;&amp;quot; | Pantone 433&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#ffffff; color:black;&amp;quot; | Safe&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#004677; color:white;&amp;quot; | Pantone 2187 C&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#ffad4b; color:black;&amp;quot; | Pantone 1365 C&lt;br /&gt;
|}&lt;br /&gt;
The dimensions, construction, and the colours of the flag are outlined in the [[Flag Code of Union of Democratic Revolutionary Qonklaks]][[File:Quinticolor1990.jpg|center|thumb|The Quinticolor in 1976]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Flags]]&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=L%C3%BAeringwan_K%C3%BAeth%C3%ADxing&amp;diff=3263</id>
		<title>Lúeringwan Kúethíxing</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=L%C3%BAeringwan_K%C3%BAeth%C3%ADxing&amp;diff=3263"/>
		<updated>2025-12-17T11:04:12Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox person|image=leuringwan.png|image size=200px|name=Lúeringwan Kúethíxing}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lúeringwan Kúethíxing&#039;&#039;&#039; (&amp;lt;small&amp;gt;[[Thullumite]]&amp;lt;/small&amp;gt;: [ˈlyːɾɪŋvɑn ˈkyːʰθiːksɪŋ]) was a 19th century [[Thullumia|Thullum]] philosopher and thinker, most noted for writing [[In Praise Not of God, nor King, nor Wealth|&#039;&#039;In Praise Not of God, nor King, nor Wealth&#039;&#039;]] and the &#039;&#039;[[Introduction to Cenonist Thought]]&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Category:People]]&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Duchy_of_Thullumia&amp;diff=3262</id>
		<title>Duchy of Thullumia</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Duchy_of_Thullumia&amp;diff=3262"/>
		<updated>2025-12-17T11:03:58Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox country|conventional_long_name=Duchy of Thullumia|native_name={{cs|ciana|Siwemöör Þullume}}&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Siwemóer Thullume&#039;&#039;|p1=Sensuîerreí|s1=Thullumia|flag_p1=Sensuierreiflagnew.png|flag_s1=Thullum8.png|year_start=1807|year_end=1900|motto={{cs|ciana|&amp;lt;small&amp;gt;Hoonšiis hew bussuu&amp;lt;/small&amp;gt;}}&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Hónszís hew bussú&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Hounshi is with us&amp;quot;|national_anthem={{cs|ciana|&amp;lt;small&amp;gt;Hee, Amle Þullumewre&amp;lt;/small&amp;gt;}}&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Hé, Amle Thullumewre&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Hey, Loyal Thullums&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
The&lt;br /&gt;
&lt;br /&gt;
[[Category:Countries]][[Category:Historical countries]]&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=All-Union_National_Assembly&amp;diff=3261</id>
		<title>All-Union National Assembly</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=All-Union_National_Assembly&amp;diff=3261"/>
		<updated>2025-12-17T11:03:31Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox legislature|name=All-Union National Assembly|seats=1730|meeting_place=[[People&#039;s Assembly Hall]], [[Jikhein]]|structure1=AUNA.svg|structure1_res=250px|political_groups1=* {{color box|#ffca19}} [[Golden Kwang]] (1354)&amp;lt;br&amp;gt;&lt;br /&gt;
* {{color box|#7f51c9}} [[Greater Kwang Cultural Association]] (23)&amp;lt;br&amp;gt;&lt;br /&gt;
* {{color box|#d60076}} [[All-Qonklese Women&#039;s Association]] (66)&amp;lt;br&amp;gt;&lt;br /&gt;
* {{color box|#1c9a00}} [[League of Industrial Workers]] (82)&amp;lt;br&amp;gt;&lt;br /&gt;
* {{color box|#11bcff}} [[Qonklese Democratic League]] (132)&amp;lt;br&amp;gt;&lt;br /&gt;
* {{color box|#000000}} [[Quoncosphere Reunification Party]] (13)&amp;lt;br&amp;gt;&lt;br /&gt;
* {{color box|#ff8c00}} [[Celestial Heritage Party]] (5)&amp;lt;br&amp;gt;&lt;br /&gt;
* {{color box|#f7f6f0}} Civil Sector (55)&amp;lt;br&amp;gt;|native_name={{cs|kwang|p1òwnkway k1uˀ yàn}}&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Phòunkwai Khuq Yàn&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;All-Union National Assembly&#039;&#039;&#039; (&amp;lt;small&amp;gt;Kwang:&amp;lt;/small&amp;gt; {{cs|kwang|p1òwnkway k1uˀ yàn}} &#039;&#039;Phòunkwai Khuq Yàn&#039;&#039;), commonly abbreviated to &#039;&#039;&#039;AUNA&#039;&#039;&#039;, is the legislative body of [[Qonklaks]], considered constitutionally to be the state organ with paramount authority.&lt;br /&gt;
&lt;br /&gt;
== Membership ==&lt;br /&gt;
&lt;br /&gt;
=== Seats ===&lt;br /&gt;
The AUNA reserves 1,570 seats for local represenatives (8 seats elected by each of the 194 [[Prefectural Assembly|Prefectural Assemblies]]), and 105 seats for members of the [[Revolutionary Grand Armed Forces of the UDRQ]]. Additionallty 55 seats are allocated to major civic sectors, whose membership must consist of individuals who do not hold membership in any political party. Candidates running for any seat must be vetted by the [[Golden Kwang]].&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |Key groups&lt;br /&gt;
!Seats&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |Local and indigenous representatives&lt;br /&gt;
|1,570&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |Military representatives&lt;br /&gt;
|105&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;11&amp;quot; |Civil Sector Sub-Assembly&lt;br /&gt;
|Association of Qonklese Professionals&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|Qonklese Labour Front&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|Qonklese National Chamber of Commerce&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|Association of Health&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|National Youth Development Association&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|Qonklese Family Union&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|National Promotion Association for Culture and Arts&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|Qonklese Tourism Association&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|Qonklese Academic League&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|Qonklese Interfaith Society&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|Qonklese Farmer&#039;s Alliance&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&#039;&#039;&#039;Total&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;1,730&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Parliaments]]&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Thullumia&amp;diff=3260</id>
		<title>Thullumia</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Thullumia&amp;diff=3260"/>
		<updated>2025-12-17T11:03:06Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox country|image_flag=thullum8.png|name=|conventional_long_name=Proletariate of Thullumia|native_name={{cs|ciana|Aströrerisiree Þullume}}&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Astroererisiree Thullume&#039;&#039;|motto=&#039;&#039;Nóeter síser gen Mennekelessen&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Glory to the Forward-Thinking&amp;quot;|capital=Sórent|official_languages=[[Thullumite]]|demonym=[[Thullumian]] (country)&amp;lt;br&amp;gt;&lt;br /&gt;
[[Thullum]] (people)|national_anthem=&#039;&#039;Mjowsze Nihte gos Astroererisireos Thullumos &#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;State Anthem of the Proletariate of Thullumia&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Thullumia&#039;&#039;&#039; (&amp;lt;small&amp;gt;[[Thullumite]]:&amp;lt;/small&amp;gt; {{cs|ciana|Þullume}} &#039;&#039;Thullume&#039;&#039; [θʊˈlumɨ]), officially the &#039;&#039;&#039;Proletariate of Thullumia&#039;&#039;&#039; (&amp;lt;small&amp;gt;[[Thullumite]]:&amp;lt;/small&amp;gt; {{cs|ciana|Aströrerisiree Þullume}} &#039;&#039;Astroererisiree Thullume&#039;&#039; [ɑstʕœɾɛˈɾiziɾɛɨ θʊˈlumɨ]) is a nation in Eastern Sharrat. It borders [[Sensuîerreí]]. It has been ruled by the [[Thullumian Cenonist Party]] since 1900, being Abzu&#039;s oldest cenonist nation.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
The [[Duchy of Thullumia]] was established as a border march after Sensuîerreí&#039;s conquest of the region in 1102, subjugating the native Thullumic tribes under Sensundrian rule. &lt;br /&gt;
&lt;br /&gt;
=== Independence ===&lt;br /&gt;
During the [[War of Water Lilies]] (1805-1810) and the Sensundrian succession crisis, [[Duke Axer III]] declared independence for his holdings, and established the independent [[Kingdom of of Thullumia]] in 1807. Having secured her throne with heavy losses, Overqueen [[Âonnersë I Mongor]] was unable to respond in any meaningful way to Thullumia&#039;s independence expect for attempting to enact diplomatic isolation.&lt;br /&gt;
&lt;br /&gt;
=== Popular revolts ===&lt;br /&gt;
The massive inequalities faced by the working class due to rapid uncontrolled industralization in the early 19th century led to the development of [[cenonism]] as an ideology. In 1855, the Thulllum writer [[Lúeringwan Kúethíxing]] wrote [[In Praise Not of God, nor King, nor Wealth|&#039;&#039;In Praise Not of God, nor King, nor Wealth&#039;&#039;]], a manifesto that would come to serve as the basis of cenonist ideology in later decades.&lt;br /&gt;
&lt;br /&gt;
=== Thullumian Commune ===&lt;br /&gt;
The early days of cenonist rule in Thullumia marked by &lt;br /&gt;
&lt;br /&gt;
=== Common Proletariate of Thullumia ===&lt;br /&gt;
Having consolidated national industry under state-led leadership, Thullumia experienced a rapid increase in industrial output in the 1920s, catching up to major regional powers active during this period.&lt;br /&gt;
&lt;br /&gt;
=== Quonco-Thullumian Split ===&lt;br /&gt;
(1975) blah lbha&lt;br /&gt;
&lt;br /&gt;
[[Category:Countries]]&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Thullumite&amp;diff=3259</id>
		<title>Thullumite</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Thullumite&amp;diff=3259"/>
		<updated>2025-12-17T11:02:55Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Thullumite&#039;&#039;&#039; (Thullumite: {{cs|ciana|þullumše}} &#039;&#039;Thullumsze&#039;&#039; [θʊˈlumʃɨ]; {{cs|ciana|sumle þullumše}} &#039;&#039;Sumle Thullumsze&#039;&#039; [ˈsumlɨ θʊˈlumʃɨ]) is a Miremic language spoken in [[Thullumia]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Languages]]&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Four-pointed_star&amp;diff=3258</id>
		<title>Four-pointed star</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Four-pointed_star&amp;diff=3258"/>
		<updated>2025-12-17T11:02:40Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &#039;&#039;&#039;four-pointed star&#039;&#039;&#039; is a common ideogram in modern society. It has been used in numerous national flags, particularly that of cenonist nations, such as [[Qonklaks]] and [[Karduv]].&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
== Origins ==&lt;br /&gt;
&lt;br /&gt;
=== Zero theory ===&lt;br /&gt;
A common folk etymology for the four-pointed star is that when the points are aligned horizontally and vertically (✧) is that it represents the numeral 0 in many scripts around the world ({{Cs|kwang|0}}). This explanation is favoured by groups that favour a complete radical restructuring of society from a blank slate, such as anarchists.&lt;br /&gt;
&lt;br /&gt;
=== Four tenents of cenonism theory ===&lt;br /&gt;
Another explanation, which is favoured by cenonist groups, is that the four points represent the four main principles of cenonism: class abolition, collective ownership, internationalism, and progressivism.&lt;br /&gt;
&lt;br /&gt;
[[Category:Cenonism]]&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Cenonism&amp;diff=3256</id>
		<title>Cenonism</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Cenonism&amp;diff=3256"/>
		<updated>2025-12-17T11:02:30Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Cenonism&#039;&#039;&#039; (from Latin &#039;&#039;coenōnia&#039;&#039;; itself from Ancient Greek κοινωνία &#039;community&#039;) is a political movement that seeks to create a global society that is free of attributes associated with hierarchy, inequality, reactionary thoughts, and imperialism.&lt;br /&gt;
&lt;br /&gt;
== Symbolism ==&lt;br /&gt;
Cenonist symbols mostly revolves around the [[four-pointed star]] and the plough.&lt;br /&gt;
&lt;br /&gt;
=== Slogans ===&lt;br /&gt;
The most common slogans associated with cenonism is &#039;Long live the forward-thinking!&#039; and &#039;Glory to global solidarity!&#039; or &#039;Nothing to lose but chains&#039;&lt;br /&gt;
&lt;br /&gt;
== Theory ==&lt;br /&gt;
Classical cenonism as envisioned by X is centered around four main tenets:&lt;br /&gt;
&lt;br /&gt;
=== Class abolition ===&lt;br /&gt;
Cenonists seek to dismantle any semblance of a structure where societal groups (whether based on age, occupation, sex, gender, religion, etc.) are ranked against one another to create systematic inequality. A true cenonist society will be free of hierarchy, where every person is a social equal.&lt;br /&gt;
&lt;br /&gt;
=== Collective ownership ===&lt;br /&gt;
All forms of private ownership, particularly that which actively contributes to inequality in society (e.g., landlordism) would be dismantled. Under such a society, its members enjoy collective ownership of all property, and can be freely shared and used by all.&lt;br /&gt;
&lt;br /&gt;
=== Internationalism ===&lt;br /&gt;
At least in classical cenonism, humanity is to aim to achieve what is termed a &#039;mindset of a global citizen&#039;, where one not only stops identifying with the self, but as an integral part of a global interconnected society. This tenet denounces all forms of othering, such as xenophobia, isolationism, and exceptionalism. A true cenonist society would be stateless.&lt;br /&gt;
&lt;br /&gt;
=== Progressivism ===&lt;br /&gt;
Progressivism promotes what is deemed &#039;forward-looking behaviour&#039;, such as an active funding of the sciences that seeks to better society and raise standards of living, and rejects anything they deem to be holding back society, such as certain aspects of religion, mythicism, and superstition.&lt;br /&gt;
&lt;br /&gt;
[[Category:Political ideologies]][[Category:Cenonism]]&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Cenonist_Irre%C3%BAehsze&amp;diff=3255</id>
		<title>Cenonist Irreúehsze</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Cenonist_Irre%C3%BAehsze&amp;diff=3255"/>
		<updated>2025-12-17T11:02:17Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Cenonist Irreúehsze&#039;&#039;&#039; (IPA: /ɪriˈjuːʃə/; &amp;lt;small&amp;gt;[[Thullumite]]:&amp;lt;/small&amp;gt; &#039;&#039;Ge Mikithadbesze Irreúehsze&#039;&#039; [gɨ mɪkɪˈʰθɑdbɛʰʃɨ iʕɛˈʔyːxʃɨ]) was a global network of [[Cenonism|cenonist]] groups active from 1899 to 1950.&lt;br /&gt;
&lt;br /&gt;
[[Category:Cenonism]]&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Hanctheism&amp;diff=3254</id>
		<title>Hanctheism</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Hanctheism&amp;diff=3254"/>
		<updated>2025-12-17T11:01:06Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox religion|name=Hanctheism|native_name={{cs|kwang|bayˀ ba-ši}}&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Baiq Ba-Shi&#039;&#039;|leader_title=Avatar of Hounshi|language=Classical Kwang|headquarters=Jwanna, Thòunnha|separated_from=Haomism|number_of_followers=1.83 billion (1995)|image=Hanctheism.png|territory=Domain of the True Sun}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hanctheism&#039;&#039;&#039; (&amp;lt;small&amp;gt;Kwang:&amp;lt;/small&amp;gt; {{cs|kwang|bayˀ ba-ši}} &#039;&#039;Baiq Ba-Shi&#039;&#039; &#039;Sovereign-Sun religion&#039;) is a monotheistic interpretation of Haomism. Its scripture affirms the role of [[Hounshi]] as the utmost important creator solar deity, and declares the worship of the rest of the traditional Haomist pantheon as heretical.&lt;br /&gt;
&lt;br /&gt;
== Name ==&lt;br /&gt;
The term &#039;&#039;Hanctheism&#039;&#039; comes from the Greco-Roman name for Hounshi, &#039;&#039;Hancthēus&#039;&#039;, itself derived from the Middle Kwang pronunciation of the name (&#039;&#039;hàng thi&#039;&#039;). &lt;br /&gt;
&lt;br /&gt;
The Kwang name, &#039;&#039;Baiq Ba-Shi&#039;&#039;, translated as the Sovereign-Sun Religion, refers to the status of the Sun being the utmost important deity in this religion.&lt;br /&gt;
&lt;br /&gt;
== Beliefs ==&lt;br /&gt;
[[File:Avatarofhounshi1988.png|thumb|206x206px|[[Jööçin Soşug]], the 120th Avatar of Hounshi, in full liturgical dress.]]&lt;br /&gt;
&lt;br /&gt;
=== Avatar of Hounshi ===&lt;br /&gt;
The concept of the [[Avatar of Hounshi]] existed as an optional epithet for reigning emperors long before its official adoption by Hanctheism. Under the Byàn Dynasty, the Witaiq Emperor was declared as the head of the Hanctheist faith, and the literal embodiment of Hounshi in the mortal world. Past emperors who reigned during a confirmed unified dynasty were retroactively declared Avatars of Hounshi, placing the Witaiq Emperor as the 100th Avatar.  &lt;br /&gt;
&lt;br /&gt;
The association between the emperor and divinity provided the Byàn Dynasty with a mostly unchallenged reign, as contenders to the Solar Throne now required legitimacy from the Hanctheist clergy, which coincidentally would be headed by the reigning emperor himself. As such, the quick conversion of the Qonklese masses was necessary to provide the Byàn authorities unchallenged rule that would be long-lasting. &lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;Nyansàn&#039;&#039; ===&lt;br /&gt;
The Hanctheist &#039;&#039;nyansàn&#039;&#039; (lit. &#039;arrive to pray&#039;) is a pilgrimage conducted at least once in life to the [[Jwanna Grand Temple]]. The rites of the pilgrimage should commence ten days before the autumn equinox. Unlike the Haomist &#039;&#039;nyansàn&#039;&#039; where the pilgrim could choose any holy site, the Hanctheist &#039;&#039;nyansàn&#039;&#039; must be conducted to the Jwanna Grand Temple.&lt;br /&gt;
&lt;br /&gt;
Like in Haomism, the completion of the &#039;&#039;nyansàn&#039;&#039; gains one the honourific prefix &#039;&#039;oun&#039;&#039; (lit. &#039;clear, bright&#039;), replacing instances involving the default honorific &#039;&#039;tàn&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Sanguivision ===&lt;br /&gt;
&#039;&#039;&#039;Sanguivision&#039;&#039;&#039;, or &#039;&#039;&#039;bloodvision&#039;&#039;&#039; (&amp;lt;small&amp;gt;Kwang:&amp;lt;/small&amp;gt; &#039;&#039;suhuq&#039;&#039;, &amp;lt;small&amp;gt;High Ciána:&amp;lt;/small&amp;gt; &#039;&#039;iryanséxeë&#039;&#039;) is a sacred ritual that involves the draining of blood from one&#039;s body to induce an altered state of consciousness as a means to determine the will of heaven. The partaker commonly undergoes hallucinations due to blood loss. Such rituals are highly dangerous, and was mostly reserved for reigning emperors and later Avatars of Hounshi. The 119th Avatar of Hounshi, Yi Chi, died performing this ritual.&lt;br /&gt;
&lt;br /&gt;
Although it is no longer practiced in Tammuz, it remains popular in Sharrat, where it remains done by certain adherents of Sharrati Hactheism in dedicated temples known as &#039;&#039;iryancreön&#039;&#039; (lit. &#039;blood temple).&lt;br /&gt;
&lt;br /&gt;
=== Reality as the First of Three Hells ===&lt;br /&gt;
In Hanctheist thought, our known reality is thought of as the least severe of three total hells. Hounshi&#039;s reach and influence in each hell dimension is exercised via his direct representatives. In samsaric Hanctheism, leading a life free of sin could allow a person to break the cycle of reincarnation and join with the consciousness of Hounshi upon their departure from reality, while a life of sin would damn them to reincarnate in a lower Hell. The classification of reality as a Hell is motivated by the philosophy that human life can often be grueling and punishing on its own.&lt;br /&gt;
&lt;br /&gt;
== Early History ==&lt;br /&gt;
Early forms of Hanctheism can be traced back to the ideologies adapted by righteous peasant armies that arose during the chaos of the Two-Hundred-Year Unrest (1043-1293), where Qonklaks underwent dynastic change in quick succession and faced an invasion from northern Öörzic nomads, most notably the X Horde.&lt;br /&gt;
&lt;br /&gt;
Hanctheism&#039;s central dogma of monotheism which centers Hounshi as the sole deity to be worshipped was promoted by philosopher-priest [[Waun Jìsõ]] in a series of open letters written during the early [[Ha Dynasty]]. He argued that the reason the then-current age of unrest was due to the fact that Hounshi was never meant to be part of a pantheon of gods, and that worship should be concentrated only to him. &lt;br /&gt;
&lt;br /&gt;
By the turn of the 12th century, numerous righteous armies adapted this ideology, and began to systematically demolish any shrine they would come across that housed the old gods of Haomism. Naturally, these actions were seen as heretical by the Haomist establishment. Early converts to Hanctheism would face religious persecution if caught by authorities. During this period, law enforcement would force suspects to pray or make sacrifices to a minor Haomist god, such as the god of the underworld Hài Jaw, to determine whether they were really a Hanctheist.&lt;br /&gt;
&lt;br /&gt;
Among the righteous armies, Nã Wein and his [[Order of the Four Sages]], founded in 1195, would lead an uprising that saw the establishment of the first Hanctheist state, [[Oun Byàn]], in 1204. [[Nã Tha]], grandson of Nã Wein, would unite Qonklaks under his banner by 1293, founding the [[Byàn Dynasty]] as the Witaiq Emperor.&lt;br /&gt;
&lt;br /&gt;
== First Schism ==&lt;br /&gt;
The Hanctheist clergy, like the Haomist clergy before them, initially tolerated the unanswered question of the nature of life after death. Under Haomism, whether the soul of a deceased person would enter an afterlife (a heaven or a hell), or undergo a cycle of reincarnation, was up to the individual practitioner. As the Hanctheist clergy was significantly more organized than the Haomist clergy ever was, such unanswered philosophical questions could no longer be tolerated.&lt;br /&gt;
&lt;br /&gt;
The resulting conflict split the Hanctheist world into two: that of the &#039;&#039;&#039;paradisiacs&#039;&#039;&#039;, who believed the soul would enter another realm forever upon death, and the &#039;&#039;&#039;samsarics&#039;&#039;&#039;, who believed the soul would be reborn into another body. The Witaiq Emperor attempted to mend the schism with an imperial edict, declaring Samsaric Hanctheism to be the prevailing ideology. He reasoned that if Hounshi could reincarnate a part of Himself within every Avatar of Hounshi, then it would not be wrong to think that a human soul could do the same.&lt;br /&gt;
&lt;br /&gt;
== Spread to Sharrat as Innerithridism ==&lt;br /&gt;
Hanctheism spread to Sharrat via the maritime silkroad, faciliated by the rise of Qonklese shipping companies like the Hĩ Houngoun (HHG), founded in 1301 to protect shipping convoys travessing the Perinic maritime trade routes. The establishment of a permanent Qonklese presence in Sharrat, specifically the trading colony of Kyèwaun, facilitated in the further spread of Hanctheism in the region.&lt;br /&gt;
&lt;br /&gt;
By the 15th century, the practices of Hanctheism in Sharrat became merged with local indigenous practices, serving as the foundation of Eastern Samsaric Hanctheism.&lt;br /&gt;
&lt;br /&gt;
== Jiqjõ Reformation ==&lt;br /&gt;
The Jiqjõ Reformation, observed under the reign of the Jiqjõ Emperor, saw several key changes to Haomism.&lt;br /&gt;
&lt;br /&gt;
=== Separation of Emperor and Avatar of Hounshi ===&lt;br /&gt;
The interpretations of the Jiqjõ Emperor&#039;s third &#039;&#039;haemorasis&#039;&#039; ritual advised that to ensure the longevity of the Byàn imperial lineage, the role of Emperor and Avatar of Hounshi must be separated, or else the bloodline could meet an untimely end. As such, the Jiqjõ Emperor declared in 1745 that none of his successors would become Avatar of Hounshi. &lt;br /&gt;
&lt;br /&gt;
The new Avatar of Hounshi would henceforth be selected by a long ceremonial process, where upon the death of an Avatar of Hounshi, clergymen would travel across Qonklaks and locate potential reincarnations of the avatar amongst young children, and bring them to the [[Jwanna Grand Temple]] in Jwanna, Thòunnha Province. There, candidates would be placed before an assortment of objects, where one of them would have been items used or owned by the previous avatar. Should a candidate select the correct item, he or she would be declared the next Avatar of Hounshi.&lt;br /&gt;
&lt;br /&gt;
=== Holy Jwanna, City of the Sun ===&lt;br /&gt;
In 1833, the city of Holy Jwanna, the holy seat of the Avatar of Hounshi, became &#039;&#039;de jure&#039;&#039; independent from Qonklaks as part of a means to further the spreading of Hanctheism globally, as having its headquarters be controlled by a world power was deemed disadvantageous.&lt;br /&gt;
&lt;br /&gt;
== Persecution under Cenonism ==&lt;br /&gt;
As part of the state atheism practiced by the Union of Democratic Revolutionary Qonklaks, the government began to limit the amount of travellers entering Qonklaks for religious reasons, providing visas to only 50,000 pilgrims seeking to make &#039;&#039;nyansàn&#039;&#039; every year starting from February 28th, 1952. This crackdown was intensified when the government declared that it would longer provide visas for foreigners travelling to Qonklaks under religious reasons, such as making &#039;&#039;nyansàn&#039;&#039; to Holy Jwanna, on November 3rd, 1962. On the same day, Holy Jwanna would no longer be considered an independent city-state, and would be annexed back into Qonklaks. &lt;br /&gt;
&lt;br /&gt;
=== Nuclear Crisis of 1962 ===&lt;br /&gt;
The [[Archdessodom of Ishkur|Archdessodom of Ishkur&#039;s]] Hanctheist lobby urged its government to take action....&lt;br /&gt;
&lt;br /&gt;
On January 3rd, 1963, Holy Jwanna and Qonklaks had normalized relations once again, reiterating their mutual commitment to promote dialogue and protecting religious freedoms.&lt;br /&gt;
&lt;br /&gt;
[[Category:Religions]][[Category:Hanctheism]]&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Category:Royal_titles&amp;diff=3253</id>
		<title>Category:Royal titles</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Category:Royal_titles&amp;diff=3253"/>
		<updated>2025-12-17T11:00:13Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: Created page with &amp;quot;Category:Leadership titles&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Leadership titles]]&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Nerima%C3%A9rar&amp;diff=3251</id>
		<title>Nerimaérar</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Nerima%C3%A9rar&amp;diff=3251"/>
		<updated>2025-12-17T10:59:44Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox flag&lt;br /&gt;
| Name = Nerimaérar&lt;br /&gt;
| Image_size = 250px&lt;br /&gt;
| Image = Sensuierreiflagnew.png&lt;br /&gt;
| Use = National flag&lt;br /&gt;
| Proportion = 3:5&lt;br /&gt;
| Adoption = 1556&amp;lt;br&amp;gt;&lt;br /&gt;
1832 (current design)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Nerimaérar&#039;&#039;&#039; (&amp;lt;small&amp;gt;High Ciána:&amp;lt;/small&amp;gt; [ne.ri.ˈme.rar]; lit. &#039;Sun-banner&#039;) is the official flag of [[Sensuîerreí]]. The flag consists of the arms of [[Bémps-Priostoí]] superimposed upon alternating quarters of blue and white, each with semy of small yellow and white suns respectively.&lt;br /&gt;
&lt;br /&gt;
[[Category:Flags]]&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Nerima%C3%A9rar&amp;diff=3250</id>
		<title>Nerimaérar</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Nerima%C3%A9rar&amp;diff=3250"/>
		<updated>2025-12-17T10:59:38Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox flag&lt;br /&gt;
| Name = Nerimaérar&lt;br /&gt;
| Image_size = 250px&lt;br /&gt;
| Image = Sensuierreiflagnew.png&lt;br /&gt;
| Use = National flag&lt;br /&gt;
| Proportion = 3:5&lt;br /&gt;
| Adoption = 1556&amp;lt;br&amp;gt;&lt;br /&gt;
1832 (current design)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Nerimaérar&#039;&#039;&#039; (&amp;lt;small&amp;gt;High Ciána:&amp;lt;/small&amp;gt; [ne.ri.ˈme.rar]; lit. &#039;Sun-banner&#039;) is the official flag of [[Sensuîerreí]]. The flag consists of the arms of [[Bémps-Priostoí]] superimposed upon alternating quarters of blue and white, each with semy of small yellow and white suns respectively.&lt;br /&gt;
&lt;br /&gt;
[[Category:Flags&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
	<entry>
		<id>https://abzu.w.kmwc.org/index.php?title=Archaegus&amp;diff=3249</id>
		<title>Archaegus</title>
		<link rel="alternate" type="text/html" href="https://abzu.w.kmwc.org/index.php?title=Archaegus&amp;diff=3249"/>
		<updated>2025-12-17T10:59:35Z</updated>

		<summary type="html">&lt;p&gt;Roxanne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An &#039;&#039;&#039;archaegus&#039;&#039;&#039; (High Ciána: &#039;&#039;taicaëghor&#039;&#039; &#039;highest king&#039;) is the monarch and head of state of [[Sensuîerreí]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Royal titles]]&lt;/div&gt;</summary>
		<author><name>Roxanne</name></author>
	</entry>
</feed>