
<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.freewiki.eu/en/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Holgerd</id>
	<title>FreeWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.freewiki.eu/en/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Holgerd"/>
	<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=Special:Contributions/Holgerd"/>
	<updated>2026-05-03T12:23:37Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.16</generator>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=Welcome_to_FreeWiki&amp;diff=1446</id>
		<title>Welcome to FreeWiki</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=Welcome_to_FreeWiki&amp;diff=1446"/>
		<updated>2020-03-23T10:35:12Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[File:Introduction FreeWiki.jpg|left|800px|FREEWIKI_INTRO|link=https://www.freewiki.eu/freewiki_intro_en/index_en.html]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: right&amp;quot;&amp;gt;[https://www.freewiki.eu '''FreeWiki ist zweisprachig, zur deutschsprachigen Version hier!''']]&amp;lt;/p&amp;gt; &amp;lt;p style=&amp;quot;text-align: right&amp;quot;&amp;gt;[[Donate|'''Please support FreeWiki''']]&amp;lt;/p&amp;gt; &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
To go to the extensive introductory page → click on the picture please.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
The up to date explanation of the project '''FreeWiki''', the idea and the implementation, as well as plans for the near future you will find in this [[:File:FreeWiki_brochure_2.5b_EN.pdf|brochure as pdf for download]]. __NOTOC__&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== What FreeWiki is ==&lt;br /&gt;
&lt;br /&gt;
'''FreeWiki''' will be a collection of our knowledge about the world, ourselves and our life – comprehensive, diverse, holistic, emancipative and critical.&lt;br /&gt;
&lt;br /&gt;
''FreeWIki'' is a chance to collect our knowledge that is not represented well elsewhere and build a platform to put down our accumulated information and insight for easy and lasting access.&lt;br /&gt;
&lt;br /&gt;
In ''FreeWiki'', contexts are emphasized because the whole is more important and more than its parts. In order to promote understanding, there may also be detailed explanations on individual topics that go beyond the mere listing of facts. This sometimes results in a more creative style that can go beyond the scope of an encyclopedia.&amp;lt;br/&amp;gt; This also implies that the authors of important passages may be named sometimes. In general, there is no anonymity.&lt;br /&gt;
&lt;br /&gt;
''FreeWiki'' is multilingual, currently German and English. Each language can contain independent articles or translations of the others.&lt;br /&gt;
&lt;br /&gt;
All articles in ''FreeWiki'' are under the license [http://creativecommons.org/licenses/by-sa/3.0/de/ Creative Commons CC-BY-SA 3.0 Unported] [http://creativecommons.org/licenses/by-sa/3.0/de/legalcode (Short Version)] and can be freely used by everyone.&amp;lt;br/&amp;gt; The project is only [[Donate|donation based]].&amp;lt;br/&amp;gt; FreeWiki is strictly bound to monitoring and approval of changes by a group of editors to avoid being overrun by the same groups that now enforce the bias of Wikipedia.&lt;br /&gt;
&lt;br /&gt;
== What FreeWiki isn't ==&lt;br /&gt;
&lt;br /&gt;
''FreeWiki'' is not an opinion forum where personal views on politics or other issues can be shared. And ''FreeWiki'' is also not a critical online magazine like DemocracyNow. Critical opinion-forming should take place there.&amp;lt;br/&amp;gt; ''FreeWiki'' is not a self-help portal where you can find medical, psychological or wellness tips.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== Relation to Wikipedia ==&lt;br /&gt;
&lt;br /&gt;
Knowledge is by no means neutral. Every source of information is created according to certain criteria and given interests, because as they say: knowledge is power.&lt;br /&gt;
&lt;br /&gt;
'''Wikipedia''' is an attempt to collect the knowledge of a '''materialistic and mechanistic world view''' and to present the ideological view of '''neoliberalism''' and '''state-conformist western politics'''. With this narrative of the world [[Wikipedia|Wikipedia (evidence see there)]] has almost achieved a global '''monopoly of information and opinion''', which gives the wrong impression that the views spread there are objective or scientific. In many cases Wikipedia is not used to inform about clear facts, but to convey the opinion of certain groups in the veil of information. Of course, this should not be the purpose of this platform, but it happens again and again and cannot be corrected, because the administrators block all attempts at correction and the authors involved.&lt;br /&gt;
&lt;br /&gt;
This can be unsatisfactory for those whose world view is oriented towards other basic positions, especially since other aspects are specifically blocked by the Wikipedia administrators.&amp;lt;br/&amp;gt; ''FreeWiki'' takes a more comprehensive view and opens the perspective also for holistic world views and for views outside the political left-right mainstream.&lt;br /&gt;
&lt;br /&gt;
An important requirement for a successful medical treatment is that the patient has been enabled to consider all available options and their advantages, risks, disadvantages and consequences. This goes back to the medical ethical requirements of transparency and patient autonomy. It is grounded in many national laws as the requirement for '''informed consent'''. Therefore there is a need for a truthful and independent information source, which Wikipedia has often shown not to be. FreeWiki aims to complement the information that is offered on Wikipedia.&lt;br /&gt;
&lt;br /&gt;
== Contributing: How to: ==&lt;br /&gt;
&lt;br /&gt;
You are invited to participate in this project and introduce your fields of knowledge in form of articles. Any kind of proposals, ideas, criticism and additions are very welcome. .&amp;lt;br/&amp;gt; '''Interested?''' – If you would like to make your own '''contribution ''', please note the '''following four steps''':&lt;br /&gt;
&lt;br /&gt;
1. Register with the link &amp;quot;Create user account&amp;quot; in the upper right corner of this page.&amp;lt;br/&amp;gt; Due to numerous unpleasant experiences with other project pages, we do not allow anonymous contributions. However, you have the possibility to give yourself an alias and tell me your real name.&lt;br /&gt;
&lt;br /&gt;
2. Write an email to info(at)freewiki.eu to tell that you have done so and to be given editing rights,&lt;br /&gt;
&lt;br /&gt;
3. After your editing rights have been activated, you can use an editing link next to a heading to edit content.&amp;lt;br/&amp;gt; You may choose a page from the [[Desiderata_-_desired_contributions|Desiderata list, giving an overview for editors,]] or create a new page (how to do this, see [[Processing_aids|here]]).&lt;br /&gt;
&lt;br /&gt;
4. Please read the [[Processing_aids|Editing aids for authors]].&lt;br /&gt;
&lt;br /&gt;
- Thank you for supporting this project.&lt;br /&gt;
&lt;br /&gt;
''Your FreeWiki team''.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== Contents ==&lt;br /&gt;
&lt;br /&gt;
[[Desiderata_-_desired_contributions|Desiderata - desired contributions / Overview of topics for editors]]&lt;br /&gt;
&lt;br /&gt;
[[Contents|Contents for users]]&lt;br /&gt;
&lt;br /&gt;
[[Processing_aids|Processing aids]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
''For those with technological interests:'' You will also find help to handle this wiki in the&amp;amp;nbsp; [https://www.mediawiki.org/wiki/Help:Contents user manual].&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=Template:Markup2&amp;diff=1372</id>
		<title>Template:Markup2</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=Template:Markup2&amp;diff=1372"/>
		<updated>2019-09-06T09:28:28Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#if: {{{t|}}}|'''{{{t|}}}'''&lt;br /&gt;
*&amp;lt;code&amp;gt;{{{m|}}}&amp;lt;/code&amp;gt;&lt;br /&gt;
:{{{r|}}}|*&amp;lt;code&amp;gt;{{{m|}}}&amp;lt;/code&amp;gt;&lt;br /&gt;
:{{{r|}}}}}{{#if: {{{m2|}}}|&lt;br /&gt;
*&amp;lt;code&amp;gt;{{{m2|}}}&amp;lt;/code&amp;gt;&lt;br /&gt;
:{{{r2|}}}}}{{#if: {{{m3|}}}|&lt;br /&gt;
*&amp;lt;code&amp;gt;{{{m3|}}}&amp;lt;/code&amp;gt;&lt;br /&gt;
:{{{r3|}}}}}{{#if: {{{m4|}}}|&lt;br /&gt;
*&amp;lt;code&amp;gt;{{{m4|}}}&amp;lt;/code&amp;gt;&lt;br /&gt;
:{{{r4|}}}}}{{#if: {{{m5|}}}|&lt;br /&gt;
*&amp;lt;code&amp;gt;{{{m5|}}}&amp;lt;/code&amp;gt;&lt;br /&gt;
:{{{r5|}}}}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=Template:Pp&amp;diff=1374</id>
		<title>Template:Pp</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=Template:Pp&amp;diff=1374"/>
		<updated>2019-09-06T09:28:28Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#invoke:Protection banner|main}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=Template:Pp-protected&amp;diff=1376</id>
		<title>Template:Pp-protected</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=Template:Pp-protected&amp;diff=1376"/>
		<updated>2019-09-06T09:28:28Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Template:Pp]]&lt;br /&gt;
&lt;br /&gt;
{{Rcat shell|&lt;br /&gt;
{{R from move}}&lt;br /&gt;
{{R from long name}}&lt;br /&gt;
{{R with history}}&lt;br /&gt;
{{R for convenience}}&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Top icon protection templates]]&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=Template:Citation_Style_documentation/chapter&amp;diff=1362</id>
		<title>Template:Citation Style documentation/chapter</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=Template:Citation_Style_documentation/chapter&amp;diff=1362"/>
		<updated>2019-09-06T09:28:27Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* '''{{#switch:{{{title_title}}}&lt;br /&gt;
| booktitle = booktitle&lt;br /&gt;
| #default = chapter}}''': The chapter heading of the source. May be wikilinked or may use '''chapter-url''', but not both. {{#switch:{{BASEPAGENAME}}&lt;br /&gt;
|Cite journal&lt;br /&gt;
|Cite web&lt;br /&gt;
|Cite news&lt;br /&gt;
|Cite press release&lt;br /&gt;
|Cite conference&lt;br /&gt;
|Cite podcast = Not displayed even if set&lt;br /&gt;
|#default = Displays in quotes}}.&lt;br /&gt;
** '''script-chapter''': Chapter heading for languages that do not use a Latin-based alphabet (Arabic, Chinese, Cyrillic, Greek, Hebrew, Japanese, Korean, Vietnamese, etc); follows transliteration defined in '''chapter'''. Should be prefixed with an [[List of ISO 639-1 codes|ISO 639-1]] two-character code to help browsers properly display the script:&lt;br /&gt;
**:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;... |chapter=Tōkyō tawā |script-chapter=ja:東京タワー |trans-chapter=Tokyo Tower ...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** '''trans-chapter''': English translation of the chapter heading, if the source cited is in a foreign language. Displays in square brackets after the '''{{#switch:{{{title_title}}}&lt;br /&gt;
| booktitle = booktitle&lt;br /&gt;
| #default = chapter}}''' field; if '''chapter-url''' is defined, then '''trans-chapter''' is included in the link. Use of the '''language''' parameter is recommended.&lt;br /&gt;
* '''contribution''': A separately-authored part of '''author''''s book. May be wikilinked or may use '''contribution-url''', but not both. Values of &amp;lt;code&amp;gt;Afterword&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Foreword&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Introduction&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;Preface&amp;lt;/code&amp;gt; display unquoted; any other value displays in quotes. The author of the contribution is given in '''contributor'''.&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=Template:Citation_Style_documentation/chapterurl&amp;diff=1364</id>
		<title>Template:Citation Style documentation/chapterurl</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=Template:Citation_Style_documentation/chapterurl&amp;diff=1364"/>
		<updated>2019-09-06T09:28:27Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* '''chapter-url''': URL of an individual chapter of online source. Should be at the same site as '''url''', if any. If '''chapter-url''' is used, '''url''' should only be used if the beginning of the work and the cited chapter are on separate webpages at the site. '''chapter''' may be wikilinked or '''chapter-url''' used, but not both. Aliases: '''chapterurl''', '''contribution-url''', '''section-url'''.&lt;br /&gt;
* &amp;lt;b id=&amp;quot;csdoc_chapter_format&amp;quot;&amp;gt;chapter-format&amp;lt;/b&amp;gt;: Format of the work referred to by '''chapter-url'''; for example: PDF, DOC, or XLS; displayed in parentheses after '''chapter'''. HTML is implied and should not be specified. Does not change the [[Help:External link icons|external link icon]]. Note: External link icons do not include [[Wikipedia:ALT|alt text]]; thus, they do not add format information for the visually impaired.&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=Template:Cite_book/TemplateData&amp;diff=1366</id>
		<title>Template:Cite book/TemplateData</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=Template:Cite_book/TemplateData&amp;diff=1366"/>
		<updated>2019-09-06T09:28:27Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TemplateData header}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;description&amp;quot;: &amp;quot;This template formats a citation to a book using the provided bibliographic information (such as author and title) as well as various formatting options.&amp;quot;,&lt;br /&gt;
	&amp;quot;params&amp;quot;: {&lt;br /&gt;
		&amp;quot;url&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;URL&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The URL of the online location where the text of the publication can be found. Requires schemes of the type \&amp;quot;http://...\&amp;quot; or maybe even the  protocol relative scheme \&amp;quot;//...\&amp;quot;&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;URL&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;example&amp;quot;: &amp;quot;https://books.google.com/books?id=...&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;title&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Title&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The title of the book; displays in italics&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;required&amp;quot;: true&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;last&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Last name&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The surname of the author; don't wikilink, use 'authorlink'; can suffix with a numeral to add additional authors&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;last1&amp;quot;,&lt;br /&gt;
				&amp;quot;author&amp;quot;,&lt;br /&gt;
				&amp;quot;author1&amp;quot;,&lt;br /&gt;
				&amp;quot;author1-last&amp;quot;,&lt;br /&gt;
				&amp;quot;author-last&amp;quot;,&lt;br /&gt;
				&amp;quot;surname1&amp;quot;,&lt;br /&gt;
				&amp;quot;author-last1&amp;quot;,&lt;br /&gt;
				&amp;quot;subject1&amp;quot;,&lt;br /&gt;
				&amp;quot;surname&amp;quot;,&lt;br /&gt;
				&amp;quot;author-last&amp;quot;,&lt;br /&gt;
				&amp;quot;subject&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;suggested&amp;quot;: true,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;first&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;First name&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Given or first name, middle names, or initials of the author; don't wikilink, use 'authorlink'; can suffix with a numeral to add additional authors&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;given&amp;quot;,&lt;br /&gt;
				&amp;quot;author-first&amp;quot;,&lt;br /&gt;
				&amp;quot;first1&amp;quot;,&lt;br /&gt;
				&amp;quot;given1&amp;quot;,&lt;br /&gt;
				&amp;quot;author-first1&amp;quot;,&lt;br /&gt;
				&amp;quot;author1-first&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;suggested&amp;quot;: true,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;last2&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Last name 2&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The surname of the second author; don't wikilink, use 'authorlink2'; can suffix with a numeral to add additional authors&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;author2&amp;quot;,&lt;br /&gt;
				&amp;quot;surname2&amp;quot;,&lt;br /&gt;
				&amp;quot;author-last2&amp;quot;,&lt;br /&gt;
				&amp;quot;author2-last&amp;quot;,&lt;br /&gt;
				&amp;quot;subject2&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;first2&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;First name 2&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Given or first name, middle names, or initials of the second author; don't wikilink, use 'authorlink2'; can suffix with a numeral to add additional authors&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;given2&amp;quot;,&lt;br /&gt;
				&amp;quot;author-first2&amp;quot;,&lt;br /&gt;
				&amp;quot;author2-first&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;last3&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Last name 3&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The surname of the third author; don't wikilink, use 'authorlink3'.&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;author3&amp;quot;,&lt;br /&gt;
				&amp;quot;surname3&amp;quot;,&lt;br /&gt;
				&amp;quot;author-last3&amp;quot;,&lt;br /&gt;
				&amp;quot;author3-last&amp;quot;,&lt;br /&gt;
				&amp;quot;subject3&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;first3&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;First name 3&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Given or first name, middle names, or initials of the third author; don't wikilink.&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;given3&amp;quot;,&lt;br /&gt;
				&amp;quot;author-first3&amp;quot;,&lt;br /&gt;
				&amp;quot;author3-first&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;last4&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Last name 4&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The surname of the fourth author; don't wikilink, use 'authorlink4'.&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;author4&amp;quot;,&lt;br /&gt;
				&amp;quot;surname4&amp;quot;,&lt;br /&gt;
				&amp;quot;author-last4&amp;quot;,&lt;br /&gt;
				&amp;quot;author4-last&amp;quot;,&lt;br /&gt;
				&amp;quot;subject4&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;first4&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;First name 4&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Given or first name, middle names, or initials of the fourth author; don't wikilink.&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;given4&amp;quot;,&lt;br /&gt;
				&amp;quot;author-first4&amp;quot;,&lt;br /&gt;
				&amp;quot;author4-first&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;last5&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Last name 5&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The surname of the fifth author; don't wikilink, use 'authorlink5'.&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;author5&amp;quot;,&lt;br /&gt;
				&amp;quot;surname5&amp;quot;,&lt;br /&gt;
				&amp;quot;author-last5&amp;quot;,&lt;br /&gt;
				&amp;quot;author5-last&amp;quot;,&lt;br /&gt;
				&amp;quot;subject5&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;first5&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;First name 5&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Given or first name, middle names, or initials of the fifth author; don't wikilink.&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;given5&amp;quot;,&lt;br /&gt;
				&amp;quot;author-first5&amp;quot;,&lt;br /&gt;
				&amp;quot;author5-first&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;last6&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Last name 6&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The surname of the sixth author; don't wikilink, use 'authorlink6'.&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;author6&amp;quot;,&lt;br /&gt;
				&amp;quot;surname6&amp;quot;,&lt;br /&gt;
				&amp;quot;author-last6&amp;quot;,&lt;br /&gt;
				&amp;quot;author6-last&amp;quot;,&lt;br /&gt;
				&amp;quot;subject6&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;first6&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;First name 6&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Given or first name, middle names, or initials of the sixth author; don't wikilink.&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;given6&amp;quot;,&lt;br /&gt;
				&amp;quot;author-first6&amp;quot;,&lt;br /&gt;
				&amp;quot;author6-first&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;last7&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Last name 7&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The surname of the seventh author; don't wikilink, use 'authorlink7'.&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;author7&amp;quot;,&lt;br /&gt;
				&amp;quot;surname7&amp;quot;,&lt;br /&gt;
				&amp;quot;author-last7&amp;quot;,&lt;br /&gt;
				&amp;quot;author7-last&amp;quot;,&lt;br /&gt;
				&amp;quot;subject7&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;first7&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;First name 7&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Given or first name, middle names, or initials of the seventh author; don't wikilink.&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;given7&amp;quot;,&lt;br /&gt;
				&amp;quot;author-first7&amp;quot;,&lt;br /&gt;
				&amp;quot;author7-first&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;last8&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Last name 8&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The surname of the eighth author; don't wikilink, use 'authorlink8'.&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;author8&amp;quot;,&lt;br /&gt;
				&amp;quot;surname8&amp;quot;,&lt;br /&gt;
				&amp;quot;author-last8&amp;quot;,&lt;br /&gt;
				&amp;quot;author8-last&amp;quot;,&lt;br /&gt;
				&amp;quot;subject8&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;first8&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;First name 8&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Given or first name, middle names, or initials of the eighth author; don't wikilink.&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;given8&amp;quot;,&lt;br /&gt;
				&amp;quot;author-first8&amp;quot;,&lt;br /&gt;
				&amp;quot;author8-first&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;last9&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Last name 9&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The surname of the ninth author; don't wikilink, use 'authorlink9'. If nine authors are defined, then only eight will show and 'et al.' will show in place of the last author.&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;author9&amp;quot;,&lt;br /&gt;
				&amp;quot;surname9&amp;quot;,&lt;br /&gt;
				&amp;quot;author-last9&amp;quot;,&lt;br /&gt;
				&amp;quot;author9-last&amp;quot;,&lt;br /&gt;
				&amp;quot;subject9&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;first9&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;First name 9&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Given or first name, middle names, or initials of the ninth author; don't wikilink.&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;given9&amp;quot;,&lt;br /&gt;
				&amp;quot;author-first9&amp;quot;,&lt;br /&gt;
				&amp;quot;author9-first&amp;quot;&lt;br /&gt;
			],&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;label&amp;quot;: &amp;quot;Date&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Full date of the source; do not wikilink&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;date&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;air-date&amp;quot;,&lt;br /&gt;
				&amp;quot;airdate&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;work&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Work&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Name of the work in which the cited book text is found&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;journal&amp;quot;,&lt;br /&gt;
				&amp;quot;website&amp;quot;,&lt;br /&gt;
				&amp;quot;newspaper&amp;quot;,&lt;br /&gt;
				&amp;quot;magazine&amp;quot;,&lt;br /&gt;
				&amp;quot;encyclopedia&amp;quot;,&lt;br /&gt;
				&amp;quot;encyclopaedia&amp;quot;,&lt;br /&gt;
				&amp;quot;dictionary&amp;quot;,&lt;br /&gt;
				&amp;quot;mailinglist&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;publisher&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Publisher&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Name of the publisher; displays after title&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;suggested&amp;quot;: true,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;distributor&amp;quot;,&lt;br /&gt;
				&amp;quot;institution&amp;quot;,&lt;br /&gt;
				&amp;quot;newsgroup&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;others&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Others&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Used to record other contributions to the work, such as 'Illustrated by John Smith' or 'Translated by John Smith'&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;year&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Year of publication&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Year of the source being referenced; use 'date' instead, if month and day are also known&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;suggested&amp;quot;: true&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;isbn&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;ISBN&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;International Standard Book Number; use the 13-digit ISBN where possible&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;suggested&amp;quot;: true,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;ISBN13&amp;quot;,&lt;br /&gt;
				&amp;quot;isbn13&amp;quot;,&lt;br /&gt;
				&amp;quot;ISBN&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;editor-last&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Editor last name&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The surname of the editor; don't wikilink, use 'editor-link'; can suffix with a numeral to add additional editors&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;editor&amp;quot;,&lt;br /&gt;
				&amp;quot;editor-surname&amp;quot;,&lt;br /&gt;
				&amp;quot;editor-last1&amp;quot;,&lt;br /&gt;
				&amp;quot;editor-surname1&amp;quot;,&lt;br /&gt;
				&amp;quot;editor1&amp;quot;,&lt;br /&gt;
				&amp;quot;editor1-last&amp;quot;,&lt;br /&gt;
				&amp;quot;editor1-surname&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;editor-first&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Editor first name&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Given or first name, middle names, or initials of the editor; don't wikilink, use 'editor-link'; can suffix with a numeral to add additional editors&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;editor-given&amp;quot;,&lt;br /&gt;
				&amp;quot;editor-first1&amp;quot;,&lt;br /&gt;
				&amp;quot;editor-given1&amp;quot;,&lt;br /&gt;
				&amp;quot;editor1-first&amp;quot;,&lt;br /&gt;
				&amp;quot;editor1-given&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;editor-link&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Link for editor&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Title of existing Wikipedia article about the editor&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;editorlink&amp;quot;,&lt;br /&gt;
				&amp;quot;editor-link1&amp;quot;,&lt;br /&gt;
				&amp;quot;editor1-link&amp;quot;,&lt;br /&gt;
				&amp;quot;editorlink1&amp;quot;,&lt;br /&gt;
				&amp;quot;editor1link&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;editor-mask&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Editor mask&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Replaces the name of the first editor with em dashes or text; set to a numeric value 'n' to set the dash 'n' em spaces wide; set to a text value to display the text without a trailing editor separator; for example, 'with' instead&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;editormask&amp;quot;,&lt;br /&gt;
				&amp;quot;editormask1&amp;quot;,&lt;br /&gt;
				&amp;quot;editor1-mask&amp;quot;,&lt;br /&gt;
				&amp;quot;editor-mask1&amp;quot;,&lt;br /&gt;
				&amp;quot;editor1mask&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;edition&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Edition&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;When the publication has more than one edition; for example: '2nd', 'Revised' etc.; suffixed by ' ed.'&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;series&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Series identifier&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Series identifier when the source is part of a series, such as a book series or a journal&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;version&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;volume&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Volume&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;For one publication published in several volumes&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;location&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Location of publication&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Geographical place of publication; usually not wikilinked; omit when the publication name includes place&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;place&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;suggested&amp;quot;: true&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;publication-place&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Place of publication&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Publication place shows after title; if 'place' or 'location' are also given, they are displayed before the title prefixed with 'written at'&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;publicationplace&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;publication-date&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Publication date&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Date of publication when different from the date the work was written; do not wikilink&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;publicationdate&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;page&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Page&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The number of a single page in the source that supports the content; displays after 'p.'; use either page= or pages=, but not both&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;p&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;pages&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Page(s) cited&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;A range of pages in the source that support the content (not an indication of the number of pages in the source); displays after 'pp.'; use either page= or pages=, but not both&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;suggested&amp;quot;: true,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;pp&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;nopp&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;No pp&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Set to 'y' to suppress the 'p.' or 'pp.' display with 'page' or 'pages' when inappropriate (such as 'Front cover')&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;at&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;At&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;May be used instead of 'page' or 'pages' where a page number is inappropriate or insufficient&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;language&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Language&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The language in which the source is written, if not English; use the full language name; do not use icons or templates&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;in&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;script-title&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Script title&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;For titles in languages that do not use a Latin-based alphabet (Arabic, Bengali, Chinese, Cyrillic, Greek, Hebrew, Japanese, Korean, Vietnamese, etc). Prefix with two-character ISO639-1 language code followed by a colon.  For Japanese use: |script-title=ja:...&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;trans-title&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Translated title&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;An English language title, if the source cited is in a foreign language; 'language' is recommended&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;trans_title&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;chapter&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Chapter&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The chapter heading of the source; may be wikilinked or with 'chapterurl' but not both. For the contribution alias, see contributor-last&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;contribution&amp;quot;,&lt;br /&gt;
				&amp;quot;entry&amp;quot;,&lt;br /&gt;
				&amp;quot;article&amp;quot;,&lt;br /&gt;
				&amp;quot;section&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;trans-chapter&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Translated chapter&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;An English language chapter heading, if the source cited is in a foreign language; 'language' is recommended&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;trans_chapter&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;type&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Type&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Additional information about the media type of the source; format in sentence case&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;medium&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;format&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Format&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Format of the work referred to by 'url'; examples: PDF, DOC, XLS; do not specify HTML&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;arxiv&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;arXiv identifier&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;An identifier for arXive electronic preprints of scientific papers&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;ARXIV&amp;quot;,&lt;br /&gt;
				&amp;quot;eprint&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;asin&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;ASIN&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Amazon Standard Identification Number; 10 characters&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;ASIN&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;asin-tld&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;ASIN TLD&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;ASIN top-level domain for Amazon sites other than the US&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;bibcode&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Bibcode&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Bibliographic Reference Code (REFCODE); 19 characters&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;biorxiv&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;biorXiv&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;biorXiv identifier; 6 digits&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;line&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;citeseerx&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;CiteSeerX&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;CiteSeerX identifier; found after the 'doi=' query parameter&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;line&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;doi&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;DOI&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Digital Object Identifier; begins with '10.'&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;DOI&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;issn&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;ISSN&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;International Standard Serial Number; 8 characters; may be split into two groups of four using a hyphen&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;ISSN&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;jfm&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;jfm code&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Jahrbuch über die Fortschritte der Mathematik classification code&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;jstor&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;JSTOR&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;JSTOR identifier&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;JSTOR&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;lccn&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;LCCN&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Library of Congress Control Number&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;LCCN&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;mr&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;MR&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Mathematical Reviews identifier&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;MR&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;oclc&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;OCLC&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Online Computer Library Center number&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;OCLC&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;ol&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;OL&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Open Library identifier; do not include \&amp;quot;OL\&amp;quot; at beginning of identifier&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;OL&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;osti&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;OSTI&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Office of Scientific and Technical Information identifier&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;OSTI&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;pmc&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;PMC&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;PubMed Center article number&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;pmid&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;PMID&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;PubMed Unique Identifier&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;PMID&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;rfc&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;RFC&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Request for Comments number&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;ssrn&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;SSRN&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Social Science Research Network&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;zbl&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Zbl&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Zentralblatt MATH journal identifier&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;id&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;id&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;A unique identifier used where none of the specialized ones are applicable&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;ID&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;quote&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Quote&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Relevant text quoted from the source; displays last, enclosed in quotes; needs to include terminating punctuation&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;quotation&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;ref&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Ref&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;An anchor identifier; can be made the target of wikilinks to full references; special value 'harv' generates an anchor suitable for the harv and sfn templates&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;name-list-format&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Name list format&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Accepts the single keyword 'vanc' to emulate Vancouver Style author / editor name-lists.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;mode&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Mode&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Sets separator and terminal punctuation to the style named in the assigned value; allowable values are: 'cs1' or 'cs2'&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;postscript&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Postscript&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The closing punctuation for the citation; ignored if 'quote' is defined; to suppress use reserved keyword 'none'&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;default&amp;quot;: &amp;quot;.&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;registration&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Registration&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;For online sources that require registration, set to 'yes' (or 'y', or 'true'); superseded by subscription if both are set&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;subscription&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Subscription&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;For online sources that require subscription, set to 'yes' (or 'y', or 'true'); supersedes registration if both are set&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;author-mask&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Author mask&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Replaces the name of the first author with em dashes or text; set to a numeric value 'n' to set the dash 'n' em spaces wide; set to a text value to display the text without a trailing author separator; for example, 'with' instead&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;authormask&amp;quot;,&lt;br /&gt;
				&amp;quot;authormask1&amp;quot;,&lt;br /&gt;
				&amp;quot;author1-mask&amp;quot;,&lt;br /&gt;
				&amp;quot;author-mask1&amp;quot;,&lt;br /&gt;
				&amp;quot;author1mask&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;author-mask2&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Author mask 2&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Replaces the name of the second author with em dashes or text; set to a numeric value 'n' to set the dash 'n' em spaces wide; set to a text value to display the text without a trailing author separator; for example, 'with' instead&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;authormask2&amp;quot;,&lt;br /&gt;
				&amp;quot;author2-mask&amp;quot;,&lt;br /&gt;
				&amp;quot;author2mask&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;author-mask3&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Author mask 3&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Replaces the name of the third author with em dashes or text; set to a numeric value 'n' to set the dash 'n' em spaces wide; set to a text value to display the text without a trailing author separator; for example, 'with' instead&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;authormask3&amp;quot;,&lt;br /&gt;
				&amp;quot;author3-mask&amp;quot;,&lt;br /&gt;
				&amp;quot;author3mask&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;author-mask4&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Author mask 4&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Replaces the name of the fourth author with em dashes or text; set to a numeric value 'n' to set the dash 'n' em spaces wide; set to a text value to display the text without a trailing author separator; for example, 'with' instead&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;authormask4&amp;quot;,&lt;br /&gt;
				&amp;quot;author4-mask&amp;quot;,&lt;br /&gt;
				&amp;quot;author4mask&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;author-mask5&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Author mask 5&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Replaces the name of the fifth author with em dashes or text; set to a numeric value 'n' to set the dash 'n' em spaces wide; set to a text value to display the text without a trailing author separator; for example, 'with' instead&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;authormask5&amp;quot;,&lt;br /&gt;
				&amp;quot;author5-mask&amp;quot;,&lt;br /&gt;
				&amp;quot;author5mask&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;author-mask6&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Author mask 6&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Replaces the name of the sixth author with em dashes or text; set to a numeric value 'n' to set the dash 'n' em spaces wide; set to a text value to display the text without a trailing author separator; for example, 'with' instead&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;authormask6&amp;quot;,&lt;br /&gt;
				&amp;quot;author6-mask&amp;quot;,&lt;br /&gt;
				&amp;quot;author6mask&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;author-mask7&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Author mask 7&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Replaces the name of the seventh author with em dashes or text; set to a numeric value 'n' to set the dash 'n' em spaces wide; set to a text value to display the text without a trailing author separator; for example, 'with' instead&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;authormask7&amp;quot;,&lt;br /&gt;
				&amp;quot;author7-mask&amp;quot;,&lt;br /&gt;
				&amp;quot;author7mask&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;author-mask8&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Author mask 8&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Replaces the name of the eighth author with em dashes or text; set to a numeric value 'n' to set the dash 'n' em spaces wide; set to a text value to display the text without a trailing author separator; for example, 'with' instead&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;authormask8&amp;quot;,&lt;br /&gt;
				&amp;quot;author8-mask&amp;quot;,&lt;br /&gt;
				&amp;quot;author8mask&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;author-mask9&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Author mask 9&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Replaces the name of the ninth author with em dashes or text; set to a numeric value 'n' to set the dash 'n' em spaces wide; set to a text value to display the text without a trailing author separator; for example, 'with' instead&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;authormask9&amp;quot;,&lt;br /&gt;
				&amp;quot;author9-mask&amp;quot;,&lt;br /&gt;
				&amp;quot;author9mask&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;display-authors&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Display authors&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;number of authors to display before 'et al.' is used&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;number&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;displayauthors&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;author-link&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Author link&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Title of existing Wikipedia article about the author; can suffix with a numeral to add additional authors&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;authorlink&amp;quot;,&lt;br /&gt;
				&amp;quot;subjectlink&amp;quot;,&lt;br /&gt;
				&amp;quot;subject-link&amp;quot;,&lt;br /&gt;
				&amp;quot;authorlink1&amp;quot;,&lt;br /&gt;
				&amp;quot;author-link1&amp;quot;,&lt;br /&gt;
				&amp;quot;author1-link&amp;quot;,&lt;br /&gt;
				&amp;quot;subjectlink1&amp;quot;,&lt;br /&gt;
				&amp;quot;author1link&amp;quot;,&lt;br /&gt;
				&amp;quot;subject-link1&amp;quot;,&lt;br /&gt;
				&amp;quot;subject1-link&amp;quot;,&lt;br /&gt;
				&amp;quot;subject1link&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;author-link2&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Author link 2&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Title of existing Wikipedia article about the second author; can suffix with a numeral to add additional authors&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;authorlink2&amp;quot;,&lt;br /&gt;
				&amp;quot;author2-link&amp;quot;,&lt;br /&gt;
				&amp;quot;subjectlink2&amp;quot;,&lt;br /&gt;
				&amp;quot;author2link&amp;quot;,&lt;br /&gt;
				&amp;quot;subject-link2&amp;quot;,&lt;br /&gt;
				&amp;quot;subject2-link&amp;quot;,&lt;br /&gt;
				&amp;quot;subject2link&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;author-link3&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Author link 3&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Title of existing Wikipedia article about the third author.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;authorlink3&amp;quot;,&lt;br /&gt;
				&amp;quot;author3-link&amp;quot;,&lt;br /&gt;
				&amp;quot;subjectlink3&amp;quot;,&lt;br /&gt;
				&amp;quot;author3link&amp;quot;,&lt;br /&gt;
				&amp;quot;subject-link3&amp;quot;,&lt;br /&gt;
				&amp;quot;subject3-link&amp;quot;,&lt;br /&gt;
				&amp;quot;subject3link&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;author-link4&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Author link 4&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Title of existing Wikipedia article about the fourth author.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;authorlink4&amp;quot;,&lt;br /&gt;
				&amp;quot;author4-link&amp;quot;,&lt;br /&gt;
				&amp;quot;subjectlink4&amp;quot;,&lt;br /&gt;
				&amp;quot;author4link&amp;quot;,&lt;br /&gt;
				&amp;quot;subject-link4&amp;quot;,&lt;br /&gt;
				&amp;quot;subject4-link&amp;quot;,&lt;br /&gt;
				&amp;quot;subject4link&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;author-link5&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Author link 5&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Title of existing Wikipedia article about the fifth author.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;authorlink5&amp;quot;,&lt;br /&gt;
				&amp;quot;author5-link&amp;quot;,&lt;br /&gt;
				&amp;quot;subjectlink5&amp;quot;,&lt;br /&gt;
				&amp;quot;author5link&amp;quot;,&lt;br /&gt;
				&amp;quot;subject-link5&amp;quot;,&lt;br /&gt;
				&amp;quot;subject5-link&amp;quot;,&lt;br /&gt;
				&amp;quot;subject5link&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;author-link6&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Author link 6&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Title of existing Wikipedia article about the sixth author.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;authorlink6&amp;quot;,&lt;br /&gt;
				&amp;quot;author6-link&amp;quot;,&lt;br /&gt;
				&amp;quot;subjectlink6&amp;quot;,&lt;br /&gt;
				&amp;quot;author6link&amp;quot;,&lt;br /&gt;
				&amp;quot;subject-link6&amp;quot;,&lt;br /&gt;
				&amp;quot;subject6-link&amp;quot;,&lt;br /&gt;
				&amp;quot;subject6link&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;author-link7&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Author link 7&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Title of existing Wikipedia article about the seventh author.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;authorlink7&amp;quot;,&lt;br /&gt;
				&amp;quot;author7-link&amp;quot;,&lt;br /&gt;
				&amp;quot;subjectlink7&amp;quot;,&lt;br /&gt;
				&amp;quot;author7link&amp;quot;,&lt;br /&gt;
				&amp;quot;subject-link7&amp;quot;,&lt;br /&gt;
				&amp;quot;subject7-link&amp;quot;,&lt;br /&gt;
				&amp;quot;subject7link&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;author-link8&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Author link 8&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Title of existing Wikipedia article about the eighth author.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;authorlink8&amp;quot;,&lt;br /&gt;
				&amp;quot;author8-link&amp;quot;,&lt;br /&gt;
				&amp;quot;subjectlink8&amp;quot;,&lt;br /&gt;
				&amp;quot;author8link&amp;quot;,&lt;br /&gt;
				&amp;quot;subject-link8&amp;quot;,&lt;br /&gt;
				&amp;quot;subject8-link&amp;quot;,&lt;br /&gt;
				&amp;quot;subject8link&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;author-link9&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Author link 9&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Title of existing Wikipedia article about the ninth author.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;authorlink9&amp;quot;,&lt;br /&gt;
				&amp;quot;author9-link&amp;quot;,&lt;br /&gt;
				&amp;quot;subjectlink9&amp;quot;,&lt;br /&gt;
				&amp;quot;author9link&amp;quot;,&lt;br /&gt;
				&amp;quot;subject-link9&amp;quot;,&lt;br /&gt;
				&amp;quot;subject9-link&amp;quot;,&lt;br /&gt;
				&amp;quot;subject9link&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;access-date&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;URL access date&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The full date when the original URL was accessed; do not wikilink&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;accessdate&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;orig-year&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Original year&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Original year of publication; provide specifics&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;origyear&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;editor-last2&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Last name of second editor&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The surname of the second editor; don't wikilink, use 'editor2-link'&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;editor-surname2&amp;quot;,&lt;br /&gt;
				&amp;quot;editor2&amp;quot;,&lt;br /&gt;
				&amp;quot;editor2-last&amp;quot;,&lt;br /&gt;
				&amp;quot;editor2-surname&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;editor-first2&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;First name of second editor&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Given or first name, middle names, or initials of the second editor; don't wikilink, use 'editor2-link'&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;editor-given2&amp;quot;,&lt;br /&gt;
				&amp;quot;editor2-first&amp;quot;,&lt;br /&gt;
				&amp;quot;editor2-given&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;editor-link2&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Link for second editor&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Title of existing Wikipedia article about the second editor&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;editor2-link&amp;quot;,&lt;br /&gt;
				&amp;quot;editorlink2&amp;quot;,&lt;br /&gt;
				&amp;quot;editor2link&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;editor-mask2&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Mask for second editor&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Replaces the name of the second editor with em dashes or text; set to a numeric value 'n' to set the dash 'n' em spaces wide; set to a text value to display the text without a trailing editor separator; for example, 'with' instead&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;editormask2&amp;quot;,&lt;br /&gt;
				&amp;quot;editor2-mask&amp;quot;,&lt;br /&gt;
				&amp;quot;editor2mask&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;editor-last3&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Last name of third editor&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The surname of the third editor; don't wikilink, use 'editor3-link'&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;editor-surname3&amp;quot;,&lt;br /&gt;
				&amp;quot;editor3&amp;quot;,&lt;br /&gt;
				&amp;quot;editor3-last&amp;quot;,&lt;br /&gt;
				&amp;quot;editor3-surname&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;editor-first3&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;First name of third editor&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Given or first name, middle names, or initials of the third editor; don't wikilink, use 'editor3-link'&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;editor-given3&amp;quot;,&lt;br /&gt;
				&amp;quot;editor3-first&amp;quot;,&lt;br /&gt;
				&amp;quot;editor3-given&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;editor-link3&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Link for third editor&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Title of existing Wikipedia article about the third editor&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;editor3-link&amp;quot;,&lt;br /&gt;
				&amp;quot;editorlink3&amp;quot;,&lt;br /&gt;
				&amp;quot;editor3link&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;editor-mask3&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Mask for third editor&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Replaces the name of the third editor with em dashes or text; set to a numeric value 'n' to set the dash 'n' em spaces wide; set to a text value to display the text without a trailing editor separator; for example, 'with' instead&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;editormask3&amp;quot;,&lt;br /&gt;
				&amp;quot;editor3-mask&amp;quot;,&lt;br /&gt;
				&amp;quot;editor3mask&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;editor-last4&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Last name of fourth editor&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The surname of the fourth editor; don't wikilink, use 'editor4-link'&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;editor-surname4&amp;quot;,&lt;br /&gt;
				&amp;quot;editor4&amp;quot;,&lt;br /&gt;
				&amp;quot;editor4-last&amp;quot;,&lt;br /&gt;
				&amp;quot;editor4-surname&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;editor-first4&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;First name of fourth editor&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Given or first name, middle names, or initials of the fourth editor; don't wikilink, use 'editor4-link'&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;editor-given4&amp;quot;,&lt;br /&gt;
				&amp;quot;editor4-first&amp;quot;,&lt;br /&gt;
				&amp;quot;editor4-given&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;editor-link4&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Link for fourth editor&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Title of existing Wikipedia article about the fourth editor&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;editor4-link&amp;quot;,&lt;br /&gt;
				&amp;quot;editorlink4&amp;quot;,&lt;br /&gt;
				&amp;quot;editor4link&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;editor-mask4&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Mask for fourth editor&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Replaces the name of the fourth editor with em dashes or text; set to a numeric value 'n' to set the dash 'n' em spaces wide; set to a text value to display the text without a trailing editor separator; for example, 'with' instead&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;editormask4&amp;quot;,&lt;br /&gt;
				&amp;quot;editor4-mask&amp;quot;,&lt;br /&gt;
				&amp;quot;editor4mask&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;editor-last5&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Last name of fifth editor&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The surname of the fifth editor; don't wikilink, use 'editor5-link'&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;editor-surname5&amp;quot;,&lt;br /&gt;
				&amp;quot;editor5&amp;quot;,&lt;br /&gt;
				&amp;quot;editor5-last&amp;quot;,&lt;br /&gt;
				&amp;quot;editor5-surname&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;editor-first5&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;First name of fifth editor&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Given or first name, middle names, or initials of the fifth editor; don't wikilink, use 'editor5-link'&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;editor-given5&amp;quot;,&lt;br /&gt;
				&amp;quot;editor5-first&amp;quot;,&lt;br /&gt;
				&amp;quot;editor5-given&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;editor-link5&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Link for fifth editor&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Title of existing Wikipedia article about the fifth editor&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;editor5-link&amp;quot;,&lt;br /&gt;
				&amp;quot;editorlink5&amp;quot;,&lt;br /&gt;
				&amp;quot;editor5link&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;editor-mask5&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Mask for fifth editor&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Replaces the name of the fifth editor with em dashes or text; set to a numeric value 'n' to set the dash 'n' em spaces wide; set to a text value to display the text without a trailing editor separator; for example, 'with' instead&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;editormask5&amp;quot;,&lt;br /&gt;
				&amp;quot;editor5-mask&amp;quot;,&lt;br /&gt;
				&amp;quot;editor5mask&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;editor-last6&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Last name of sixth editor&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The surname of the sixth editor; don't wikilink, use 'editor6-link'&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;editor-surname6&amp;quot;,&lt;br /&gt;
				&amp;quot;editor6&amp;quot;,&lt;br /&gt;
				&amp;quot;editor6-last&amp;quot;,&lt;br /&gt;
				&amp;quot;editor6-surname&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;editor-first6&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;First name of sixth editor&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Given or first name, middle names, or initials of the sixth editor; don't wikilink, use 'editor6-link'&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;editor-given6&amp;quot;,&lt;br /&gt;
				&amp;quot;editor6-first&amp;quot;,&lt;br /&gt;
				&amp;quot;editor6-given&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;editor-link6&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Link for sixth editor&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Title of existing Wikipedia article about the sixth editor&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;editor6-link&amp;quot;,&lt;br /&gt;
				&amp;quot;editorlink6&amp;quot;,&lt;br /&gt;
				&amp;quot;editor6link&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;editor-mask6&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Mask for sixth editor&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Replaces the name of the sixth editor with em dashes or text; set to a numeric value 'n' to set the dash 'n' em spaces wide; set to a text value to display the text without a trailing editor separator; for example, 'with' instead&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;editormask6&amp;quot;,&lt;br /&gt;
				&amp;quot;editor6-mask&amp;quot;,&lt;br /&gt;
				&amp;quot;editor6mask&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;editor-last7&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Last name of seventh editor&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The surname of the seventh editor; don't wikilink, use 'editor7-link'&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;editor-surname7&amp;quot;,&lt;br /&gt;
				&amp;quot;editor7&amp;quot;,&lt;br /&gt;
				&amp;quot;editor7-last&amp;quot;,&lt;br /&gt;
				&amp;quot;editor7-surname&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;editor-first7&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;First name of seventh editor&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Given or first name, middle names, or initials of the seventh editor; don't wikilink, use 'editor7-link'&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;editor-given7&amp;quot;,&lt;br /&gt;
				&amp;quot;editor7-first&amp;quot;,&lt;br /&gt;
				&amp;quot;editor7-given&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;editor-link7&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Link for seventh editor&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Title of existing Wikipedia article about the seventh editor&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;editor7-link&amp;quot;,&lt;br /&gt;
				&amp;quot;editorlink7&amp;quot;,&lt;br /&gt;
				&amp;quot;editor7link&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;editor-mask7&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Mask for seventh editor&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Replaces the name of the seventh editor with em dashes or text; set to a numeric value 'n' to set the dash 'n' em spaces wide; set to a text value to display the text without a trailing editor separator; for example, 'with' instead&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;editormask7&amp;quot;,&lt;br /&gt;
				&amp;quot;editor7-mask&amp;quot;,&lt;br /&gt;
				&amp;quot;editor7mask&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;editor-last8&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Last name of eighth editor&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The surname of the eighth editor; don't wikilink, use 'editor8-link'&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;editor-surname8&amp;quot;,&lt;br /&gt;
				&amp;quot;editor8&amp;quot;,&lt;br /&gt;
				&amp;quot;editor8-last&amp;quot;,&lt;br /&gt;
				&amp;quot;editor8-surname&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;editor-first8&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;First name of eighth editor&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Given or first name, middle names, or initials of the eighth editor; don't wikilink, use 'editor8-link'&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;editor-given8&amp;quot;,&lt;br /&gt;
				&amp;quot;editor8-first&amp;quot;,&lt;br /&gt;
				&amp;quot;editor8-given&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;editor-link8&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Link for eighth editor&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Title of existing Wikipedia article about the eighth editor&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;editor8-link&amp;quot;,&lt;br /&gt;
				&amp;quot;editorlink8&amp;quot;,&lt;br /&gt;
				&amp;quot;editor8link&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;editor-mask8&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Mask for eighth editor&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Replaces the name of the eighth editor with em dashes or text; set to a numeric value 'n' to set the dash 'n' em spaces wide; set to a text value to display the text without a trailing editor separator; for example, 'with' instead&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;editormask8&amp;quot;,&lt;br /&gt;
				&amp;quot;editor8-mask&amp;quot;,&lt;br /&gt;
				&amp;quot;editor8mask&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;editor-last9&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Last name of ninth editor&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The surname of the ninth editor; don't wikilink, use 'editor9-link'&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;editor-surname9&amp;quot;,&lt;br /&gt;
				&amp;quot;editor9&amp;quot;,&lt;br /&gt;
				&amp;quot;editor9-last&amp;quot;,&lt;br /&gt;
				&amp;quot;editor9-surname&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;editor-first9&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;First name of ninth editor&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Given or first name, middle names, or initials of the ninth editor; don't wikilink, use 'editor9-link'&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;editor-given9&amp;quot;,&lt;br /&gt;
				&amp;quot;editor9-first&amp;quot;,&lt;br /&gt;
				&amp;quot;editor9-given&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;editor-link9&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Link for ninth editor&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Title of existing Wikipedia article about the ninth editor&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;editor9-link&amp;quot;,&lt;br /&gt;
				&amp;quot;editorlink9&amp;quot;,&lt;br /&gt;
				&amp;quot;editor9link&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;editor-mask9&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Mask for ninth editor&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Replaces the name of the ninth editor with em dashes or text; set to a numeric value 'n' to set the dash 'n' em spaces wide; set to a text value to display the text without a trailing editor separator; for example, 'with' instead&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;editormask9&amp;quot;,&lt;br /&gt;
				&amp;quot;editor9-mask&amp;quot;,&lt;br /&gt;
				&amp;quot;editor9mask&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;chapter-url&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Chapter URL&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The URL of the online location where the text of the chapter can be found&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;chapterurl&amp;quot;,&lt;br /&gt;
				&amp;quot;contribution-url&amp;quot;,&lt;br /&gt;
				&amp;quot;section-url&amp;quot;,&lt;br /&gt;
				&amp;quot;contributionurl&amp;quot;,&lt;br /&gt;
				&amp;quot;sectionurl&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;doi-broken-date&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;DOI broken date&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The date that the DOI was determined to be broken&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;doi_brokendate&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;archive-url&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Archive URL&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The URL of an archived copy of a web page, if or in case the URL becomes unavailable; requires 'archivedate'&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;archiveurl&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;archive-date&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Archive date&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Date when the original URL was archived; do not wikilink&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;archivedate&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;dead-url&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Dead URL&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;If set to 'no', the title display is adjusted; useful for when the URL is archived preemptively but still live&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;deadurl&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;lay-url&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Lay URL&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;URL link to a non-technical summary or review of the source&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;lay-summary&amp;quot;,&lt;br /&gt;
				&amp;quot;laysummary&amp;quot;,&lt;br /&gt;
				&amp;quot;layurl&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;lay-source&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Lay source&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Name of the source of the laysummary; displays in italics, preceded by an en dash&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;laysource&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;lay-date&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Lay date&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Date of the summary; displays in parentheses&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;laydate&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;last-author-amp&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Last author ampersand&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;When set to any value, changes the separator between the last two names of the author list to 'space ampersand space'&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;lastauthoramp&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;via&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Aggregate or database provider, when different from the Publisher. Typically used for Ebooks.&amp;quot;,&lt;br /&gt;
			&amp;quot;example&amp;quot;: &amp;quot;Open Edition, JSTOR &amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;url-access&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;URL access level&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Classification of the access restrictions on the URL ('registration', 'subscription' or 'limited')&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;bibcode-access&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Bibcode access level&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;If the full text is available from ADS via this Bibcode, type 'free'.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;doi-access&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;DOI access level&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;If the full text is free to read via the DOI, type 'free'.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;hdl-access&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;HDL access level&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;If the full text is free to read via the HDL, type 'free'.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;jstor-access&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Jstor access level&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;If the full text is free to read on Jstor, type 'free'.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;ol-access&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;OpenLibrary access level&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;If the full text is free to read on OpenLibrary, type 'free'.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;osti-access&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;OSTI access level&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;If the full text is free to read on OSTI, type 'free'.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;ismn&amp;quot;: {&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;ISMN&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;ISMN&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;International Standard Music Number; Use the ISMN actually printed on or in the work. Hyphens or spaces in the ISMN are optional.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;example&amp;quot;: &amp;quot;979-0-9016791-7-7&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;eissn&amp;quot;: {&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;EISSN&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;EISSN&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;International Standard Serial Number for the electronic media of a serial publication; eight characters may be split into two groups of four using a hyphen, but not an en dash or a space.&amp;quot;,&lt;br /&gt;
			&amp;quot;example&amp;quot;: &amp;quot;2009-0048&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;editors&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Editors list&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Free-form list of editor names; use of this parameter is discouraged&amp;quot;,&lt;br /&gt;
			&amp;quot;deprecated&amp;quot;: &amp;quot;For multiple editors, use editor-last1, editor-first1 through editor-lastn, editor-firstn&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;translator-last&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Translator last name&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The surname of the translator; don't wikilink, use 'translator-link'; can suffix with a numeral to add additional translators.&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;translator&amp;quot;,&lt;br /&gt;
				&amp;quot;translator-last1&amp;quot;,&lt;br /&gt;
				&amp;quot;translator1&amp;quot;,&lt;br /&gt;
				&amp;quot;translator1-last&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;translator-first&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Translator first name&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Given or first name, middle names, or initials of the translator; don't wikilink, use 'translator-link'; can suffix with a numeral to add additional translators.&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;translator1-first&amp;quot;,&lt;br /&gt;
				&amp;quot;translator-first1&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;translator-link&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Translator link&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Title of existing Wikipedia article about the translator; can suffix with a numeral to add additional translators.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;translator-link1&amp;quot;,&lt;br /&gt;
				&amp;quot;translator1-link&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;translator-last2&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Translator last name 2&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The surname of the second translator; don't wikilink, use 'translator-link'.&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;translator2&amp;quot;,&lt;br /&gt;
				&amp;quot;translator2-last&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;translator-first2&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Translator first name 2&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Given or first name, middle names, or initials of the second translator; don't wikilink, use 'translator-link'.&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;translator2-first&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;translator-last3&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Translator last name 3&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The surname of the third translator; don't wikilink, use 'translator-link'.&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;translator3&amp;quot;,&lt;br /&gt;
				&amp;quot;translator3-last&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;translator-first3&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Translator first name 3&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Given or first name, middle names, or initials of the third translator; don't wikilink, use 'translator-link'.&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;translator3-first&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;translator-last4&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Translator last name 4&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The surname of the fourth translator; don't wikilink, use 'translator-link'.&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;translator4&amp;quot;,&lt;br /&gt;
				&amp;quot;translator4-last&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;translator-first4&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Translator first name 4&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Given or first name, middle names, or initials of the fourth translator; don't wikilink, use 'translator-link'.&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;translator4-first&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;translator-last5&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Translator last name 5&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The surname of the fifth translator; don't wikilink, use 'translator-link'.&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;translator5&amp;quot;,&lt;br /&gt;
				&amp;quot;translator5-last&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;translator-first5&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Translator first name 5&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Given or first name, middle names, or initials of the fifth translator; don't wikilink, use 'translator-link'.&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;translator5-first&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;translator-last6&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Translator last name 6&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The surname of the sixth translator; don't wikilink, use 'translator-link'.&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;translator6&amp;quot;,&lt;br /&gt;
				&amp;quot;translator6-last&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;translator-first6&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Translator first name 6&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Given or first name, middle names, or initials of the sixth translator; don't wikilink, use 'translator-link'.&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;translator6-first&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;translator-last7&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Translator last name 7&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The surname of the seventh translator; don't wikilink, use 'translator-link'.&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;translator7&amp;quot;,&lt;br /&gt;
				&amp;quot;translator7-last&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;translator-first7&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Translator first name 7&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Given or first name, middle names, or initials of the seventh translator; don't wikilink, use 'translator-link'.&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;translator7-first&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;translator-last8&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Translator last name 8&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The surname of the eighth translator; don't wikilink, use 'translator-link'.&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;translator8&amp;quot;,&lt;br /&gt;
				&amp;quot;translator8-last&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;translator-first8&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Translator first name 8&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Given or first name, middle names, or initials of the eighth translator; don't wikilink, use 'translator-link'.&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;translator8-first&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;translator-last9&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Translator last name 9&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The surname of the ninth translator; don't wikilink, use 'translator-link'.&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;translator9&amp;quot;,&lt;br /&gt;
				&amp;quot;translator9-last&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;translator-first9&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Translator first name 9&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Given or first name, middle names, or initials of the ninth translator; don't wikilink, use 'translator-link'.&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;translator9-first&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;translator-link2&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Translator link 2&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Title of existing Wikipedia article about the second translator.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;translator2-link&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;translator-link3&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Translator link 3&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Title of existing Wikipedia article about the third translator.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;translator3-link&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;translator-link4&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Translator link 4&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Title of existing Wikipedia article about the fourth translator.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;translator4-link&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;translator-link5&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Translator link 5&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Title of existing Wikipedia article about the fifth translator.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;translator5-link&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;translator-link6&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Translator link 6&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Title of existing Wikipedia article about the sixth translator.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;translator6-link&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;translator-link7&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Translator link 7&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Title of existing Wikipedia article about the seventh translator.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;translator7-link&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;translator-link8&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Translator link 8&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Title of existing Wikipedia article about the eighth translator.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;translator8-link&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;translator-link9&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Translator link 9&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Title of existing Wikipedia article about the ninth translator.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;translator9-link&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;vauthors&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Vancouver style author list&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;If using Vancouver style, comma separated list of author names; enclose corporate or institutional author names in doubled parentheses&amp;quot;,&lt;br /&gt;
			&amp;quot;example&amp;quot;: &amp;quot;Smythe JB, ((Megabux Corporation))&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;issue&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Issue&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Issue number. This parameter is not supported by and should generally not be used with cite book. Consider that a different cite template may be more appropriate, such as cite magazine or cite journal. See Help:Citation_Style_1#Pages.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;number&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;coauthor&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Coauthor&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Coauthor&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;deprecated&amp;quot;: &amp;quot;Use last# / first# or author or authors. If coauthor · coauthors are used for et al, then use display-authors=etal instead.Include coauthors in author or authors or use separate authorn or lastn/firstn to list coauthors. lastn/firstn is the preferred way of coding this.&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;coauthors&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Coauthors&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Coauthors&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;deprecated&amp;quot;: &amp;quot;Use last# / first# or author or authors. If coauthor · coauthors are used for et al, then use display-authors=etal instead.Include coauthors in author or authors or use separate authorn or lastn/firstn to list coauthors. lastn/firstn is the preferred way of coding this.&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;display-editors&amp;quot;: {&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;displayeditors&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Display Editors&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Controls the number of editor names that are displayed when a citation is published. To change the displayed number of editors, set display-editors to the desired number. For example, |display-editors=2 will display only the first two editors in a citation. By default, all editors are displayed. |display-editors=etal displays all editors in the list followed by et al.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;authors&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Authors list&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;List of authors as a free form list. Use of this parameter is discouraged, \&amp;quot;lastn\&amp;quot; to \&amp;quot;firstn\&amp;quot; are preferable. Warning: do not use if last or any of its aliases are used.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;people&amp;quot;,&lt;br /&gt;
				&amp;quot;host&amp;quot;,&lt;br /&gt;
				&amp;quot;credits&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;veditors&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Vancouver style editor list&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Comma separated list of editor names in Vancouver style; enclose corporate or institutional names in doubled parentheses&amp;quot;,&lt;br /&gt;
			&amp;quot;example&amp;quot;: &amp;quot;Smythe JB, ((Megabux Corporation))&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;city&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;City of Publication&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Where published&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;deprecated&amp;quot;: &amp;quot;Use place or location instead.&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;chapter-format&amp;quot;: {&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;contribution-format&amp;quot;,&lt;br /&gt;
				&amp;quot;section-format&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Format of Chapter URL&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Format of the work referred to by chapter-url; displayed in parentheses after chapter. HTML is implied and should not be specified.&amp;quot;,&lt;br /&gt;
			&amp;quot;example&amp;quot;: &amp;quot;PDF, DOC, or XLS&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;agency&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Agency&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Unusual in cite book. Use if an agency is needed in addition to publisher, etc.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;title-link&amp;quot;: {&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;titlelink&amp;quot;,&lt;br /&gt;
				&amp;quot;episode-link&amp;quot;,&lt;br /&gt;
				&amp;quot;episodelink&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Title link&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Title of existing Wikipedia article about the source named in title – do not use a web address; do not wikilink.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;ignore-isbn-error&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Ignore ISBN Error&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;True if ISBN Errors should be ignored.If set, page will be added to a maintenance category \&amp;quot;CS1 maint: Ignored ISBN errors\&amp;quot;.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;boolean&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;collaboration&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Collaboration&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Name of a group of authors or collaborators; requires author, last, or vauthors which list one or more primary authors; follows author name-list; appends 'et al.' to author name-list.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;script-chapter&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Script Chapter&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Chapter heading for languages that do not use a Latin-based alphabet (Arabic, Chinese, Cyrillic, Greek, Hebrew, Japanese, Korean, Vietnamese, etc); follows transliteration defined in chapter. Should be prefixed with an ISO 639-1 two-character code to help browsers properly display the script&amp;quot;,&lt;br /&gt;
			&amp;quot;example&amp;quot;: &amp;quot;ja:東京タワー&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;department&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Department&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Unusual in cite book.&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;class&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;arXiv Class&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Cite arXiv identifiers&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;hdl&amp;quot;: {&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;HDL&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot; Handle System identifier&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Handle System identifier for digital objects and other resources on the Internet&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;archive-format&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Archive Format&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Format of the Archive&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;df&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Date format&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Sets rendered dates to the specified format&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;maps&amp;quot;: {&lt;br /&gt;
		&amp;quot;proveit&amp;quot;: {&lt;br /&gt;
			&amp;quot;main&amp;quot;: &amp;quot;title&amp;quot;,&lt;br /&gt;
			&amp;quot;textarea&amp;quot;: [&lt;br /&gt;
				&amp;quot;quote&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;citoid&amp;quot;: {&lt;br /&gt;
			&amp;quot;edition&amp;quot;: &amp;quot;edition&amp;quot;,&lt;br /&gt;
			&amp;quot;title&amp;quot;: &amp;quot;title&amp;quot;,&lt;br /&gt;
			&amp;quot;bookTitle&amp;quot;: &amp;quot;title&amp;quot;,&lt;br /&gt;
			&amp;quot;publicationTitle&amp;quot;: &amp;quot;title&amp;quot;,&lt;br /&gt;
			&amp;quot;url&amp;quot;: &amp;quot;url&amp;quot;,&lt;br /&gt;
			&amp;quot;publisher&amp;quot;: &amp;quot;publisher&amp;quot;,&lt;br /&gt;
			&amp;quot;date&amp;quot;: &amp;quot;date&amp;quot;,&lt;br /&gt;
			&amp;quot;place&amp;quot;: &amp;quot;location&amp;quot;,&lt;br /&gt;
			&amp;quot;ISSN&amp;quot;: [&lt;br /&gt;
				&amp;quot;issn&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;ISBN&amp;quot;: [&lt;br /&gt;
				&amp;quot;isbn&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;oclc&amp;quot;: &amp;quot;oclc&amp;quot;,&lt;br /&gt;
			&amp;quot;PMCID&amp;quot;: &amp;quot;pmc&amp;quot;,&lt;br /&gt;
			&amp;quot;PMID&amp;quot;: &amp;quot;pmid&amp;quot;,&lt;br /&gt;
			&amp;quot;pages&amp;quot;: &amp;quot;pages&amp;quot;,&lt;br /&gt;
			&amp;quot;volume&amp;quot;: &amp;quot;volume&amp;quot;,&lt;br /&gt;
			&amp;quot;series&amp;quot;: &amp;quot;series&amp;quot;,&lt;br /&gt;
			&amp;quot;DOI&amp;quot;: &amp;quot;doi&amp;quot;,&lt;br /&gt;
			&amp;quot;language&amp;quot;: &amp;quot;language&amp;quot;,&lt;br /&gt;
			&amp;quot;translator&amp;quot;: [&lt;br /&gt;
				[&lt;br /&gt;
					&amp;quot;translator-first&amp;quot;,&lt;br /&gt;
					&amp;quot;translator-last&amp;quot;&lt;br /&gt;
				],&lt;br /&gt;
				[&lt;br /&gt;
					&amp;quot;translator-first2&amp;quot;,&lt;br /&gt;
					&amp;quot;translator-last2&amp;quot;&lt;br /&gt;
				],&lt;br /&gt;
				[&lt;br /&gt;
					&amp;quot;translator-first3&amp;quot;,&lt;br /&gt;
					&amp;quot;translator-last3&amp;quot;&lt;br /&gt;
				],&lt;br /&gt;
				[&lt;br /&gt;
					&amp;quot;translator-first3&amp;quot;,&lt;br /&gt;
					&amp;quot;translator-last3&amp;quot;&lt;br /&gt;
				],&lt;br /&gt;
				[&lt;br /&gt;
					&amp;quot;translator-first4&amp;quot;,&lt;br /&gt;
					&amp;quot;translator-last4&amp;quot;&lt;br /&gt;
				],&lt;br /&gt;
				[&lt;br /&gt;
					&amp;quot;translator-first5&amp;quot;,&lt;br /&gt;
					&amp;quot;translator-last5&amp;quot;&lt;br /&gt;
				],&lt;br /&gt;
				[&lt;br /&gt;
					&amp;quot;translator-first6&amp;quot;,&lt;br /&gt;
					&amp;quot;translator-last6&amp;quot;&lt;br /&gt;
				],&lt;br /&gt;
				[&lt;br /&gt;
					&amp;quot;translator-first7&amp;quot;,&lt;br /&gt;
					&amp;quot;translator-last7&amp;quot;&lt;br /&gt;
				],&lt;br /&gt;
				[&lt;br /&gt;
					&amp;quot;translator-first8&amp;quot;,&lt;br /&gt;
					&amp;quot;translator-last8&amp;quot;&lt;br /&gt;
				],&lt;br /&gt;
				[&lt;br /&gt;
					&amp;quot;translator-first9&amp;quot;,&lt;br /&gt;
					&amp;quot;translator-last9&amp;quot;&lt;br /&gt;
				]&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;contributor&amp;quot;: &amp;quot;others&amp;quot;,&lt;br /&gt;
			&amp;quot;author&amp;quot;: [&lt;br /&gt;
				[&lt;br /&gt;
					&amp;quot;first&amp;quot;,&lt;br /&gt;
					&amp;quot;last&amp;quot;&lt;br /&gt;
				],&lt;br /&gt;
				[&lt;br /&gt;
					&amp;quot;first2&amp;quot;,&lt;br /&gt;
					&amp;quot;last2&amp;quot;&lt;br /&gt;
				],&lt;br /&gt;
				[&lt;br /&gt;
					&amp;quot;first3&amp;quot;,&lt;br /&gt;
					&amp;quot;last3&amp;quot;&lt;br /&gt;
				],&lt;br /&gt;
				[&lt;br /&gt;
					&amp;quot;first4&amp;quot;,&lt;br /&gt;
					&amp;quot;last4&amp;quot;&lt;br /&gt;
				],&lt;br /&gt;
				[&lt;br /&gt;
					&amp;quot;first5&amp;quot;,&lt;br /&gt;
					&amp;quot;last5&amp;quot;&lt;br /&gt;
				],&lt;br /&gt;
				[&lt;br /&gt;
					&amp;quot;first6&amp;quot;,&lt;br /&gt;
					&amp;quot;last6&amp;quot;&lt;br /&gt;
				],&lt;br /&gt;
				[&lt;br /&gt;
					&amp;quot;first7&amp;quot;,&lt;br /&gt;
					&amp;quot;last7&amp;quot;&lt;br /&gt;
				],&lt;br /&gt;
				[&lt;br /&gt;
					&amp;quot;first8&amp;quot;,&lt;br /&gt;
					&amp;quot;last8&amp;quot;&lt;br /&gt;
				],&lt;br /&gt;
				[&lt;br /&gt;
					&amp;quot;first9&amp;quot;,&lt;br /&gt;
					&amp;quot;last9&amp;quot;&lt;br /&gt;
				]&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;editor&amp;quot;: [&lt;br /&gt;
				[&lt;br /&gt;
					&amp;quot;editor-first&amp;quot;,&lt;br /&gt;
					&amp;quot;editor-last&amp;quot;&lt;br /&gt;
				],&lt;br /&gt;
				[&lt;br /&gt;
					&amp;quot;editor-first2&amp;quot;,&lt;br /&gt;
					&amp;quot;editor-last2&amp;quot;&lt;br /&gt;
				],&lt;br /&gt;
				[&lt;br /&gt;
					&amp;quot;editor-first3&amp;quot;,&lt;br /&gt;
					&amp;quot;editor-last3&amp;quot;&lt;br /&gt;
				],&lt;br /&gt;
				[&lt;br /&gt;
					&amp;quot;editor-first4&amp;quot;,&lt;br /&gt;
					&amp;quot;editor-last4&amp;quot;&lt;br /&gt;
				],&lt;br /&gt;
				[&lt;br /&gt;
					&amp;quot;editor-first5&amp;quot;,&lt;br /&gt;
					&amp;quot;editor-last5&amp;quot;&lt;br /&gt;
				],&lt;br /&gt;
				[&lt;br /&gt;
					&amp;quot;editor-first6&amp;quot;,&lt;br /&gt;
					&amp;quot;editor-last6&amp;quot;&lt;br /&gt;
				],&lt;br /&gt;
				[&lt;br /&gt;
					&amp;quot;editor-first7&amp;quot;,&lt;br /&gt;
					&amp;quot;editor-last7&amp;quot;&lt;br /&gt;
				],&lt;br /&gt;
				[&lt;br /&gt;
					&amp;quot;editor-first8&amp;quot;,&lt;br /&gt;
					&amp;quot;editor-last8&amp;quot;&lt;br /&gt;
				],&lt;br /&gt;
				[&lt;br /&gt;
					&amp;quot;editor-first9&amp;quot;,&lt;br /&gt;
					&amp;quot;editor-last9&amp;quot;&lt;br /&gt;
				]&lt;br /&gt;
			]&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;paramOrder&amp;quot;: [&lt;br /&gt;
		&amp;quot;url&amp;quot;,&lt;br /&gt;
		&amp;quot;title&amp;quot;,&lt;br /&gt;
		&amp;quot;title-link&amp;quot;,&lt;br /&gt;
		&amp;quot;last&amp;quot;,&lt;br /&gt;
		&amp;quot;first&amp;quot;,&lt;br /&gt;
		&amp;quot;vauthors&amp;quot;,&lt;br /&gt;
		&amp;quot;last2&amp;quot;,&lt;br /&gt;
		&amp;quot;first2&amp;quot;,&lt;br /&gt;
		&amp;quot;last3&amp;quot;,&lt;br /&gt;
		&amp;quot;first3&amp;quot;,&lt;br /&gt;
		&amp;quot;last4&amp;quot;,&lt;br /&gt;
		&amp;quot;first4&amp;quot;,&lt;br /&gt;
		&amp;quot;last5&amp;quot;,&lt;br /&gt;
		&amp;quot;first5&amp;quot;,&lt;br /&gt;
		&amp;quot;last6&amp;quot;,&lt;br /&gt;
		&amp;quot;first6&amp;quot;,&lt;br /&gt;
		&amp;quot;last7&amp;quot;,&lt;br /&gt;
		&amp;quot;first7&amp;quot;,&lt;br /&gt;
		&amp;quot;last8&amp;quot;,&lt;br /&gt;
		&amp;quot;first8&amp;quot;,&lt;br /&gt;
		&amp;quot;last9&amp;quot;,&lt;br /&gt;
		&amp;quot;first9&amp;quot;,&lt;br /&gt;
		&amp;quot;collaboration&amp;quot;,&lt;br /&gt;
		&amp;quot;date&amp;quot;,&lt;br /&gt;
		&amp;quot;work&amp;quot;,&lt;br /&gt;
		&amp;quot;publisher&amp;quot;,&lt;br /&gt;
		&amp;quot;others&amp;quot;,&lt;br /&gt;
		&amp;quot;year&amp;quot;,&lt;br /&gt;
		&amp;quot;isbn&amp;quot;,&lt;br /&gt;
		&amp;quot;ignore-isbn-error&amp;quot;,&lt;br /&gt;
		&amp;quot;editor-last&amp;quot;,&lt;br /&gt;
		&amp;quot;editor-first&amp;quot;,&lt;br /&gt;
		&amp;quot;editor-link&amp;quot;,&lt;br /&gt;
		&amp;quot;editor-mask&amp;quot;,&lt;br /&gt;
		&amp;quot;veditors&amp;quot;,&lt;br /&gt;
		&amp;quot;editors&amp;quot;,&lt;br /&gt;
		&amp;quot;edition&amp;quot;,&lt;br /&gt;
		&amp;quot;series&amp;quot;,&lt;br /&gt;
		&amp;quot;volume&amp;quot;,&lt;br /&gt;
		&amp;quot;location&amp;quot;,&lt;br /&gt;
		&amp;quot;publication-place&amp;quot;,&lt;br /&gt;
		&amp;quot;publication-date&amp;quot;,&lt;br /&gt;
		&amp;quot;page&amp;quot;,&lt;br /&gt;
		&amp;quot;pages&amp;quot;,&lt;br /&gt;
		&amp;quot;nopp&amp;quot;,&lt;br /&gt;
		&amp;quot;at&amp;quot;,&lt;br /&gt;
		&amp;quot;language&amp;quot;,&lt;br /&gt;
		&amp;quot;translator-last&amp;quot;,&lt;br /&gt;
		&amp;quot;translator-first&amp;quot;,&lt;br /&gt;
		&amp;quot;script-title&amp;quot;,&lt;br /&gt;
		&amp;quot;trans-title&amp;quot;,&lt;br /&gt;
		&amp;quot;chapter&amp;quot;,&lt;br /&gt;
		&amp;quot;script-chapter&amp;quot;,&lt;br /&gt;
		&amp;quot;trans-chapter&amp;quot;,&lt;br /&gt;
		&amp;quot;type&amp;quot;,&lt;br /&gt;
		&amp;quot;format&amp;quot;,&lt;br /&gt;
		&amp;quot;arxiv&amp;quot;,&lt;br /&gt;
		&amp;quot;class&amp;quot;,&lt;br /&gt;
		&amp;quot;asin&amp;quot;,&lt;br /&gt;
		&amp;quot;asin-tld&amp;quot;,&lt;br /&gt;
		&amp;quot;bibcode&amp;quot;,&lt;br /&gt;
		&amp;quot;biorxiv&amp;quot;,&lt;br /&gt;
		&amp;quot;citeseerx&amp;quot;,&lt;br /&gt;
		&amp;quot;doi&amp;quot;,&lt;br /&gt;
		&amp;quot;eissn&amp;quot;,&lt;br /&gt;
		&amp;quot;hdl&amp;quot;,&lt;br /&gt;
		&amp;quot;ismn&amp;quot;,&lt;br /&gt;
		&amp;quot;issn&amp;quot;,&lt;br /&gt;
		&amp;quot;jfm&amp;quot;,&lt;br /&gt;
		&amp;quot;jstor&amp;quot;,&lt;br /&gt;
		&amp;quot;lccn&amp;quot;,&lt;br /&gt;
		&amp;quot;mr&amp;quot;,&lt;br /&gt;
		&amp;quot;oclc&amp;quot;,&lt;br /&gt;
		&amp;quot;ol&amp;quot;,&lt;br /&gt;
		&amp;quot;osti&amp;quot;,&lt;br /&gt;
		&amp;quot;pmc&amp;quot;,&lt;br /&gt;
		&amp;quot;pmid&amp;quot;,&lt;br /&gt;
		&amp;quot;rfc&amp;quot;,&lt;br /&gt;
		&amp;quot;ssrn&amp;quot;,&lt;br /&gt;
		&amp;quot;zbl&amp;quot;,&lt;br /&gt;
		&amp;quot;id&amp;quot;,&lt;br /&gt;
		&amp;quot;quote&amp;quot;,&lt;br /&gt;
		&amp;quot;ref&amp;quot;,&lt;br /&gt;
		&amp;quot;name-list-format&amp;quot;,&lt;br /&gt;
		&amp;quot;mode&amp;quot;,&lt;br /&gt;
		&amp;quot;postscript&amp;quot;,&lt;br /&gt;
		&amp;quot;registration&amp;quot;,&lt;br /&gt;
		&amp;quot;subscription&amp;quot;,&lt;br /&gt;
		&amp;quot;author-mask&amp;quot;,&lt;br /&gt;
		&amp;quot;author-mask2&amp;quot;,&lt;br /&gt;
		&amp;quot;author-mask3&amp;quot;,&lt;br /&gt;
		&amp;quot;author-mask4&amp;quot;,&lt;br /&gt;
		&amp;quot;author-mask5&amp;quot;,&lt;br /&gt;
		&amp;quot;author-mask6&amp;quot;,&lt;br /&gt;
		&amp;quot;author-mask7&amp;quot;,&lt;br /&gt;
		&amp;quot;author-mask8&amp;quot;,&lt;br /&gt;
		&amp;quot;author-mask9&amp;quot;,&lt;br /&gt;
		&amp;quot;display-authors&amp;quot;,&lt;br /&gt;
		&amp;quot;author-link&amp;quot;,&lt;br /&gt;
		&amp;quot;author-link2&amp;quot;,&lt;br /&gt;
		&amp;quot;author-link3&amp;quot;,&lt;br /&gt;
		&amp;quot;author-link4&amp;quot;,&lt;br /&gt;
		&amp;quot;author-link5&amp;quot;,&lt;br /&gt;
		&amp;quot;author-link6&amp;quot;,&lt;br /&gt;
		&amp;quot;author-link7&amp;quot;,&lt;br /&gt;
		&amp;quot;author-link8&amp;quot;,&lt;br /&gt;
		&amp;quot;author-link9&amp;quot;,&lt;br /&gt;
		&amp;quot;access-date&amp;quot;,&lt;br /&gt;
		&amp;quot;orig-year&amp;quot;,&lt;br /&gt;
		&amp;quot;editor-last2&amp;quot;,&lt;br /&gt;
		&amp;quot;editor-first2&amp;quot;,&lt;br /&gt;
		&amp;quot;editor-link2&amp;quot;,&lt;br /&gt;
		&amp;quot;editor-mask2&amp;quot;,&lt;br /&gt;
		&amp;quot;editor-last3&amp;quot;,&lt;br /&gt;
		&amp;quot;editor-first3&amp;quot;,&lt;br /&gt;
		&amp;quot;editor-link3&amp;quot;,&lt;br /&gt;
		&amp;quot;editor-mask3&amp;quot;,&lt;br /&gt;
		&amp;quot;editor-last4&amp;quot;,&lt;br /&gt;
		&amp;quot;editor-first4&amp;quot;,&lt;br /&gt;
		&amp;quot;editor-link4&amp;quot;,&lt;br /&gt;
		&amp;quot;editor-mask4&amp;quot;,&lt;br /&gt;
		&amp;quot;editor-last5&amp;quot;,&lt;br /&gt;
		&amp;quot;editor-first5&amp;quot;,&lt;br /&gt;
		&amp;quot;editor-link5&amp;quot;,&lt;br /&gt;
		&amp;quot;editor-mask5&amp;quot;,&lt;br /&gt;
		&amp;quot;editor-last6&amp;quot;,&lt;br /&gt;
		&amp;quot;editor-first6&amp;quot;,&lt;br /&gt;
		&amp;quot;editor-link6&amp;quot;,&lt;br /&gt;
		&amp;quot;editor-mask6&amp;quot;,&lt;br /&gt;
		&amp;quot;editor-last7&amp;quot;,&lt;br /&gt;
		&amp;quot;editor-first7&amp;quot;,&lt;br /&gt;
		&amp;quot;editor-link7&amp;quot;,&lt;br /&gt;
		&amp;quot;editor-mask7&amp;quot;,&lt;br /&gt;
		&amp;quot;editor-last8&amp;quot;,&lt;br /&gt;
		&amp;quot;editor-first8&amp;quot;,&lt;br /&gt;
		&amp;quot;editor-link8&amp;quot;,&lt;br /&gt;
		&amp;quot;editor-mask8&amp;quot;,&lt;br /&gt;
		&amp;quot;editor-last9&amp;quot;,&lt;br /&gt;
		&amp;quot;editor-first9&amp;quot;,&lt;br /&gt;
		&amp;quot;editor-link9&amp;quot;,&lt;br /&gt;
		&amp;quot;editor-mask9&amp;quot;,&lt;br /&gt;
		&amp;quot;display-editors&amp;quot;,&lt;br /&gt;
		&amp;quot;translator-last2&amp;quot;,&lt;br /&gt;
		&amp;quot;translator-first2&amp;quot;,&lt;br /&gt;
		&amp;quot;translator-last3&amp;quot;,&lt;br /&gt;
		&amp;quot;translator-first3&amp;quot;,&lt;br /&gt;
		&amp;quot;translator-last4&amp;quot;,&lt;br /&gt;
		&amp;quot;translator-first4&amp;quot;,&lt;br /&gt;
		&amp;quot;translator-last5&amp;quot;,&lt;br /&gt;
		&amp;quot;translator-first5&amp;quot;,&lt;br /&gt;
		&amp;quot;translator-last6&amp;quot;,&lt;br /&gt;
		&amp;quot;translator-first6&amp;quot;,&lt;br /&gt;
		&amp;quot;translator-last7&amp;quot;,&lt;br /&gt;
		&amp;quot;translator-first7&amp;quot;,&lt;br /&gt;
		&amp;quot;translator-last8&amp;quot;,&lt;br /&gt;
		&amp;quot;translator-first8&amp;quot;,&lt;br /&gt;
		&amp;quot;translator-last9&amp;quot;,&lt;br /&gt;
		&amp;quot;translator-first9&amp;quot;,&lt;br /&gt;
		&amp;quot;translator-link&amp;quot;,&lt;br /&gt;
		&amp;quot;translator-link2&amp;quot;,&lt;br /&gt;
		&amp;quot;translator-link3&amp;quot;,&lt;br /&gt;
		&amp;quot;translator-link4&amp;quot;,&lt;br /&gt;
		&amp;quot;translator-link5&amp;quot;,&lt;br /&gt;
		&amp;quot;translator-link6&amp;quot;,&lt;br /&gt;
		&amp;quot;translator-link7&amp;quot;,&lt;br /&gt;
		&amp;quot;translator-link8&amp;quot;,&lt;br /&gt;
		&amp;quot;translator-link9&amp;quot;,&lt;br /&gt;
		&amp;quot;chapter-url&amp;quot;,&lt;br /&gt;
		&amp;quot;chapter-format&amp;quot;,&lt;br /&gt;
		&amp;quot;doi-broken-date&amp;quot;,&lt;br /&gt;
		&amp;quot;url-access&amp;quot;,&lt;br /&gt;
		&amp;quot;archive-url&amp;quot;,&lt;br /&gt;
		&amp;quot;archive-format&amp;quot;,&lt;br /&gt;
		&amp;quot;archive-date&amp;quot;,&lt;br /&gt;
		&amp;quot;dead-url&amp;quot;,&lt;br /&gt;
		&amp;quot;lay-url&amp;quot;,&lt;br /&gt;
		&amp;quot;lay-source&amp;quot;,&lt;br /&gt;
		&amp;quot;lay-date&amp;quot;,&lt;br /&gt;
		&amp;quot;last-author-amp&amp;quot;,&lt;br /&gt;
		&amp;quot;via&amp;quot;,&lt;br /&gt;
		&amp;quot;bibcode-access&amp;quot;,&lt;br /&gt;
		&amp;quot;doi-access&amp;quot;,&lt;br /&gt;
		&amp;quot;hdl-access&amp;quot;,&lt;br /&gt;
		&amp;quot;jstor-access&amp;quot;,&lt;br /&gt;
		&amp;quot;ol-access&amp;quot;,&lt;br /&gt;
		&amp;quot;osti-access&amp;quot;,&lt;br /&gt;
		&amp;quot;issue&amp;quot;,&lt;br /&gt;
		&amp;quot;coauthor&amp;quot;,&lt;br /&gt;
		&amp;quot;coauthors&amp;quot;,&lt;br /&gt;
		&amp;quot;authors&amp;quot;,&lt;br /&gt;
		&amp;quot;city&amp;quot;,&lt;br /&gt;
		&amp;quot;agency&amp;quot;,&lt;br /&gt;
		&amp;quot;department&amp;quot;,&lt;br /&gt;
		&amp;quot;df&amp;quot;&lt;br /&gt;
	],&lt;br /&gt;
	&amp;quot;format&amp;quot;: &amp;quot;inline&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=Template:Collapse_bottom&amp;diff=1368</id>
		<title>Template:Collapse bottom</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=Template:Collapse_bottom&amp;diff=1368"/>
		<updated>2019-09-06T09:28:27Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;|}&amp;lt;/div&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation|Template:Collapse top/doc}}&lt;br /&gt;
&amp;lt;!-- PLEASE ADD THIS TEMPLATE'S CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=Template:Collapse_top&amp;diff=1370</id>
		<title>Template:Collapse top</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=Template:Collapse_top&amp;diff=1370"/>
		<updated>2019-09-06T09:28:27Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;margin-left:{{{indent|0}}}&amp;quot;&amp;gt;&amp;lt;!-- NOTE: width renders incorrectly if added to main STYLE section --&amp;gt;&lt;br /&gt;
{| &amp;lt;!-- Template:Collapse top --&amp;gt; class=&amp;quot;mw-collapsible {{{{{|safesubst:}}}#if:{{{expand|{{{collapse|}}}}}}||mw-collapsed}} {{{class|}}}&amp;quot; style=&amp;quot;background: {{{bg1|transparent}}}; text-align: left; border: {{{border|1px}}} solid {{{b-color|Silver}}}; margin: 0.2em auto auto; width:{{{{{|safesubst:}}}#if:{{{width|}}}|{{{width}}}|100%}}; clear: {{{clear|both}}}; padding: 1px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background: {{{bg|#{{main other|F0F2F5|CCFFCC}}}}}; font-size:87%; padding:0.2em 0.3em; text-align:{{{{{|safesubst:}}}#if:{{{left|}}}|left|center}}; {{{{{|safesubst:}}}#if:{{{fc|}}}|color: {{{fc}}};|}}&amp;quot; | &amp;lt;div style=&amp;quot;display:inline;font-size:115%&amp;quot;&amp;gt;{{{1|{{{title|{{{reason|{{{header|{{{heading|{{{result|Extended content}}}}}}}}}}}}}}}}}}&amp;lt;/div&amp;gt;   &lt;br /&gt;
{{{{{|safesubst:}}}#if:{{{warning|{{{2|}}}}}}&lt;br /&gt;
|{{{{{|safesubst:}}}!}}-&lt;br /&gt;
{{{{{|safesubst:}}}!}} style=&amp;quot;text-align:center; font-style:italic;&amp;quot; {{{{{|safesubst:}}}!}} {{{2|The following is a closed debate. {{strongbad|Please do not modify it.}} }}} }}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border: solid {{{border2|1px Silver}}}; padding: {{{padding|0.6em}}}; background: {{{bg2|White}}};&amp;quot; {{{{{|safesubst:}}}!}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{lorem ipsum|3}}&lt;br /&gt;
{{Collapse bottom}}&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
{{Collapse top/TemplateData}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=Module:Yesno&amp;diff=1360</id>
		<title>Module:Yesno</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=Module:Yesno&amp;diff=1360"/>
		<updated>2019-09-06T09:28:27Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Function allowing for consistent treatment of boolean-like wikitext input.&lt;br /&gt;
-- It works similarly to the template {{yesno}}.&lt;br /&gt;
&lt;br /&gt;
return function (val, default)&lt;br /&gt;
	-- If your wiki uses non-ascii characters for any of &amp;quot;yes&amp;quot;, &amp;quot;no&amp;quot;, etc., you&lt;br /&gt;
	-- should replace &amp;quot;val:lower()&amp;quot; with &amp;quot;mw.ustring.lower(val)&amp;quot; in the&lt;br /&gt;
	-- following line.&lt;br /&gt;
	val = type(val) == 'string' and val:lower() or val&lt;br /&gt;
	if val == nil then&lt;br /&gt;
		return nil&lt;br /&gt;
	elseif val == true &lt;br /&gt;
		or val == 'yes'&lt;br /&gt;
		or val == 'y'&lt;br /&gt;
		or val == 'true'&lt;br /&gt;
		or val == 't'&lt;br /&gt;
		or val == 'on'&lt;br /&gt;
		or tonumber(val) == 1&lt;br /&gt;
	then&lt;br /&gt;
		return true&lt;br /&gt;
	elseif val == false&lt;br /&gt;
		or val == 'no'&lt;br /&gt;
		or val == 'n'&lt;br /&gt;
		or val == 'false'&lt;br /&gt;
		or val == 'f'&lt;br /&gt;
		or val == 'off'&lt;br /&gt;
		or tonumber(val) == 0&lt;br /&gt;
	then&lt;br /&gt;
		return false&lt;br /&gt;
	else&lt;br /&gt;
		return default&lt;br /&gt;
	end&lt;br /&gt;
end&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=Module:Unicode_data/scripts&amp;diff=1358</id>
		<title>Module:Unicode data/scripts</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=Module:Unicode_data/scripts&amp;diff=1358"/>
		<updated>2019-09-06T09:28:26Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--[=[&lt;br /&gt;
-- Official Unicode script values for individual codepoints and ranges of&lt;br /&gt;
-- codepoints.&lt;br /&gt;
&lt;br /&gt;
-- https://www.unicode.org/Public/UNIDATA/Scripts.txt provided&lt;br /&gt;
-- the script names, and https://www.unicode.org/Public/UNIDATA/PropertyValueAliases.txt&lt;br /&gt;
-- provided script codes corresponding to the names (see [[Script (Unicode)]]).&lt;br /&gt;
--]=]&lt;br /&gt;
&lt;br /&gt;
local data = {&lt;br /&gt;
	singles = {&lt;br /&gt;
		[0x000AA] = &amp;quot;Latn&amp;quot;,&lt;br /&gt;
		[0x000BA] = &amp;quot;Latn&amp;quot;,&lt;br /&gt;
		[0x000D7] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x000F7] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x00374] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x0037E] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x0037F] = &amp;quot;Grek&amp;quot;,&lt;br /&gt;
		[0x00384] = &amp;quot;Grek&amp;quot;,&lt;br /&gt;
		[0x00385] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x00386] = &amp;quot;Grek&amp;quot;,&lt;br /&gt;
		[0x00387] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x0038C] = &amp;quot;Grek&amp;quot;,&lt;br /&gt;
		[0x00589] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x0058A] = &amp;quot;Armn&amp;quot;,&lt;br /&gt;
		[0x00605] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x0060C] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x0061B] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x0061C] = &amp;quot;Arab&amp;quot;,&lt;br /&gt;
		[0x0061E] = &amp;quot;Arab&amp;quot;,&lt;br /&gt;
		[0x0061F] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x00640] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x00670] = &amp;quot;Zinh&amp;quot;,&lt;br /&gt;
		[0x006DD] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x0085E] = &amp;quot;Mand&amp;quot;,&lt;br /&gt;
		[0x008E2] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x009B2] = &amp;quot;Beng&amp;quot;,&lt;br /&gt;
		[0x009D7] = &amp;quot;Beng&amp;quot;,&lt;br /&gt;
		[0x00A3C] = &amp;quot;Guru&amp;quot;,&lt;br /&gt;
		[0x00A51] = &amp;quot;Guru&amp;quot;,&lt;br /&gt;
		[0x00A5E] = &amp;quot;Guru&amp;quot;,&lt;br /&gt;
		[0x00AD0] = &amp;quot;Gujr&amp;quot;,&lt;br /&gt;
		[0x00B9C] = &amp;quot;Taml&amp;quot;,&lt;br /&gt;
		[0x00BD0] = &amp;quot;Taml&amp;quot;,&lt;br /&gt;
		[0x00BD7] = &amp;quot;Taml&amp;quot;,&lt;br /&gt;
		[0x00CDE] = &amp;quot;Knda&amp;quot;,&lt;br /&gt;
		[0x00DBD] = &amp;quot;Sinh&amp;quot;,&lt;br /&gt;
		[0x00DCA] = &amp;quot;Sinh&amp;quot;,&lt;br /&gt;
		[0x00DD6] = &amp;quot;Sinh&amp;quot;,&lt;br /&gt;
		[0x00E3F] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x00E84] = &amp;quot;Laoo&amp;quot;,&lt;br /&gt;
		[0x00EA5] = &amp;quot;Laoo&amp;quot;,&lt;br /&gt;
		[0x00EC6] = &amp;quot;Laoo&amp;quot;,&lt;br /&gt;
		[0x010C7] = &amp;quot;Geor&amp;quot;,&lt;br /&gt;
		[0x010CD] = &amp;quot;Geor&amp;quot;,&lt;br /&gt;
		[0x010FB] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x01258] = &amp;quot;Ethi&amp;quot;,&lt;br /&gt;
		[0x012C0] = &amp;quot;Ethi&amp;quot;,&lt;br /&gt;
		[0x01804] = &amp;quot;Mong&amp;quot;,&lt;br /&gt;
		[0x01805] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x01940] = &amp;quot;Limb&amp;quot;,&lt;br /&gt;
		[0x01CD3] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x01CE1] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x01CED] = &amp;quot;Zinh&amp;quot;,&lt;br /&gt;
		[0x01CF4] = &amp;quot;Zinh&amp;quot;,&lt;br /&gt;
		[0x01CFA] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x01D2B] = &amp;quot;Cyrl&amp;quot;,&lt;br /&gt;
		[0x01D78] = &amp;quot;Cyrl&amp;quot;,&lt;br /&gt;
		[0x01DBF] = &amp;quot;Grek&amp;quot;,&lt;br /&gt;
		[0x01F59] = &amp;quot;Grek&amp;quot;,&lt;br /&gt;
		[0x01F5B] = &amp;quot;Grek&amp;quot;,&lt;br /&gt;
		[0x01F5D] = &amp;quot;Grek&amp;quot;,&lt;br /&gt;
		[0x02071] = &amp;quot;Latn&amp;quot;,&lt;br /&gt;
		[0x0207F] = &amp;quot;Latn&amp;quot;,&lt;br /&gt;
		[0x02126] = &amp;quot;Grek&amp;quot;,&lt;br /&gt;
		[0x02132] = &amp;quot;Latn&amp;quot;,&lt;br /&gt;
		[0x0214E] = &amp;quot;Latn&amp;quot;,&lt;br /&gt;
		[0x02D27] = &amp;quot;Geor&amp;quot;,&lt;br /&gt;
		[0x02D2D] = &amp;quot;Geor&amp;quot;,&lt;br /&gt;
		[0x02D7F] = &amp;quot;Tfng&amp;quot;,&lt;br /&gt;
		[0x03005] = &amp;quot;Hani&amp;quot;,&lt;br /&gt;
		[0x03006] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x03007] = &amp;quot;Hani&amp;quot;,&lt;br /&gt;
		[0x030A0] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x0A92E] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x0A92F] = &amp;quot;Kali&amp;quot;,&lt;br /&gt;
		[0x0A95F] = &amp;quot;Rjng&amp;quot;,&lt;br /&gt;
		[0x0A9CF] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x0AB5B] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x0AB65] = &amp;quot;Grek&amp;quot;,&lt;br /&gt;
		[0x0FB3E] = &amp;quot;Hebr&amp;quot;,&lt;br /&gt;
		[0x0FEFF] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x0FF70] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x101A0] = &amp;quot;Grek&amp;quot;,&lt;br /&gt;
		[0x101FD] = &amp;quot;Zinh&amp;quot;,&lt;br /&gt;
		[0x102E0] = &amp;quot;Zinh&amp;quot;,&lt;br /&gt;
		[0x1039F] = &amp;quot;Ugar&amp;quot;,&lt;br /&gt;
		[0x1056F] = &amp;quot;Aghb&amp;quot;,&lt;br /&gt;
		[0x10808] = &amp;quot;Cprt&amp;quot;,&lt;br /&gt;
		[0x1083C] = &amp;quot;Cprt&amp;quot;,&lt;br /&gt;
		[0x1083F] = &amp;quot;Cprt&amp;quot;,&lt;br /&gt;
		[0x1091F] = &amp;quot;Phnx&amp;quot;,&lt;br /&gt;
		[0x1093F] = &amp;quot;Lydi&amp;quot;,&lt;br /&gt;
		[0x1107F] = &amp;quot;Brah&amp;quot;,&lt;br /&gt;
		[0x110CD] = &amp;quot;Kthi&amp;quot;,&lt;br /&gt;
		[0x11288] = &amp;quot;Mult&amp;quot;,&lt;br /&gt;
		[0x1133B] = &amp;quot;Zinh&amp;quot;,&lt;br /&gt;
		[0x11350] = &amp;quot;Gran&amp;quot;,&lt;br /&gt;
		[0x11357] = &amp;quot;Gran&amp;quot;,&lt;br /&gt;
		[0x1145B] = &amp;quot;Newa&amp;quot;,&lt;br /&gt;
		[0x118FF] = &amp;quot;Wara&amp;quot;,&lt;br /&gt;
		[0x11D3A] = &amp;quot;Gonm&amp;quot;,&lt;br /&gt;
		[0x11FFF] = &amp;quot;Taml&amp;quot;,&lt;br /&gt;
		[0x16FE0] = &amp;quot;Tang&amp;quot;,&lt;br /&gt;
		[0x16FE1] = &amp;quot;Nshu&amp;quot;,&lt;br /&gt;
		[0x1B000] = &amp;quot;Kana&amp;quot;,&lt;br /&gt;
		[0x1D4A2] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x1D4BB] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x1D546] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x1E2FF] = &amp;quot;Wcho&amp;quot;,&lt;br /&gt;
		[0x1EE24] = &amp;quot;Arab&amp;quot;,&lt;br /&gt;
		[0x1EE27] = &amp;quot;Arab&amp;quot;,&lt;br /&gt;
		[0x1EE39] = &amp;quot;Arab&amp;quot;,&lt;br /&gt;
		[0x1EE3B] = &amp;quot;Arab&amp;quot;,&lt;br /&gt;
		[0x1EE42] = &amp;quot;Arab&amp;quot;,&lt;br /&gt;
		[0x1EE47] = &amp;quot;Arab&amp;quot;,&lt;br /&gt;
		[0x1EE49] = &amp;quot;Arab&amp;quot;,&lt;br /&gt;
		[0x1EE4B] = &amp;quot;Arab&amp;quot;,&lt;br /&gt;
		[0x1EE54] = &amp;quot;Arab&amp;quot;,&lt;br /&gt;
		[0x1EE57] = &amp;quot;Arab&amp;quot;,&lt;br /&gt;
		[0x1EE59] = &amp;quot;Arab&amp;quot;,&lt;br /&gt;
		[0x1EE5B] = &amp;quot;Arab&amp;quot;,&lt;br /&gt;
		[0x1EE5D] = &amp;quot;Arab&amp;quot;,&lt;br /&gt;
		[0x1EE5F] = &amp;quot;Arab&amp;quot;,&lt;br /&gt;
		[0x1EE64] = &amp;quot;Arab&amp;quot;,&lt;br /&gt;
		[0x1EE7E] = &amp;quot;Arab&amp;quot;,&lt;br /&gt;
		[0x1F200] = &amp;quot;Hira&amp;quot;,&lt;br /&gt;
		[0xE0001] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	&lt;br /&gt;
	ranges = {&lt;br /&gt;
		{ 0x00000, 0x00040, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x00041, 0x0005A, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x0005B, 0x00060, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x00061, 0x0007A, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x0007B, 0x000A9, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x000AB, 0x000B9, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x000BB, 0x000BF, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x000C0, 0x000D6, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x000D8, 0x000F6, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x000F8, 0x002B8, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x002B9, 0x002DF, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x002E0, 0x002E4, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x002E5, 0x002E9, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x002EA, 0x002EB, &amp;quot;Bopo&amp;quot; },&lt;br /&gt;
		{ 0x002EC, 0x002FF, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x00300, 0x0036F, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
		{ 0x00370, 0x00373, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x00375, 0x00377, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x0037A, 0x0037D, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x00388, 0x0038A, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x0038E, 0x003A1, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x003A3, 0x003E1, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x003E2, 0x003EF, &amp;quot;Copt&amp;quot; },&lt;br /&gt;
		{ 0x003F0, 0x003FF, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x00400, 0x00484, &amp;quot;Cyrl&amp;quot; },&lt;br /&gt;
		{ 0x00485, 0x00486, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
		{ 0x00487, 0x0052F, &amp;quot;Cyrl&amp;quot; },&lt;br /&gt;
		{ 0x00531, 0x00556, &amp;quot;Armn&amp;quot; },&lt;br /&gt;
		{ 0x00559, 0x00588, &amp;quot;Armn&amp;quot; },&lt;br /&gt;
		{ 0x0058D, 0x0058F, &amp;quot;Armn&amp;quot; },&lt;br /&gt;
		{ 0x00591, 0x005C7, &amp;quot;Hebr&amp;quot; },&lt;br /&gt;
		{ 0x005D0, 0x005EA, &amp;quot;Hebr&amp;quot; },&lt;br /&gt;
		{ 0x005EF, 0x005F4, &amp;quot;Hebr&amp;quot; },&lt;br /&gt;
		{ 0x00600, 0x00604, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x00606, 0x0060B, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x0060D, 0x0061A, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x00620, 0x0063F, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x00641, 0x0064A, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x0064B, 0x00655, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
		{ 0x00656, 0x0066F, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x00671, 0x006DC, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x006DE, 0x006FF, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x00700, 0x0070D, &amp;quot;Syrc&amp;quot; },&lt;br /&gt;
		{ 0x0070F, 0x0074A, &amp;quot;Syrc&amp;quot; },&lt;br /&gt;
		{ 0x0074D, 0x0074F, &amp;quot;Syrc&amp;quot; },&lt;br /&gt;
		{ 0x00750, 0x0077F, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x00780, 0x007B1, &amp;quot;Thaa&amp;quot; },&lt;br /&gt;
		{ 0x007C0, 0x007FA, &amp;quot;Nkoo&amp;quot; },&lt;br /&gt;
		{ 0x007FD, 0x007FF, &amp;quot;Nkoo&amp;quot; },&lt;br /&gt;
		{ 0x00800, 0x0082D, &amp;quot;Samr&amp;quot; },&lt;br /&gt;
		{ 0x00830, 0x0083E, &amp;quot;Samr&amp;quot; },&lt;br /&gt;
		{ 0x00840, 0x0085B, &amp;quot;Mand&amp;quot; },&lt;br /&gt;
		{ 0x00860, 0x0086A, &amp;quot;Syrc&amp;quot; },&lt;br /&gt;
		{ 0x008A0, 0x008B4, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x008B6, 0x008BD, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x008D3, 0x008E1, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x008E3, 0x008FF, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x00900, 0x00950, &amp;quot;Deva&amp;quot; },&lt;br /&gt;
		{ 0x00951, 0x00954, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
		{ 0x00955, 0x00963, &amp;quot;Deva&amp;quot; },&lt;br /&gt;
		{ 0x00964, 0x00965, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x00966, 0x0097F, &amp;quot;Deva&amp;quot; },&lt;br /&gt;
		{ 0x00980, 0x00983, &amp;quot;Beng&amp;quot; },&lt;br /&gt;
		{ 0x00985, 0x0098C, &amp;quot;Beng&amp;quot; },&lt;br /&gt;
		{ 0x0098F, 0x00990, &amp;quot;Beng&amp;quot; },&lt;br /&gt;
		{ 0x00993, 0x009A8, &amp;quot;Beng&amp;quot; },&lt;br /&gt;
		{ 0x009AA, 0x009B0, &amp;quot;Beng&amp;quot; },&lt;br /&gt;
		{ 0x009B6, 0x009B9, &amp;quot;Beng&amp;quot; },&lt;br /&gt;
		{ 0x009BC, 0x009C4, &amp;quot;Beng&amp;quot; },&lt;br /&gt;
		{ 0x009C7, 0x009C8, &amp;quot;Beng&amp;quot; },&lt;br /&gt;
		{ 0x009CB, 0x009CE, &amp;quot;Beng&amp;quot; },&lt;br /&gt;
		{ 0x009DC, 0x009DD, &amp;quot;Beng&amp;quot; },&lt;br /&gt;
		{ 0x009DF, 0x009E3, &amp;quot;Beng&amp;quot; },&lt;br /&gt;
		{ 0x009E6, 0x009FE, &amp;quot;Beng&amp;quot; },&lt;br /&gt;
		{ 0x00A01, 0x00A03, &amp;quot;Guru&amp;quot; },&lt;br /&gt;
		{ 0x00A05, 0x00A0A, &amp;quot;Guru&amp;quot; },&lt;br /&gt;
		{ 0x00A0F, 0x00A10, &amp;quot;Guru&amp;quot; },&lt;br /&gt;
		{ 0x00A13, 0x00A28, &amp;quot;Guru&amp;quot; },&lt;br /&gt;
		{ 0x00A2A, 0x00A30, &amp;quot;Guru&amp;quot; },&lt;br /&gt;
		{ 0x00A32, 0x00A33, &amp;quot;Guru&amp;quot; },&lt;br /&gt;
		{ 0x00A35, 0x00A36, &amp;quot;Guru&amp;quot; },&lt;br /&gt;
		{ 0x00A38, 0x00A39, &amp;quot;Guru&amp;quot; },&lt;br /&gt;
		{ 0x00A3E, 0x00A42, &amp;quot;Guru&amp;quot; },&lt;br /&gt;
		{ 0x00A47, 0x00A48, &amp;quot;Guru&amp;quot; },&lt;br /&gt;
		{ 0x00A4B, 0x00A4D, &amp;quot;Guru&amp;quot; },&lt;br /&gt;
		{ 0x00A59, 0x00A5C, &amp;quot;Guru&amp;quot; },&lt;br /&gt;
		{ 0x00A66, 0x00A76, &amp;quot;Guru&amp;quot; },&lt;br /&gt;
		{ 0x00A81, 0x00A83, &amp;quot;Gujr&amp;quot; },&lt;br /&gt;
		{ 0x00A85, 0x00A8D, &amp;quot;Gujr&amp;quot; },&lt;br /&gt;
		{ 0x00A8F, 0x00A91, &amp;quot;Gujr&amp;quot; },&lt;br /&gt;
		{ 0x00A93, 0x00AA8, &amp;quot;Gujr&amp;quot; },&lt;br /&gt;
		{ 0x00AAA, 0x00AB0, &amp;quot;Gujr&amp;quot; },&lt;br /&gt;
		{ 0x00AB2, 0x00AB3, &amp;quot;Gujr&amp;quot; },&lt;br /&gt;
		{ 0x00AB5, 0x00AB9, &amp;quot;Gujr&amp;quot; },&lt;br /&gt;
		{ 0x00ABC, 0x00AC5, &amp;quot;Gujr&amp;quot; },&lt;br /&gt;
		{ 0x00AC7, 0x00AC9, &amp;quot;Gujr&amp;quot; },&lt;br /&gt;
		{ 0x00ACB, 0x00ACD, &amp;quot;Gujr&amp;quot; },&lt;br /&gt;
		{ 0x00AE0, 0x00AE3, &amp;quot;Gujr&amp;quot; },&lt;br /&gt;
		{ 0x00AE6, 0x00AF1, &amp;quot;Gujr&amp;quot; },&lt;br /&gt;
		{ 0x00AF9, 0x00AFF, &amp;quot;Gujr&amp;quot; },&lt;br /&gt;
		{ 0x00B01, 0x00B03, &amp;quot;Orya&amp;quot; },&lt;br /&gt;
		{ 0x00B05, 0x00B0C, &amp;quot;Orya&amp;quot; },&lt;br /&gt;
		{ 0x00B0F, 0x00B10, &amp;quot;Orya&amp;quot; },&lt;br /&gt;
		{ 0x00B13, 0x00B28, &amp;quot;Orya&amp;quot; },&lt;br /&gt;
		{ 0x00B2A, 0x00B30, &amp;quot;Orya&amp;quot; },&lt;br /&gt;
		{ 0x00B32, 0x00B33, &amp;quot;Orya&amp;quot; },&lt;br /&gt;
		{ 0x00B35, 0x00B39, &amp;quot;Orya&amp;quot; },&lt;br /&gt;
		{ 0x00B3C, 0x00B44, &amp;quot;Orya&amp;quot; },&lt;br /&gt;
		{ 0x00B47, 0x00B48, &amp;quot;Orya&amp;quot; },&lt;br /&gt;
		{ 0x00B4B, 0x00B4D, &amp;quot;Orya&amp;quot; },&lt;br /&gt;
		{ 0x00B56, 0x00B57, &amp;quot;Orya&amp;quot; },&lt;br /&gt;
		{ 0x00B5C, 0x00B5D, &amp;quot;Orya&amp;quot; },&lt;br /&gt;
		{ 0x00B5F, 0x00B63, &amp;quot;Orya&amp;quot; },&lt;br /&gt;
		{ 0x00B66, 0x00B77, &amp;quot;Orya&amp;quot; },&lt;br /&gt;
		{ 0x00B82, 0x00B83, &amp;quot;Taml&amp;quot; },&lt;br /&gt;
		{ 0x00B85, 0x00B8A, &amp;quot;Taml&amp;quot; },&lt;br /&gt;
		{ 0x00B8E, 0x00B90, &amp;quot;Taml&amp;quot; },&lt;br /&gt;
		{ 0x00B92, 0x00B95, &amp;quot;Taml&amp;quot; },&lt;br /&gt;
		{ 0x00B99, 0x00B9A, &amp;quot;Taml&amp;quot; },&lt;br /&gt;
		{ 0x00B9E, 0x00B9F, &amp;quot;Taml&amp;quot; },&lt;br /&gt;
		{ 0x00BA3, 0x00BA4, &amp;quot;Taml&amp;quot; },&lt;br /&gt;
		{ 0x00BA8, 0x00BAA, &amp;quot;Taml&amp;quot; },&lt;br /&gt;
		{ 0x00BAE, 0x00BB9, &amp;quot;Taml&amp;quot; },&lt;br /&gt;
		{ 0x00BBE, 0x00BC2, &amp;quot;Taml&amp;quot; },&lt;br /&gt;
		{ 0x00BC6, 0x00BC8, &amp;quot;Taml&amp;quot; },&lt;br /&gt;
		{ 0x00BCA, 0x00BCD, &amp;quot;Taml&amp;quot; },&lt;br /&gt;
		{ 0x00BE6, 0x00BFA, &amp;quot;Taml&amp;quot; },&lt;br /&gt;
		{ 0x00C00, 0x00C0C, &amp;quot;Telu&amp;quot; },&lt;br /&gt;
		{ 0x00C0E, 0x00C10, &amp;quot;Telu&amp;quot; },&lt;br /&gt;
		{ 0x00C12, 0x00C28, &amp;quot;Telu&amp;quot; },&lt;br /&gt;
		{ 0x00C2A, 0x00C39, &amp;quot;Telu&amp;quot; },&lt;br /&gt;
		{ 0x00C3D, 0x00C44, &amp;quot;Telu&amp;quot; },&lt;br /&gt;
		{ 0x00C46, 0x00C48, &amp;quot;Telu&amp;quot; },&lt;br /&gt;
		{ 0x00C4A, 0x00C4D, &amp;quot;Telu&amp;quot; },&lt;br /&gt;
		{ 0x00C55, 0x00C56, &amp;quot;Telu&amp;quot; },&lt;br /&gt;
		{ 0x00C58, 0x00C5A, &amp;quot;Telu&amp;quot; },&lt;br /&gt;
		{ 0x00C60, 0x00C63, &amp;quot;Telu&amp;quot; },&lt;br /&gt;
		{ 0x00C66, 0x00C6F, &amp;quot;Telu&amp;quot; },&lt;br /&gt;
		{ 0x00C77, 0x00C7F, &amp;quot;Telu&amp;quot; },&lt;br /&gt;
		{ 0x00C80, 0x00C8C, &amp;quot;Knda&amp;quot; },&lt;br /&gt;
		{ 0x00C8E, 0x00C90, &amp;quot;Knda&amp;quot; },&lt;br /&gt;
		{ 0x00C92, 0x00CA8, &amp;quot;Knda&amp;quot; },&lt;br /&gt;
		{ 0x00CAA, 0x00CB3, &amp;quot;Knda&amp;quot; },&lt;br /&gt;
		{ 0x00CB5, 0x00CB9, &amp;quot;Knda&amp;quot; },&lt;br /&gt;
		{ 0x00CBC, 0x00CC4, &amp;quot;Knda&amp;quot; },&lt;br /&gt;
		{ 0x00CC6, 0x00CC8, &amp;quot;Knda&amp;quot; },&lt;br /&gt;
		{ 0x00CCA, 0x00CCD, &amp;quot;Knda&amp;quot; },&lt;br /&gt;
		{ 0x00CD5, 0x00CD6, &amp;quot;Knda&amp;quot; },&lt;br /&gt;
		{ 0x00CE0, 0x00CE3, &amp;quot;Knda&amp;quot; },&lt;br /&gt;
		{ 0x00CE6, 0x00CEF, &amp;quot;Knda&amp;quot; },&lt;br /&gt;
		{ 0x00CF1, 0x00CF2, &amp;quot;Knda&amp;quot; },&lt;br /&gt;
		{ 0x00D00, 0x00D03, &amp;quot;Mlym&amp;quot; },&lt;br /&gt;
		{ 0x00D05, 0x00D0C, &amp;quot;Mlym&amp;quot; },&lt;br /&gt;
		{ 0x00D0E, 0x00D10, &amp;quot;Mlym&amp;quot; },&lt;br /&gt;
		{ 0x00D12, 0x00D44, &amp;quot;Mlym&amp;quot; },&lt;br /&gt;
		{ 0x00D46, 0x00D48, &amp;quot;Mlym&amp;quot; },&lt;br /&gt;
		{ 0x00D4A, 0x00D4F, &amp;quot;Mlym&amp;quot; },&lt;br /&gt;
		{ 0x00D54, 0x00D63, &amp;quot;Mlym&amp;quot; },&lt;br /&gt;
		{ 0x00D66, 0x00D7F, &amp;quot;Mlym&amp;quot; },&lt;br /&gt;
		{ 0x00D82, 0x00D83, &amp;quot;Sinh&amp;quot; },&lt;br /&gt;
		{ 0x00D85, 0x00D96, &amp;quot;Sinh&amp;quot; },&lt;br /&gt;
		{ 0x00D9A, 0x00DB1, &amp;quot;Sinh&amp;quot; },&lt;br /&gt;
		{ 0x00DB3, 0x00DBB, &amp;quot;Sinh&amp;quot; },&lt;br /&gt;
		{ 0x00DC0, 0x00DC6, &amp;quot;Sinh&amp;quot; },&lt;br /&gt;
		{ 0x00DCF, 0x00DD4, &amp;quot;Sinh&amp;quot; },&lt;br /&gt;
		{ 0x00DD8, 0x00DDF, &amp;quot;Sinh&amp;quot; },&lt;br /&gt;
		{ 0x00DE6, 0x00DEF, &amp;quot;Sinh&amp;quot; },&lt;br /&gt;
		{ 0x00DF2, 0x00DF4, &amp;quot;Sinh&amp;quot; },&lt;br /&gt;
		{ 0x00E01, 0x00E3A, &amp;quot;Thai&amp;quot; },&lt;br /&gt;
		{ 0x00E40, 0x00E5B, &amp;quot;Thai&amp;quot; },&lt;br /&gt;
		{ 0x00E81, 0x00E82, &amp;quot;Laoo&amp;quot; },&lt;br /&gt;
		{ 0x00E86, 0x00E8A, &amp;quot;Laoo&amp;quot; },&lt;br /&gt;
		{ 0x00E8C, 0x00EA3, &amp;quot;Laoo&amp;quot; },&lt;br /&gt;
		{ 0x00EA7, 0x00EBD, &amp;quot;Laoo&amp;quot; },&lt;br /&gt;
		{ 0x00EC0, 0x00EC4, &amp;quot;Laoo&amp;quot; },&lt;br /&gt;
		{ 0x00EC8, 0x00ECD, &amp;quot;Laoo&amp;quot; },&lt;br /&gt;
		{ 0x00ED0, 0x00ED9, &amp;quot;Laoo&amp;quot; },&lt;br /&gt;
		{ 0x00EDC, 0x00EDF, &amp;quot;Laoo&amp;quot; },&lt;br /&gt;
		{ 0x00F00, 0x00F47, &amp;quot;Tibt&amp;quot; },&lt;br /&gt;
		{ 0x00F49, 0x00F6C, &amp;quot;Tibt&amp;quot; },&lt;br /&gt;
		{ 0x00F71, 0x00F97, &amp;quot;Tibt&amp;quot; },&lt;br /&gt;
		{ 0x00F99, 0x00FBC, &amp;quot;Tibt&amp;quot; },&lt;br /&gt;
		{ 0x00FBE, 0x00FCC, &amp;quot;Tibt&amp;quot; },&lt;br /&gt;
		{ 0x00FCE, 0x00FD4, &amp;quot;Tibt&amp;quot; },&lt;br /&gt;
		{ 0x00FD5, 0x00FD8, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x00FD9, 0x00FDA, &amp;quot;Tibt&amp;quot; },&lt;br /&gt;
		{ 0x01000, 0x0109F, &amp;quot;Mymr&amp;quot; },&lt;br /&gt;
		{ 0x010A0, 0x010C5, &amp;quot;Geor&amp;quot; },&lt;br /&gt;
		{ 0x010D0, 0x010FA, &amp;quot;Geor&amp;quot; },&lt;br /&gt;
		{ 0x010FC, 0x010FF, &amp;quot;Geor&amp;quot; },&lt;br /&gt;
		{ 0x01100, 0x011FF, &amp;quot;Hang&amp;quot; },&lt;br /&gt;
		{ 0x01200, 0x01248, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x0124A, 0x0124D, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x01250, 0x01256, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x0125A, 0x0125D, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x01260, 0x01288, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x0128A, 0x0128D, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x01290, 0x012B0, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x012B2, 0x012B5, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x012B8, 0x012BE, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x012C2, 0x012C5, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x012C8, 0x012D6, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x012D8, 0x01310, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x01312, 0x01315, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x01318, 0x0135A, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x0135D, 0x0137C, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x01380, 0x01399, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x013A0, 0x013F5, &amp;quot;Cher&amp;quot; },&lt;br /&gt;
		{ 0x013F8, 0x013FD, &amp;quot;Cher&amp;quot; },&lt;br /&gt;
		{ 0x01400, 0x0167F, &amp;quot;Cans&amp;quot; },&lt;br /&gt;
		{ 0x01680, 0x0169C, &amp;quot;Ogam&amp;quot; },&lt;br /&gt;
		{ 0x016A0, 0x016EA, &amp;quot;Runr&amp;quot; },&lt;br /&gt;
		{ 0x016EB, 0x016ED, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x016EE, 0x016F8, &amp;quot;Runr&amp;quot; },&lt;br /&gt;
		{ 0x01700, 0x0170C, &amp;quot;Tglg&amp;quot; },&lt;br /&gt;
		{ 0x0170E, 0x01714, &amp;quot;Tglg&amp;quot; },&lt;br /&gt;
		{ 0x01720, 0x01734, &amp;quot;Hano&amp;quot; },&lt;br /&gt;
		{ 0x01735, 0x01736, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x01740, 0x01753, &amp;quot;Buhd&amp;quot; },&lt;br /&gt;
		{ 0x01760, 0x0176C, &amp;quot;Tagb&amp;quot; },&lt;br /&gt;
		{ 0x0176E, 0x01770, &amp;quot;Tagb&amp;quot; },&lt;br /&gt;
		{ 0x01772, 0x01773, &amp;quot;Tagb&amp;quot; },&lt;br /&gt;
		{ 0x01780, 0x017DD, &amp;quot;Khmr&amp;quot; },&lt;br /&gt;
		{ 0x017E0, 0x017E9, &amp;quot;Khmr&amp;quot; },&lt;br /&gt;
		{ 0x017F0, 0x017F9, &amp;quot;Khmr&amp;quot; },&lt;br /&gt;
		{ 0x01800, 0x01801, &amp;quot;Mong&amp;quot; },&lt;br /&gt;
		{ 0x01802, 0x01803, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x01806, 0x0180E, &amp;quot;Mong&amp;quot; },&lt;br /&gt;
		{ 0x01810, 0x01819, &amp;quot;Mong&amp;quot; },&lt;br /&gt;
		{ 0x01820, 0x01878, &amp;quot;Mong&amp;quot; },&lt;br /&gt;
		{ 0x01880, 0x018AA, &amp;quot;Mong&amp;quot; },&lt;br /&gt;
		{ 0x018B0, 0x018F5, &amp;quot;Cans&amp;quot; },&lt;br /&gt;
		{ 0x01900, 0x0191E, &amp;quot;Limb&amp;quot; },&lt;br /&gt;
		{ 0x01920, 0x0192B, &amp;quot;Limb&amp;quot; },&lt;br /&gt;
		{ 0x01930, 0x0193B, &amp;quot;Limb&amp;quot; },&lt;br /&gt;
		{ 0x01944, 0x0194F, &amp;quot;Limb&amp;quot; },&lt;br /&gt;
		{ 0x01950, 0x0196D, &amp;quot;Tale&amp;quot; },&lt;br /&gt;
		{ 0x01970, 0x01974, &amp;quot;Tale&amp;quot; },&lt;br /&gt;
		{ 0x01980, 0x019AB, &amp;quot;Talu&amp;quot; },&lt;br /&gt;
		{ 0x019B0, 0x019C9, &amp;quot;Talu&amp;quot; },&lt;br /&gt;
		{ 0x019D0, 0x019DA, &amp;quot;Talu&amp;quot; },&lt;br /&gt;
		{ 0x019DE, 0x019DF, &amp;quot;Talu&amp;quot; },&lt;br /&gt;
		{ 0x019E0, 0x019FF, &amp;quot;Khmr&amp;quot; },&lt;br /&gt;
		{ 0x01A00, 0x01A1B, &amp;quot;Bugi&amp;quot; },&lt;br /&gt;
		{ 0x01A1E, 0x01A1F, &amp;quot;Bugi&amp;quot; },&lt;br /&gt;
		{ 0x01A20, 0x01A5E, &amp;quot;Lana&amp;quot; },&lt;br /&gt;
		{ 0x01A60, 0x01A7C, &amp;quot;Lana&amp;quot; },&lt;br /&gt;
		{ 0x01A7F, 0x01A89, &amp;quot;Lana&amp;quot; },&lt;br /&gt;
		{ 0x01A90, 0x01A99, &amp;quot;Lana&amp;quot; },&lt;br /&gt;
		{ 0x01AA0, 0x01AAD, &amp;quot;Lana&amp;quot; },&lt;br /&gt;
		{ 0x01AB0, 0x01ABE, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
		{ 0x01B00, 0x01B4B, &amp;quot;Bali&amp;quot; },&lt;br /&gt;
		{ 0x01B50, 0x01B7C, &amp;quot;Bali&amp;quot; },&lt;br /&gt;
		{ 0x01B80, 0x01BBF, &amp;quot;Sund&amp;quot; },&lt;br /&gt;
		{ 0x01BC0, 0x01BF3, &amp;quot;Batk&amp;quot; },&lt;br /&gt;
		{ 0x01BFC, 0x01BFF, &amp;quot;Batk&amp;quot; },&lt;br /&gt;
		{ 0x01C00, 0x01C37, &amp;quot;Lepc&amp;quot; },&lt;br /&gt;
		{ 0x01C3B, 0x01C49, &amp;quot;Lepc&amp;quot; },&lt;br /&gt;
		{ 0x01C4D, 0x01C4F, &amp;quot;Lepc&amp;quot; },&lt;br /&gt;
		{ 0x01C50, 0x01C7F, &amp;quot;Olck&amp;quot; },&lt;br /&gt;
		{ 0x01C80, 0x01C88, &amp;quot;Cyrl&amp;quot; },&lt;br /&gt;
		{ 0x01C90, 0x01CBA, &amp;quot;Geor&amp;quot; },&lt;br /&gt;
		{ 0x01CBD, 0x01CBF, &amp;quot;Geor&amp;quot; },&lt;br /&gt;
		{ 0x01CC0, 0x01CC7, &amp;quot;Sund&amp;quot; },&lt;br /&gt;
		{ 0x01CD0, 0x01CD2, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
		{ 0x01CD4, 0x01CE0, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
		{ 0x01CE2, 0x01CE8, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
		{ 0x01CE9, 0x01CEC, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x01CEE, 0x01CF3, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x01CF5, 0x01CF7, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x01CF8, 0x01CF9, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
		{ 0x01D00, 0x01D25, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x01D26, 0x01D2A, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x01D2C, 0x01D5C, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x01D5D, 0x01D61, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x01D62, 0x01D65, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x01D66, 0x01D6A, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x01D6B, 0x01D77, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x01D79, 0x01DBE, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x01DC0, 0x01DF9, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
		{ 0x01DFB, 0x01DFF, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
		{ 0x01E00, 0x01EFF, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x01F00, 0x01F15, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x01F18, 0x01F1D, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x01F20, 0x01F45, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x01F48, 0x01F4D, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x01F50, 0x01F57, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x01F5F, 0x01F7D, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x01F80, 0x01FB4, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x01FB6, 0x01FC4, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x01FC6, 0x01FD3, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x01FD6, 0x01FDB, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x01FDD, 0x01FEF, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x01FF2, 0x01FF4, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x01FF6, 0x01FFE, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x02000, 0x0200B, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x0200C, 0x0200D, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
		{ 0x0200E, 0x02064, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x02066, 0x02070, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x02074, 0x0207E, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x02080, 0x0208E, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x02090, 0x0209C, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x020A0, 0x020BF, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x020D0, 0x020F0, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
		{ 0x02100, 0x02125, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x02127, 0x02129, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x0212A, 0x0212B, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x0212C, 0x02131, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x02133, 0x0214D, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x0214F, 0x0215F, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x02160, 0x02188, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x02189, 0x0218B, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x02190, 0x02426, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x02440, 0x0244A, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x02460, 0x027FF, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x02800, 0x028FF, &amp;quot;Brai&amp;quot; },&lt;br /&gt;
		{ 0x02900, 0x02B73, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x02B76, 0x02B95, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x02B98, 0x02BFF, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x02C00, 0x02C2E, &amp;quot;Glag&amp;quot; },&lt;br /&gt;
		{ 0x02C30, 0x02C5E, &amp;quot;Glag&amp;quot; },&lt;br /&gt;
		{ 0x02C60, 0x02C7F, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x02C80, 0x02CF3, &amp;quot;Copt&amp;quot; },&lt;br /&gt;
		{ 0x02CF9, 0x02CFF, &amp;quot;Copt&amp;quot; },&lt;br /&gt;
		{ 0x02D00, 0x02D25, &amp;quot;Geor&amp;quot; },&lt;br /&gt;
		{ 0x02D30, 0x02D67, &amp;quot;Tfng&amp;quot; },&lt;br /&gt;
		{ 0x02D6F, 0x02D70, &amp;quot;Tfng&amp;quot; },&lt;br /&gt;
		{ 0x02D80, 0x02D96, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x02DA0, 0x02DA6, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x02DA8, 0x02DAE, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x02DB0, 0x02DB6, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x02DB8, 0x02DBE, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x02DC0, 0x02DC6, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x02DC8, 0x02DCE, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x02DD0, 0x02DD6, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x02DD8, 0x02DDE, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x02DE0, 0x02DFF, &amp;quot;Cyrl&amp;quot; },&lt;br /&gt;
		{ 0x02E00, 0x02E4F, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x02E80, 0x02E99, &amp;quot;Hani&amp;quot; },&lt;br /&gt;
		{ 0x02E9B, 0x02EF3, &amp;quot;Hani&amp;quot; },&lt;br /&gt;
		{ 0x02F00, 0x02FD5, &amp;quot;Hani&amp;quot; },&lt;br /&gt;
		{ 0x02FF0, 0x02FFB, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x03000, 0x03004, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x03008, 0x03020, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x03021, 0x03029, &amp;quot;Hani&amp;quot; },&lt;br /&gt;
		{ 0x0302A, 0x0302D, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
		{ 0x0302E, 0x0302F, &amp;quot;Hang&amp;quot; },&lt;br /&gt;
		{ 0x03030, 0x03037, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x03038, 0x0303B, &amp;quot;Hani&amp;quot; },&lt;br /&gt;
		{ 0x0303C, 0x0303F, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x03041, 0x03096, &amp;quot;Hira&amp;quot; },&lt;br /&gt;
		{ 0x03099, 0x0309A, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
		{ 0x0309B, 0x0309C, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x0309D, 0x0309F, &amp;quot;Hira&amp;quot; },&lt;br /&gt;
		{ 0x030A1, 0x030FA, &amp;quot;Kana&amp;quot; },&lt;br /&gt;
		{ 0x030FB, 0x030FC, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x030FD, 0x030FF, &amp;quot;Kana&amp;quot; },&lt;br /&gt;
		{ 0x03105, 0x0312F, &amp;quot;Bopo&amp;quot; },&lt;br /&gt;
		{ 0x03131, 0x0318E, &amp;quot;Hang&amp;quot; },&lt;br /&gt;
		{ 0x03190, 0x0319F, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x031A0, 0x031BA, &amp;quot;Bopo&amp;quot; },&lt;br /&gt;
		{ 0x031C0, 0x031E3, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x031F0, 0x031FF, &amp;quot;Kana&amp;quot; },&lt;br /&gt;
		{ 0x03200, 0x0321E, &amp;quot;Hang&amp;quot; },&lt;br /&gt;
		{ 0x03220, 0x0325F, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x03260, 0x0327E, &amp;quot;Hang&amp;quot; },&lt;br /&gt;
		{ 0x0327F, 0x032CF, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x032D0, 0x032FE, &amp;quot;Kana&amp;quot; },&lt;br /&gt;
		{ 0x03300, 0x03357, &amp;quot;Kana&amp;quot; },&lt;br /&gt;
		{ 0x03358, 0x033FF, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x03400, 0x04DB5, &amp;quot;Hani&amp;quot; },&lt;br /&gt;
		{ 0x04DC0, 0x04DFF, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x04E00, 0x09FEF, &amp;quot;Hani&amp;quot; },&lt;br /&gt;
		{ 0x0A000, 0x0A48C, &amp;quot;Yiii&amp;quot; },&lt;br /&gt;
		{ 0x0A490, 0x0A4C6, &amp;quot;Yiii&amp;quot; },&lt;br /&gt;
		{ 0x0A4D0, 0x0A4FF, &amp;quot;Lisu&amp;quot; },&lt;br /&gt;
		{ 0x0A500, 0x0A62B, &amp;quot;Vaii&amp;quot; },&lt;br /&gt;
		{ 0x0A640, 0x0A69F, &amp;quot;Cyrl&amp;quot; },&lt;br /&gt;
		{ 0x0A6A0, 0x0A6F7, &amp;quot;Bamu&amp;quot; },&lt;br /&gt;
		{ 0x0A700, 0x0A721, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x0A722, 0x0A787, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x0A788, 0x0A78A, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x0A78B, 0x0A7BF, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x0A7C2, 0x0A7C6, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x0A7F7, 0x0A7FF, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x0A800, 0x0A82B, &amp;quot;Sylo&amp;quot; },&lt;br /&gt;
		{ 0x0A830, 0x0A839, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x0A840, 0x0A877, &amp;quot;Phag&amp;quot; },&lt;br /&gt;
		{ 0x0A880, 0x0A8C5, &amp;quot;Saur&amp;quot; },&lt;br /&gt;
		{ 0x0A8CE, 0x0A8D9, &amp;quot;Saur&amp;quot; },&lt;br /&gt;
		{ 0x0A8E0, 0x0A8FF, &amp;quot;Deva&amp;quot; },&lt;br /&gt;
		{ 0x0A900, 0x0A92D, &amp;quot;Kali&amp;quot; },&lt;br /&gt;
		{ 0x0A930, 0x0A953, &amp;quot;Rjng&amp;quot; },&lt;br /&gt;
		{ 0x0A960, 0x0A97C, &amp;quot;Hang&amp;quot; },&lt;br /&gt;
		{ 0x0A980, 0x0A9CD, &amp;quot;Java&amp;quot; },&lt;br /&gt;
		{ 0x0A9D0, 0x0A9D9, &amp;quot;Java&amp;quot; },&lt;br /&gt;
		{ 0x0A9DE, 0x0A9DF, &amp;quot;Java&amp;quot; },&lt;br /&gt;
		{ 0x0A9E0, 0x0A9FE, &amp;quot;Mymr&amp;quot; },&lt;br /&gt;
		{ 0x0AA00, 0x0AA36, &amp;quot;Cham&amp;quot; },&lt;br /&gt;
		{ 0x0AA40, 0x0AA4D, &amp;quot;Cham&amp;quot; },&lt;br /&gt;
		{ 0x0AA50, 0x0AA59, &amp;quot;Cham&amp;quot; },&lt;br /&gt;
		{ 0x0AA5C, 0x0AA5F, &amp;quot;Cham&amp;quot; },&lt;br /&gt;
		{ 0x0AA60, 0x0AA7F, &amp;quot;Mymr&amp;quot; },&lt;br /&gt;
		{ 0x0AA80, 0x0AAC2, &amp;quot;Tavt&amp;quot; },&lt;br /&gt;
		{ 0x0AADB, 0x0AADF, &amp;quot;Tavt&amp;quot; },&lt;br /&gt;
		{ 0x0AAE0, 0x0AAF6, &amp;quot;Mtei&amp;quot; },&lt;br /&gt;
		{ 0x0AB01, 0x0AB06, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x0AB09, 0x0AB0E, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x0AB11, 0x0AB16, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x0AB20, 0x0AB26, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x0AB28, 0x0AB2E, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x0AB30, 0x0AB5A, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x0AB5C, 0x0AB64, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x0AB66, 0x0AB67, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x0AB70, 0x0ABBF, &amp;quot;Cher&amp;quot; },&lt;br /&gt;
		{ 0x0ABC0, 0x0ABED, &amp;quot;Mtei&amp;quot; },&lt;br /&gt;
		{ 0x0ABF0, 0x0ABF9, &amp;quot;Mtei&amp;quot; },&lt;br /&gt;
		{ 0x0AC00, 0x0D7A3, &amp;quot;Hang&amp;quot; },&lt;br /&gt;
		{ 0x0D7B0, 0x0D7C6, &amp;quot;Hang&amp;quot; },&lt;br /&gt;
		{ 0x0D7CB, 0x0D7FB, &amp;quot;Hang&amp;quot; },&lt;br /&gt;
		{ 0x0F900, 0x0FA6D, &amp;quot;Hani&amp;quot; },&lt;br /&gt;
		{ 0x0FA70, 0x0FAD9, &amp;quot;Hani&amp;quot; },&lt;br /&gt;
		{ 0x0FB00, 0x0FB06, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x0FB13, 0x0FB17, &amp;quot;Armn&amp;quot; },&lt;br /&gt;
		{ 0x0FB1D, 0x0FB36, &amp;quot;Hebr&amp;quot; },&lt;br /&gt;
		{ 0x0FB38, 0x0FB3C, &amp;quot;Hebr&amp;quot; },&lt;br /&gt;
		{ 0x0FB40, 0x0FB41, &amp;quot;Hebr&amp;quot; },&lt;br /&gt;
		{ 0x0FB43, 0x0FB44, &amp;quot;Hebr&amp;quot; },&lt;br /&gt;
		{ 0x0FB46, 0x0FB4F, &amp;quot;Hebr&amp;quot; },&lt;br /&gt;
		{ 0x0FB50, 0x0FBC1, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x0FBD3, 0x0FD3D, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x0FD3E, 0x0FD3F, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x0FD50, 0x0FD8F, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x0FD92, 0x0FDC7, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x0FDF0, 0x0FDFD, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x0FE00, 0x0FE0F, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
		{ 0x0FE10, 0x0FE19, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x0FE20, 0x0FE2D, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
		{ 0x0FE2E, 0x0FE2F, &amp;quot;Cyrl&amp;quot; },&lt;br /&gt;
		{ 0x0FE30, 0x0FE52, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x0FE54, 0x0FE66, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x0FE68, 0x0FE6B, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x0FE70, 0x0FE74, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x0FE76, 0x0FEFC, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x0FF01, 0x0FF20, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x0FF21, 0x0FF3A, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x0FF3B, 0x0FF40, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x0FF41, 0x0FF5A, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x0FF5B, 0x0FF65, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x0FF66, 0x0FF6F, &amp;quot;Kana&amp;quot; },&lt;br /&gt;
		{ 0x0FF71, 0x0FF9D, &amp;quot;Kana&amp;quot; },&lt;br /&gt;
		{ 0x0FF9E, 0x0FF9F, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x0FFA0, 0x0FFBE, &amp;quot;Hang&amp;quot; },&lt;br /&gt;
		{ 0x0FFC2, 0x0FFC7, &amp;quot;Hang&amp;quot; },&lt;br /&gt;
		{ 0x0FFCA, 0x0FFCF, &amp;quot;Hang&amp;quot; },&lt;br /&gt;
		{ 0x0FFD2, 0x0FFD7, &amp;quot;Hang&amp;quot; },&lt;br /&gt;
		{ 0x0FFDA, 0x0FFDC, &amp;quot;Hang&amp;quot; },&lt;br /&gt;
		{ 0x0FFE0, 0x0FFE6, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x0FFE8, 0x0FFEE, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x0FFF9, 0x0FFFD, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x10000, 0x1000B, &amp;quot;Linb&amp;quot; },&lt;br /&gt;
		{ 0x1000D, 0x10026, &amp;quot;Linb&amp;quot; },&lt;br /&gt;
		{ 0x10028, 0x1003A, &amp;quot;Linb&amp;quot; },&lt;br /&gt;
		{ 0x1003C, 0x1003D, &amp;quot;Linb&amp;quot; },&lt;br /&gt;
		{ 0x1003F, 0x1004D, &amp;quot;Linb&amp;quot; },&lt;br /&gt;
		{ 0x10050, 0x1005D, &amp;quot;Linb&amp;quot; },&lt;br /&gt;
		{ 0x10080, 0x100FA, &amp;quot;Linb&amp;quot; },&lt;br /&gt;
		{ 0x10100, 0x10102, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x10107, 0x10133, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x10137, 0x1013F, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x10140, 0x1018E, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x10190, 0x1019B, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x101D0, 0x101FC, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x10280, 0x1029C, &amp;quot;Lyci&amp;quot; },&lt;br /&gt;
		{ 0x102A0, 0x102D0, &amp;quot;Cari&amp;quot; },&lt;br /&gt;
		{ 0x102E1, 0x102FB, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x10300, 0x10323, &amp;quot;Ital&amp;quot; },&lt;br /&gt;
		{ 0x1032D, 0x1032F, &amp;quot;Ital&amp;quot; },&lt;br /&gt;
		{ 0x10330, 0x1034A, &amp;quot;Goth&amp;quot; },&lt;br /&gt;
		{ 0x10350, 0x1037A, &amp;quot;Perm&amp;quot; },&lt;br /&gt;
		{ 0x10380, 0x1039D, &amp;quot;Ugar&amp;quot; },&lt;br /&gt;
		{ 0x103A0, 0x103C3, &amp;quot;Xpeo&amp;quot; },&lt;br /&gt;
		{ 0x103C8, 0x103D5, &amp;quot;Xpeo&amp;quot; },&lt;br /&gt;
		{ 0x10400, 0x1044F, &amp;quot;Dsrt&amp;quot; },&lt;br /&gt;
		{ 0x10450, 0x1047F, &amp;quot;Shaw&amp;quot; },&lt;br /&gt;
		{ 0x10480, 0x1049D, &amp;quot;Osma&amp;quot; },&lt;br /&gt;
		{ 0x104A0, 0x104A9, &amp;quot;Osma&amp;quot; },&lt;br /&gt;
		{ 0x104B0, 0x104D3, &amp;quot;Osge&amp;quot; },&lt;br /&gt;
		{ 0x104D8, 0x104FB, &amp;quot;Osge&amp;quot; },&lt;br /&gt;
		{ 0x10500, 0x10527, &amp;quot;Elba&amp;quot; },&lt;br /&gt;
		{ 0x10530, 0x10563, &amp;quot;Aghb&amp;quot; },&lt;br /&gt;
		{ 0x10600, 0x10736, &amp;quot;Lina&amp;quot; },&lt;br /&gt;
		{ 0x10740, 0x10755, &amp;quot;Lina&amp;quot; },&lt;br /&gt;
		{ 0x10760, 0x10767, &amp;quot;Lina&amp;quot; },&lt;br /&gt;
		{ 0x10800, 0x10805, &amp;quot;Cprt&amp;quot; },&lt;br /&gt;
		{ 0x1080A, 0x10835, &amp;quot;Cprt&amp;quot; },&lt;br /&gt;
		{ 0x10837, 0x10838, &amp;quot;Cprt&amp;quot; },&lt;br /&gt;
		{ 0x10840, 0x10855, &amp;quot;Armi&amp;quot; },&lt;br /&gt;
		{ 0x10857, 0x1085F, &amp;quot;Armi&amp;quot; },&lt;br /&gt;
		{ 0x10860, 0x1087F, &amp;quot;Palm&amp;quot; },&lt;br /&gt;
		{ 0x10880, 0x1089E, &amp;quot;Nbat&amp;quot; },&lt;br /&gt;
		{ 0x108A7, 0x108AF, &amp;quot;Nbat&amp;quot; },&lt;br /&gt;
		{ 0x108E0, 0x108F2, &amp;quot;Hatr&amp;quot; },&lt;br /&gt;
		{ 0x108F4, 0x108F5, &amp;quot;Hatr&amp;quot; },&lt;br /&gt;
		{ 0x108FB, 0x108FF, &amp;quot;Hatr&amp;quot; },&lt;br /&gt;
		{ 0x10900, 0x1091B, &amp;quot;Phnx&amp;quot; },&lt;br /&gt;
		{ 0x10920, 0x10939, &amp;quot;Lydi&amp;quot; },&lt;br /&gt;
		{ 0x10980, 0x1099F, &amp;quot;Mero&amp;quot; },&lt;br /&gt;
		{ 0x109A0, 0x109B7, &amp;quot;Merc&amp;quot; },&lt;br /&gt;
		{ 0x109BC, 0x109CF, &amp;quot;Merc&amp;quot; },&lt;br /&gt;
		{ 0x109D2, 0x109FF, &amp;quot;Merc&amp;quot; },&lt;br /&gt;
		{ 0x10A00, 0x10A03, &amp;quot;Khar&amp;quot; },&lt;br /&gt;
		{ 0x10A05, 0x10A06, &amp;quot;Khar&amp;quot; },&lt;br /&gt;
		{ 0x10A0C, 0x10A13, &amp;quot;Khar&amp;quot; },&lt;br /&gt;
		{ 0x10A15, 0x10A17, &amp;quot;Khar&amp;quot; },&lt;br /&gt;
		{ 0x10A19, 0x10A35, &amp;quot;Khar&amp;quot; },&lt;br /&gt;
		{ 0x10A38, 0x10A3A, &amp;quot;Khar&amp;quot; },&lt;br /&gt;
		{ 0x10A3F, 0x10A48, &amp;quot;Khar&amp;quot; },&lt;br /&gt;
		{ 0x10A50, 0x10A58, &amp;quot;Khar&amp;quot; },&lt;br /&gt;
		{ 0x10A60, 0x10A7F, &amp;quot;Sarb&amp;quot; },&lt;br /&gt;
		{ 0x10A80, 0x10A9F, &amp;quot;Narb&amp;quot; },&lt;br /&gt;
		{ 0x10AC0, 0x10AE6, &amp;quot;Mani&amp;quot; },&lt;br /&gt;
		{ 0x10AEB, 0x10AF6, &amp;quot;Mani&amp;quot; },&lt;br /&gt;
		{ 0x10B00, 0x10B35, &amp;quot;Avst&amp;quot; },&lt;br /&gt;
		{ 0x10B39, 0x10B3F, &amp;quot;Avst&amp;quot; },&lt;br /&gt;
		{ 0x10B40, 0x10B55, &amp;quot;Prti&amp;quot; },&lt;br /&gt;
		{ 0x10B58, 0x10B5F, &amp;quot;Prti&amp;quot; },&lt;br /&gt;
		{ 0x10B60, 0x10B72, &amp;quot;Phli&amp;quot; },&lt;br /&gt;
		{ 0x10B78, 0x10B7F, &amp;quot;Phli&amp;quot; },&lt;br /&gt;
		{ 0x10B80, 0x10B91, &amp;quot;Phlp&amp;quot; },&lt;br /&gt;
		{ 0x10B99, 0x10B9C, &amp;quot;Phlp&amp;quot; },&lt;br /&gt;
		{ 0x10BA9, 0x10BAF, &amp;quot;Phlp&amp;quot; },&lt;br /&gt;
		{ 0x10C00, 0x10C48, &amp;quot;Orkh&amp;quot; },&lt;br /&gt;
		{ 0x10C80, 0x10CB2, &amp;quot;Hung&amp;quot; },&lt;br /&gt;
		{ 0x10CC0, 0x10CF2, &amp;quot;Hung&amp;quot; },&lt;br /&gt;
		{ 0x10CFA, 0x10CFF, &amp;quot;Hung&amp;quot; },&lt;br /&gt;
		{ 0x10D00, 0x10D27, &amp;quot;Rohg&amp;quot; },&lt;br /&gt;
		{ 0x10D30, 0x10D39, &amp;quot;Rohg&amp;quot; },&lt;br /&gt;
		{ 0x10E60, 0x10E7E, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x10F00, 0x10F27, &amp;quot;Sogo&amp;quot; },&lt;br /&gt;
		{ 0x10F30, 0x10F59, &amp;quot;Sogd&amp;quot; },&lt;br /&gt;
		{ 0x10FE0, 0x10FF6, &amp;quot;Elym&amp;quot; },&lt;br /&gt;
		{ 0x11000, 0x1104D, &amp;quot;Brah&amp;quot; },&lt;br /&gt;
		{ 0x11052, 0x1106F, &amp;quot;Brah&amp;quot; },&lt;br /&gt;
		{ 0x11080, 0x110C1, &amp;quot;Kthi&amp;quot; },&lt;br /&gt;
		{ 0x110D0, 0x110E8, &amp;quot;Sora&amp;quot; },&lt;br /&gt;
		{ 0x110F0, 0x110F9, &amp;quot;Sora&amp;quot; },&lt;br /&gt;
		{ 0x11100, 0x11134, &amp;quot;Cakm&amp;quot; },&lt;br /&gt;
		{ 0x11136, 0x11146, &amp;quot;Cakm&amp;quot; },&lt;br /&gt;
		{ 0x11150, 0x11176, &amp;quot;Mahj&amp;quot; },&lt;br /&gt;
		{ 0x11180, 0x111CD, &amp;quot;Shrd&amp;quot; },&lt;br /&gt;
		{ 0x111D0, 0x111DF, &amp;quot;Shrd&amp;quot; },&lt;br /&gt;
		{ 0x111E1, 0x111F4, &amp;quot;Sinh&amp;quot; },&lt;br /&gt;
		{ 0x11200, 0x11211, &amp;quot;Khoj&amp;quot; },&lt;br /&gt;
		{ 0x11213, 0x1123E, &amp;quot;Khoj&amp;quot; },&lt;br /&gt;
		{ 0x11280, 0x11286, &amp;quot;Mult&amp;quot; },&lt;br /&gt;
		{ 0x1128A, 0x1128D, &amp;quot;Mult&amp;quot; },&lt;br /&gt;
		{ 0x1128F, 0x1129D, &amp;quot;Mult&amp;quot; },&lt;br /&gt;
		{ 0x1129F, 0x112A9, &amp;quot;Mult&amp;quot; },&lt;br /&gt;
		{ 0x112B0, 0x112EA, &amp;quot;Sind&amp;quot; },&lt;br /&gt;
		{ 0x112F0, 0x112F9, &amp;quot;Sind&amp;quot; },&lt;br /&gt;
		{ 0x11300, 0x11303, &amp;quot;Gran&amp;quot; },&lt;br /&gt;
		{ 0x11305, 0x1130C, &amp;quot;Gran&amp;quot; },&lt;br /&gt;
		{ 0x1130F, 0x11310, &amp;quot;Gran&amp;quot; },&lt;br /&gt;
		{ 0x11313, 0x11328, &amp;quot;Gran&amp;quot; },&lt;br /&gt;
		{ 0x1132A, 0x11330, &amp;quot;Gran&amp;quot; },&lt;br /&gt;
		{ 0x11332, 0x11333, &amp;quot;Gran&amp;quot; },&lt;br /&gt;
		{ 0x11335, 0x11339, &amp;quot;Gran&amp;quot; },&lt;br /&gt;
		{ 0x1133C, 0x11344, &amp;quot;Gran&amp;quot; },&lt;br /&gt;
		{ 0x11347, 0x11348, &amp;quot;Gran&amp;quot; },&lt;br /&gt;
		{ 0x1134B, 0x1134D, &amp;quot;Gran&amp;quot; },&lt;br /&gt;
		{ 0x1135D, 0x11363, &amp;quot;Gran&amp;quot; },&lt;br /&gt;
		{ 0x11366, 0x1136C, &amp;quot;Gran&amp;quot; },&lt;br /&gt;
		{ 0x11370, 0x11374, &amp;quot;Gran&amp;quot; },&lt;br /&gt;
		{ 0x11400, 0x11459, &amp;quot;Newa&amp;quot; },&lt;br /&gt;
		{ 0x1145D, 0x1145F, &amp;quot;Newa&amp;quot; },&lt;br /&gt;
		{ 0x11480, 0x114C7, &amp;quot;Tirh&amp;quot; },&lt;br /&gt;
		{ 0x114D0, 0x114D9, &amp;quot;Tirh&amp;quot; },&lt;br /&gt;
		{ 0x11580, 0x115B5, &amp;quot;Sidd&amp;quot; },&lt;br /&gt;
		{ 0x115B8, 0x115DD, &amp;quot;Sidd&amp;quot; },&lt;br /&gt;
		{ 0x11600, 0x11644, &amp;quot;Modi&amp;quot; },&lt;br /&gt;
		{ 0x11650, 0x11659, &amp;quot;Modi&amp;quot; },&lt;br /&gt;
		{ 0x11660, 0x1166C, &amp;quot;Mong&amp;quot; },&lt;br /&gt;
		{ 0x11680, 0x116B8, &amp;quot;Takr&amp;quot; },&lt;br /&gt;
		{ 0x116C0, 0x116C9, &amp;quot;Takr&amp;quot; },&lt;br /&gt;
		{ 0x11700, 0x1171A, &amp;quot;Ahom&amp;quot; },&lt;br /&gt;
		{ 0x1171D, 0x1172B, &amp;quot;Ahom&amp;quot; },&lt;br /&gt;
		{ 0x11730, 0x1173F, &amp;quot;Ahom&amp;quot; },&lt;br /&gt;
		{ 0x11800, 0x1183B, &amp;quot;Dogr&amp;quot; },&lt;br /&gt;
		{ 0x118A0, 0x118F2, &amp;quot;Wara&amp;quot; },&lt;br /&gt;
		{ 0x119A0, 0x119A7, &amp;quot;Nand&amp;quot; },&lt;br /&gt;
		{ 0x119AA, 0x119D7, &amp;quot;Nand&amp;quot; },&lt;br /&gt;
		{ 0x119DA, 0x119E4, &amp;quot;Nand&amp;quot; },&lt;br /&gt;
		{ 0x11A00, 0x11A47, &amp;quot;Zanb&amp;quot; },&lt;br /&gt;
		{ 0x11A50, 0x11AA2, &amp;quot;Soyo&amp;quot; },&lt;br /&gt;
		{ 0x11AC0, 0x11AF8, &amp;quot;Pauc&amp;quot; },&lt;br /&gt;
		{ 0x11C00, 0x11C08, &amp;quot;Bhks&amp;quot; },&lt;br /&gt;
		{ 0x11C0A, 0x11C36, &amp;quot;Bhks&amp;quot; },&lt;br /&gt;
		{ 0x11C38, 0x11C45, &amp;quot;Bhks&amp;quot; },&lt;br /&gt;
		{ 0x11C50, 0x11C6C, &amp;quot;Bhks&amp;quot; },&lt;br /&gt;
		{ 0x11C70, 0x11C8F, &amp;quot;Marc&amp;quot; },&lt;br /&gt;
		{ 0x11C92, 0x11CA7, &amp;quot;Marc&amp;quot; },&lt;br /&gt;
		{ 0x11CA9, 0x11CB6, &amp;quot;Marc&amp;quot; },&lt;br /&gt;
		{ 0x11D00, 0x11D06, &amp;quot;Gonm&amp;quot; },&lt;br /&gt;
		{ 0x11D08, 0x11D09, &amp;quot;Gonm&amp;quot; },&lt;br /&gt;
		{ 0x11D0B, 0x11D36, &amp;quot;Gonm&amp;quot; },&lt;br /&gt;
		{ 0x11D3C, 0x11D3D, &amp;quot;Gonm&amp;quot; },&lt;br /&gt;
		{ 0x11D3F, 0x11D47, &amp;quot;Gonm&amp;quot; },&lt;br /&gt;
		{ 0x11D50, 0x11D59, &amp;quot;Gonm&amp;quot; },&lt;br /&gt;
		{ 0x11D60, 0x11D65, &amp;quot;Gong&amp;quot; },&lt;br /&gt;
		{ 0x11D67, 0x11D68, &amp;quot;Gong&amp;quot; },&lt;br /&gt;
		{ 0x11D6A, 0x11D8E, &amp;quot;Gong&amp;quot; },&lt;br /&gt;
		{ 0x11D90, 0x11D91, &amp;quot;Gong&amp;quot; },&lt;br /&gt;
		{ 0x11D93, 0x11D98, &amp;quot;Gong&amp;quot; },&lt;br /&gt;
		{ 0x11DA0, 0x11DA9, &amp;quot;Gong&amp;quot; },&lt;br /&gt;
		{ 0x11EE0, 0x11EF8, &amp;quot;Maka&amp;quot; },&lt;br /&gt;
		{ 0x11FC0, 0x11FF1, &amp;quot;Taml&amp;quot; },&lt;br /&gt;
		{ 0x12000, 0x12399, &amp;quot;Xsux&amp;quot; },&lt;br /&gt;
		{ 0x12400, 0x1246E, &amp;quot;Xsux&amp;quot; },&lt;br /&gt;
		{ 0x12470, 0x12474, &amp;quot;Xsux&amp;quot; },&lt;br /&gt;
		{ 0x12480, 0x12543, &amp;quot;Xsux&amp;quot; },&lt;br /&gt;
		{ 0x13000, 0x1342E, &amp;quot;Egyp&amp;quot; },&lt;br /&gt;
		{ 0x13430, 0x13438, &amp;quot;Egyp&amp;quot; },&lt;br /&gt;
		{ 0x14400, 0x14646, &amp;quot;Hluw&amp;quot; },&lt;br /&gt;
		{ 0x16800, 0x16A38, &amp;quot;Bamu&amp;quot; },&lt;br /&gt;
		{ 0x16A40, 0x16A5E, &amp;quot;Mroo&amp;quot; },&lt;br /&gt;
		{ 0x16A60, 0x16A69, &amp;quot;Mroo&amp;quot; },&lt;br /&gt;
		{ 0x16A6E, 0x16A6F, &amp;quot;Mroo&amp;quot; },&lt;br /&gt;
		{ 0x16AD0, 0x16AED, &amp;quot;Bass&amp;quot; },&lt;br /&gt;
		{ 0x16AF0, 0x16AF5, &amp;quot;Bass&amp;quot; },&lt;br /&gt;
		{ 0x16B00, 0x16B45, &amp;quot;Hmng&amp;quot; },&lt;br /&gt;
		{ 0x16B50, 0x16B59, &amp;quot;Hmng&amp;quot; },&lt;br /&gt;
		{ 0x16B5B, 0x16B61, &amp;quot;Hmng&amp;quot; },&lt;br /&gt;
		{ 0x16B63, 0x16B77, &amp;quot;Hmng&amp;quot; },&lt;br /&gt;
		{ 0x16B7D, 0x16B8F, &amp;quot;Hmng&amp;quot; },&lt;br /&gt;
		{ 0x16E40, 0x16E9A, &amp;quot;Medf&amp;quot; },&lt;br /&gt;
		{ 0x16F00, 0x16F4A, &amp;quot;Plrd&amp;quot; },&lt;br /&gt;
		{ 0x16F4F, 0x16F87, &amp;quot;Plrd&amp;quot; },&lt;br /&gt;
		{ 0x16F8F, 0x16F9F, &amp;quot;Plrd&amp;quot; },&lt;br /&gt;
		{ 0x16FE2, 0x16FE3, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x17000, 0x187F7, &amp;quot;Tang&amp;quot; },&lt;br /&gt;
		{ 0x18800, 0x18AF2, &amp;quot;Tang&amp;quot; },&lt;br /&gt;
		{ 0x1B001, 0x1B11E, &amp;quot;Hira&amp;quot; },&lt;br /&gt;
		{ 0x1B150, 0x1B152, &amp;quot;Hira&amp;quot; },&lt;br /&gt;
		{ 0x1B164, 0x1B167, &amp;quot;Kana&amp;quot; },&lt;br /&gt;
		{ 0x1B170, 0x1B2FB, &amp;quot;Nshu&amp;quot; },&lt;br /&gt;
		{ 0x1BC00, 0x1BC6A, &amp;quot;Dupl&amp;quot; },&lt;br /&gt;
		{ 0x1BC70, 0x1BC7C, &amp;quot;Dupl&amp;quot; },&lt;br /&gt;
		{ 0x1BC80, 0x1BC88, &amp;quot;Dupl&amp;quot; },&lt;br /&gt;
		{ 0x1BC90, 0x1BC99, &amp;quot;Dupl&amp;quot; },&lt;br /&gt;
		{ 0x1BC9C, 0x1BC9F, &amp;quot;Dupl&amp;quot; },&lt;br /&gt;
		{ 0x1BCA0, 0x1BCA3, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D000, 0x1D0F5, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D100, 0x1D126, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D129, 0x1D166, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D167, 0x1D169, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
		{ 0x1D16A, 0x1D17A, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D17B, 0x1D182, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
		{ 0x1D183, 0x1D184, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D185, 0x1D18B, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
		{ 0x1D18C, 0x1D1A9, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D1AA, 0x1D1AD, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
		{ 0x1D1AE, 0x1D1E8, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D200, 0x1D245, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x1D2E0, 0x1D2F3, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D300, 0x1D356, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D360, 0x1D378, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D400, 0x1D454, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D456, 0x1D49C, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D49E, 0x1D49F, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D4A5, 0x1D4A6, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D4A9, 0x1D4AC, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D4AE, 0x1D4B9, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D4BD, 0x1D4C3, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D4C5, 0x1D505, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D507, 0x1D50A, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D50D, 0x1D514, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D516, 0x1D51C, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D51E, 0x1D539, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D53B, 0x1D53E, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D540, 0x1D544, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D54A, 0x1D550, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D552, 0x1D6A5, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D6A8, 0x1D7CB, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D7CE, 0x1D7FF, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D800, 0x1DA8B, &amp;quot;Sgnw&amp;quot; },&lt;br /&gt;
		{ 0x1DA9B, 0x1DA9F, &amp;quot;Sgnw&amp;quot; },&lt;br /&gt;
		{ 0x1DAA1, 0x1DAAF, &amp;quot;Sgnw&amp;quot; },&lt;br /&gt;
		{ 0x1E000, 0x1E006, &amp;quot;Glag&amp;quot; },&lt;br /&gt;
		{ 0x1E008, 0x1E018, &amp;quot;Glag&amp;quot; },&lt;br /&gt;
		{ 0x1E01B, 0x1E021, &amp;quot;Glag&amp;quot; },&lt;br /&gt;
		{ 0x1E023, 0x1E024, &amp;quot;Glag&amp;quot; },&lt;br /&gt;
		{ 0x1E026, 0x1E02A, &amp;quot;Glag&amp;quot; },&lt;br /&gt;
		{ 0x1E100, 0x1E12C, &amp;quot;Hmnp&amp;quot; },&lt;br /&gt;
		{ 0x1E130, 0x1E13D, &amp;quot;Hmnp&amp;quot; },&lt;br /&gt;
		{ 0x1E140, 0x1E149, &amp;quot;Hmnp&amp;quot; },&lt;br /&gt;
		{ 0x1E14E, 0x1E14F, &amp;quot;Hmnp&amp;quot; },&lt;br /&gt;
		{ 0x1E2C0, 0x1E2F9, &amp;quot;Wcho&amp;quot; },&lt;br /&gt;
		{ 0x1E800, 0x1E8C4, &amp;quot;Mend&amp;quot; },&lt;br /&gt;
		{ 0x1E8C7, 0x1E8D6, &amp;quot;Mend&amp;quot; },&lt;br /&gt;
		{ 0x1E900, 0x1E94B, &amp;quot;Adlm&amp;quot; },&lt;br /&gt;
		{ 0x1E950, 0x1E959, &amp;quot;Adlm&amp;quot; },&lt;br /&gt;
		{ 0x1E95E, 0x1E95F, &amp;quot;Adlm&amp;quot; },&lt;br /&gt;
		{ 0x1EC71, 0x1ECB4, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1ED01, 0x1ED3D, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1EE00, 0x1EE03, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x1EE05, 0x1EE1F, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x1EE21, 0x1EE22, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x1EE29, 0x1EE32, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x1EE34, 0x1EE37, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x1EE4D, 0x1EE4F, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x1EE51, 0x1EE52, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x1EE61, 0x1EE62, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x1EE67, 0x1EE6A, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x1EE6C, 0x1EE72, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x1EE74, 0x1EE77, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x1EE79, 0x1EE7C, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x1EE80, 0x1EE89, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x1EE8B, 0x1EE9B, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x1EEA1, 0x1EEA3, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x1EEA5, 0x1EEA9, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x1EEAB, 0x1EEBB, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x1EEF0, 0x1EEF1, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x1F000, 0x1F02B, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F030, 0x1F093, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F0A0, 0x1F0AE, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F0B1, 0x1F0BF, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F0C1, 0x1F0CF, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F0D1, 0x1F0F5, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F100, 0x1F10C, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F110, 0x1F16C, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F170, 0x1F1AC, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F1E6, 0x1F1FF, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F201, 0x1F202, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F210, 0x1F23B, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F240, 0x1F248, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F250, 0x1F251, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F260, 0x1F265, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F300, 0x1F6D5, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F6E0, 0x1F6EC, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F6F0, 0x1F6FA, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F700, 0x1F773, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F780, 0x1F7D8, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F7E0, 0x1F7EB, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F800, 0x1F80B, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F810, 0x1F847, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F850, 0x1F859, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F860, 0x1F887, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F890, 0x1F8AD, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F900, 0x1F90B, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F90D, 0x1F971, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F973, 0x1F976, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F97A, 0x1F9A2, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F9A5, 0x1F9AA, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F9AE, 0x1F9CA, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F9CD, 0x1FA53, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1FA60, 0x1FA6D, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1FA70, 0x1FA73, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1FA78, 0x1FA7A, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1FA80, 0x1FA82, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1FA90, 0x1FA95, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x20000, 0x2A6D6, &amp;quot;Hani&amp;quot; },&lt;br /&gt;
		{ 0x2A700, 0x2B734, &amp;quot;Hani&amp;quot; },&lt;br /&gt;
		{ 0x2B740, 0x2B81D, &amp;quot;Hani&amp;quot; },&lt;br /&gt;
		{ 0x2B820, 0x2CEA1, &amp;quot;Hani&amp;quot; },&lt;br /&gt;
		{ 0x2CEB0, 0x2EBE0, &amp;quot;Hani&amp;quot; },&lt;br /&gt;
		{ 0x2F800, 0x2FA1D, &amp;quot;Hani&amp;quot; },&lt;br /&gt;
		{ 0xE0020, 0xE007F, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0xE0100, 0xE01EF, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
	},&lt;br /&gt;
	-- Scripts.txt gives full names; here we consider them aliases to save space.&lt;br /&gt;
	aliases = {&lt;br /&gt;
		Adlm = &amp;quot;Adlam&amp;quot;,&lt;br /&gt;
		Aghb = &amp;quot;Caucasian Albanian&amp;quot;,&lt;br /&gt;
		Ahom = &amp;quot;Ahom&amp;quot;,&lt;br /&gt;
		Arab = &amp;quot;Arabic&amp;quot;,&lt;br /&gt;
		Armi = &amp;quot;Imperial Aramaic&amp;quot;,&lt;br /&gt;
		Armn = &amp;quot;Armenian&amp;quot;,&lt;br /&gt;
		Avst = &amp;quot;Avestan&amp;quot;,&lt;br /&gt;
		Bali = &amp;quot;Balinese&amp;quot;,&lt;br /&gt;
		Bamu = &amp;quot;Bamum&amp;quot;,&lt;br /&gt;
		Bass = &amp;quot;Bassa Vah&amp;quot;,&lt;br /&gt;
		Batk = &amp;quot;Batak&amp;quot;,&lt;br /&gt;
		Beng = &amp;quot;Bengali&amp;quot;,&lt;br /&gt;
		Bhks = &amp;quot;Bhaiksuki&amp;quot;,&lt;br /&gt;
		Bopo = &amp;quot;Bopomofo&amp;quot;,&lt;br /&gt;
		Brah = &amp;quot;Brahmi&amp;quot;,&lt;br /&gt;
		Brai = &amp;quot;Braille&amp;quot;,&lt;br /&gt;
		Bugi = &amp;quot;Buginese&amp;quot;,&lt;br /&gt;
		Buhd = &amp;quot;Buhid&amp;quot;,&lt;br /&gt;
		Cakm = &amp;quot;Chakma&amp;quot;,&lt;br /&gt;
		Cans = &amp;quot;Canadian Aboriginal&amp;quot;,&lt;br /&gt;
		Cari = &amp;quot;Carian&amp;quot;,&lt;br /&gt;
		Cham = &amp;quot;Cham&amp;quot;,&lt;br /&gt;
		Cher = &amp;quot;Cherokee&amp;quot;,&lt;br /&gt;
		Copt = &amp;quot;Coptic&amp;quot;,&lt;br /&gt;
		Cprt = &amp;quot;Cypriot&amp;quot;,&lt;br /&gt;
		Cyrl = &amp;quot;Cyrillic&amp;quot;,&lt;br /&gt;
		Deva = &amp;quot;Devanagari&amp;quot;,&lt;br /&gt;
		Dogr = &amp;quot;Dogra&amp;quot;,&lt;br /&gt;
		Dsrt = &amp;quot;Deseret&amp;quot;,&lt;br /&gt;
		Dupl = &amp;quot;Duployan&amp;quot;,&lt;br /&gt;
		Egyp = &amp;quot;Egyptian Hieroglyphs&amp;quot;,&lt;br /&gt;
		Elba = &amp;quot;Elbasan&amp;quot;,&lt;br /&gt;
		Elym = &amp;quot;Elymaic&amp;quot;,&lt;br /&gt;
		Ethi = &amp;quot;Ethiopic&amp;quot;,&lt;br /&gt;
		Geor = &amp;quot;Georgian&amp;quot;,&lt;br /&gt;
		Glag = &amp;quot;Glagolitic&amp;quot;,&lt;br /&gt;
		Gong = &amp;quot;Gunjala Gondi&amp;quot;,&lt;br /&gt;
		Gonm = &amp;quot;Masaram Gondi&amp;quot;,&lt;br /&gt;
		Goth = &amp;quot;Gothic&amp;quot;,&lt;br /&gt;
		Gran = &amp;quot;Grantha&amp;quot;,&lt;br /&gt;
		Grek = &amp;quot;Greek&amp;quot;,&lt;br /&gt;
		Gujr = &amp;quot;Gujarati&amp;quot;,&lt;br /&gt;
		Guru = &amp;quot;Gurmukhi&amp;quot;,&lt;br /&gt;
		Hang = &amp;quot;Hangul&amp;quot;,&lt;br /&gt;
		Hani = &amp;quot;Han&amp;quot;,&lt;br /&gt;
		Hano = &amp;quot;Hanunoo&amp;quot;,&lt;br /&gt;
		Hatr = &amp;quot;Hatran&amp;quot;,&lt;br /&gt;
		Hebr = &amp;quot;Hebrew&amp;quot;,&lt;br /&gt;
		Hira = &amp;quot;Hiragana&amp;quot;,&lt;br /&gt;
		Hluw = &amp;quot;Anatolian Hieroglyphs&amp;quot;,&lt;br /&gt;
		Hmng = &amp;quot;Pahawh Hmong&amp;quot;,&lt;br /&gt;
		Hmnp = &amp;quot;Nyiakeng Puachue Hmong&amp;quot;,&lt;br /&gt;
		Hrkt = &amp;quot;Katakana Or Hiragana&amp;quot;,&lt;br /&gt;
		Hung = &amp;quot;Old Hungarian&amp;quot;,&lt;br /&gt;
		Ital = &amp;quot;Old Italic&amp;quot;,&lt;br /&gt;
		Java = &amp;quot;Javanese&amp;quot;,&lt;br /&gt;
		Kali = &amp;quot;Kayah Li&amp;quot;,&lt;br /&gt;
		Kana = &amp;quot;Katakana&amp;quot;,&lt;br /&gt;
		Khar = &amp;quot;Kharoshthi&amp;quot;,&lt;br /&gt;
		Khmr = &amp;quot;Khmer&amp;quot;,&lt;br /&gt;
		Khoj = &amp;quot;Khojki&amp;quot;,&lt;br /&gt;
		Knda = &amp;quot;Kannada&amp;quot;,&lt;br /&gt;
		Kthi = &amp;quot;Kaithi&amp;quot;,&lt;br /&gt;
		Lana = &amp;quot;Tai Tham&amp;quot;,&lt;br /&gt;
		Laoo = &amp;quot;Lao&amp;quot;,&lt;br /&gt;
		Latn = &amp;quot;Latin&amp;quot;,&lt;br /&gt;
		Lepc = &amp;quot;Lepcha&amp;quot;,&lt;br /&gt;
		Limb = &amp;quot;Limbu&amp;quot;,&lt;br /&gt;
		Lina = &amp;quot;Linear A&amp;quot;,&lt;br /&gt;
		Linb = &amp;quot;Linear B&amp;quot;,&lt;br /&gt;
		Lisu = &amp;quot;Lisu&amp;quot;,&lt;br /&gt;
		Lyci = &amp;quot;Lycian&amp;quot;,&lt;br /&gt;
		Lydi = &amp;quot;Lydian&amp;quot;,&lt;br /&gt;
		Mahj = &amp;quot;Mahajani&amp;quot;,&lt;br /&gt;
		Maka = &amp;quot;Makasar&amp;quot;,&lt;br /&gt;
		Mand = &amp;quot;Mandaic&amp;quot;,&lt;br /&gt;
		Mani = &amp;quot;Manichaean&amp;quot;,&lt;br /&gt;
		Marc = &amp;quot;Marchen&amp;quot;,&lt;br /&gt;
		Medf = &amp;quot;Medefaidrin&amp;quot;,&lt;br /&gt;
		Mend = &amp;quot;Mende Kikakui&amp;quot;,&lt;br /&gt;
		Merc = &amp;quot;Meroitic Cursive&amp;quot;,&lt;br /&gt;
		Mero = &amp;quot;Meroitic Hieroglyphs&amp;quot;,&lt;br /&gt;
		Mlym = &amp;quot;Malayalam&amp;quot;,&lt;br /&gt;
		Modi = &amp;quot;Modi&amp;quot;,&lt;br /&gt;
		Mong = &amp;quot;Mongolian&amp;quot;,&lt;br /&gt;
		Mroo = &amp;quot;Mro&amp;quot;,&lt;br /&gt;
		Mtei = &amp;quot;Meetei Mayek&amp;quot;,&lt;br /&gt;
		Mult = &amp;quot;Multani&amp;quot;,&lt;br /&gt;
		Mymr = &amp;quot;Myanmar&amp;quot;,&lt;br /&gt;
		Nand = &amp;quot;Nandinagari&amp;quot;,&lt;br /&gt;
		Narb = &amp;quot;Old North Arabian&amp;quot;,&lt;br /&gt;
		Nbat = &amp;quot;Nabataean&amp;quot;,&lt;br /&gt;
		Newa = &amp;quot;Newa&amp;quot;,&lt;br /&gt;
		Nkoo = &amp;quot;Nko&amp;quot;,&lt;br /&gt;
		Nshu = &amp;quot;Nushu&amp;quot;,&lt;br /&gt;
		Ogam = &amp;quot;Ogham&amp;quot;,&lt;br /&gt;
		Olck = &amp;quot;Ol Chiki&amp;quot;,&lt;br /&gt;
		Orkh = &amp;quot;Old Turkic&amp;quot;,&lt;br /&gt;
		Orya = &amp;quot;Oriya&amp;quot;,&lt;br /&gt;
		Osge = &amp;quot;Osage&amp;quot;,&lt;br /&gt;
		Osma = &amp;quot;Osmanya&amp;quot;,&lt;br /&gt;
		Palm = &amp;quot;Palmyrene&amp;quot;,&lt;br /&gt;
		Pauc = &amp;quot;Pau Cin Hau&amp;quot;,&lt;br /&gt;
		Perm = &amp;quot;Old Permic&amp;quot;,&lt;br /&gt;
		Phag = &amp;quot;Phags Pa&amp;quot;,&lt;br /&gt;
		Phli = &amp;quot;Inscriptional Pahlavi&amp;quot;,&lt;br /&gt;
		Phlp = &amp;quot;Psalter Pahlavi&amp;quot;,&lt;br /&gt;
		Phnx = &amp;quot;Phoenician&amp;quot;,&lt;br /&gt;
		Plrd = &amp;quot;Miao&amp;quot;,&lt;br /&gt;
		Prti = &amp;quot;Inscriptional Parthian&amp;quot;,&lt;br /&gt;
		Rjng = &amp;quot;Rejang&amp;quot;,&lt;br /&gt;
		Rohg = &amp;quot;Hanifi Rohingya&amp;quot;,&lt;br /&gt;
		Runr = &amp;quot;Runic&amp;quot;,&lt;br /&gt;
		Samr = &amp;quot;Samaritan&amp;quot;,&lt;br /&gt;
		Sarb = &amp;quot;Old South Arabian&amp;quot;,&lt;br /&gt;
		Saur = &amp;quot;Saurashtra&amp;quot;,&lt;br /&gt;
		Sgnw = &amp;quot;SignWriting&amp;quot;,&lt;br /&gt;
		Shaw = &amp;quot;Shavian&amp;quot;,&lt;br /&gt;
		Shrd = &amp;quot;Sharada&amp;quot;,&lt;br /&gt;
		Sidd = &amp;quot;Siddham&amp;quot;,&lt;br /&gt;
		Sind = &amp;quot;Khudawadi&amp;quot;,&lt;br /&gt;
		Sinh = &amp;quot;Sinhala&amp;quot;,&lt;br /&gt;
		Sogd = &amp;quot;Sogdian&amp;quot;,&lt;br /&gt;
		Sogo = &amp;quot;Old Sogdian&amp;quot;,&lt;br /&gt;
		Sora = &amp;quot;Sora Sompeng&amp;quot;,&lt;br /&gt;
		Soyo = &amp;quot;Soyombo&amp;quot;,&lt;br /&gt;
		Sund = &amp;quot;Sundanese&amp;quot;,&lt;br /&gt;
		Sylo = &amp;quot;Syloti Nagri&amp;quot;,&lt;br /&gt;
		Syrc = &amp;quot;Syriac&amp;quot;,&lt;br /&gt;
		Tagb = &amp;quot;Tagbanwa&amp;quot;,&lt;br /&gt;
		Takr = &amp;quot;Takri&amp;quot;,&lt;br /&gt;
		Tale = &amp;quot;Tai Le&amp;quot;,&lt;br /&gt;
		Talu = &amp;quot;New Tai Lue&amp;quot;,&lt;br /&gt;
		Taml = &amp;quot;Tamil&amp;quot;,&lt;br /&gt;
		Tang = &amp;quot;Tangut&amp;quot;,&lt;br /&gt;
		Tavt = &amp;quot;Tai Viet&amp;quot;,&lt;br /&gt;
		Telu = &amp;quot;Telugu&amp;quot;,&lt;br /&gt;
		Tfng = &amp;quot;Tifinagh&amp;quot;,&lt;br /&gt;
		Tglg = &amp;quot;Tagalog&amp;quot;,&lt;br /&gt;
		Thaa = &amp;quot;Thaana&amp;quot;,&lt;br /&gt;
		Thai = &amp;quot;Thai&amp;quot;,&lt;br /&gt;
		Tibt = &amp;quot;Tibetan&amp;quot;,&lt;br /&gt;
		Tirh = &amp;quot;Tirhuta&amp;quot;,&lt;br /&gt;
		Ugar = &amp;quot;Ugaritic&amp;quot;,&lt;br /&gt;
		Vaii = &amp;quot;Vai&amp;quot;,&lt;br /&gt;
		Wara = &amp;quot;Warang Citi&amp;quot;,&lt;br /&gt;
		Wcho = &amp;quot;Wancho&amp;quot;,&lt;br /&gt;
		Xpeo = &amp;quot;Old Persian&amp;quot;,&lt;br /&gt;
		Xsux = &amp;quot;Cuneiform&amp;quot;,&lt;br /&gt;
		Yiii = &amp;quot;Yi&amp;quot;,&lt;br /&gt;
		Zanb = &amp;quot;Zanabazar Square&amp;quot;,&lt;br /&gt;
		Zinh = &amp;quot;Inherited&amp;quot;,&lt;br /&gt;
		Zyyy = &amp;quot;Common&amp;quot;,&lt;br /&gt;
		Zzzz = &amp;quot;Unknown&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
	},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Required for binary search function in [[Module:Language/scripts]].&lt;br /&gt;
-- Cannot get length of module loaded with mw.loadData.&lt;br /&gt;
data.ranges.length = #data.ranges&lt;br /&gt;
&lt;br /&gt;
data.rtl = {}&lt;br /&gt;
&lt;br /&gt;
for _, script in ipairs(mw.loadData &amp;quot;Module:Lang/data&amp;quot;.rtl_scripts) do&lt;br /&gt;
	-- [[Module:Lang/data]] has script codes in lowercase;&lt;br /&gt;
	-- this module has script codes with the first letter capitalized.&lt;br /&gt;
	data.rtl[script:gsub(&amp;quot;^%a&amp;quot;, string.upper)] = true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return data&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=Module:Unicode_data&amp;diff=1356</id>
		<title>Module:Unicode data</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=Module:Unicode_data&amp;diff=1356"/>
		<updated>2019-09-06T09:28:25Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
local floor = math.floor&lt;br /&gt;
&lt;br /&gt;
local function errorf(level, ...)&lt;br /&gt;
	if type(level) == &amp;quot;number&amp;quot; then&lt;br /&gt;
		return error(string.format(...), level + 1)&lt;br /&gt;
	else -- level is actually the format string.&lt;br /&gt;
		return error(string.format(level, ...), 2)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function binary_range_search(codepoint, ranges)&lt;br /&gt;
	local low, mid, high&lt;br /&gt;
	low, high = 1, ranges.length or require &amp;quot;Module:TableTools&amp;quot;.length(ranges)&lt;br /&gt;
	while low &amp;lt;= high do&lt;br /&gt;
		mid = floor((low + high) / 2)&lt;br /&gt;
		local range = ranges[mid]&lt;br /&gt;
		if codepoint &amp;lt; range[1] then&lt;br /&gt;
			high = mid - 1&lt;br /&gt;
		elseif codepoint &amp;lt;= range[2] then&lt;br /&gt;
			return range, mid&lt;br /&gt;
		else&lt;br /&gt;
			low = mid + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return nil, mid&lt;br /&gt;
end&lt;br /&gt;
p.binary_range_search = binary_range_search&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
local function linear_range_search(codepoint, ranges)&lt;br /&gt;
	for i, range in ipairs(ranges) do&lt;br /&gt;
		if range[1] &amp;lt;= codepoint and codepoint &amp;lt;= range[2] then&lt;br /&gt;
			return range&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
-- Load a module by indexing &amp;quot;loader&amp;quot; with the name of the module minus the&lt;br /&gt;
-- &amp;quot;Module:Unicode data/&amp;quot; part. For instance, loader.blocks returns&lt;br /&gt;
-- [[Module:Unicode data/blocks]]. If a module cannot be loaded, false will be&lt;br /&gt;
-- returned.&lt;br /&gt;
local loader = setmetatable({}, {&lt;br /&gt;
	__index = function (self, key)&lt;br /&gt;
		local success, data = pcall(mw.loadData, &amp;quot;Module:Unicode data/&amp;quot; .. key)&lt;br /&gt;
		if not success then&lt;br /&gt;
			data = false&lt;br /&gt;
		end&lt;br /&gt;
		self[key] = data&lt;br /&gt;
		return data&lt;br /&gt;
	end&lt;br /&gt;
})&lt;br /&gt;
&lt;br /&gt;
-- For the algorithm used to generate Hangul Syllable names,&lt;br /&gt;
-- see &amp;quot;Hangul Syllable Name Generation&amp;quot; in section 3.12 of the&lt;br /&gt;
-- Unicode Specification:&lt;br /&gt;
-- https://www.unicode.org/versions/Unicode11.0.0/ch03.pdf&lt;br /&gt;
local name_hooks = {&lt;br /&gt;
	{     0x00,     0x1F, &amp;quot;&amp;lt;control-%04X&amp;gt;&amp;quot; }, -- C0 control characters&lt;br /&gt;
	{     0x7F,     0x9F, &amp;quot;&amp;lt;control-%04X&amp;gt;&amp;quot; }, -- DEL and C1 control characters&lt;br /&gt;
	{   0x3400,   0x4DB5, &amp;quot;CJK UNIFIED IDEOGRAPH-%04X&amp;quot; }, -- CJK Ideograph Extension A&lt;br /&gt;
	{   0x4E00,   0x9FEF, &amp;quot;CJK UNIFIED IDEOGRAPH-%04X&amp;quot; }, -- CJK Ideograph&lt;br /&gt;
	{   0xAC00,   0xD7A3, function (codepoint) -- Hangul Syllables&lt;br /&gt;
		local Hangul_data = loader.Hangul&lt;br /&gt;
		local syllable_index = codepoint - 0xAC00&lt;br /&gt;
&lt;br /&gt;
		return (&amp;quot;HANGUL SYLLABLE %s%s%s&amp;quot;):format(&lt;br /&gt;
			Hangul_data.leads[floor(syllable_index / Hangul_data.final_count)],&lt;br /&gt;
			Hangul_data.vowels[floor((syllable_index % Hangul_data.final_count)&lt;br /&gt;
				/ Hangul_data.trail_count)],&lt;br /&gt;
			Hangul_data.trails[syllable_index % Hangul_data.trail_count]&lt;br /&gt;
		)&lt;br /&gt;
	end },&lt;br /&gt;
	-- High Surrogates, High Private Use Surrogates, Low Surrogates&lt;br /&gt;
	{   0xD800,   0xDFFF, &amp;quot;&amp;lt;surrogate-%04X&amp;gt;&amp;quot; },&lt;br /&gt;
	{   0xE000,   0xF8FF, &amp;quot;&amp;lt;private-use-%04X&amp;gt;&amp;quot; }, -- Private Use&lt;br /&gt;
	-- CJK Compatibility Ideographs&lt;br /&gt;
	{   0xF900,   0xFA6D, &amp;quot;CJK COMPATIBILITY IDEOGRAPH-%04X&amp;quot; },&lt;br /&gt;
	{   0xFA70,   0xFAD9, &amp;quot;CJK COMPATIBILITY IDEOGRAPH-%04X&amp;quot; },&lt;br /&gt;
	{  0x17000,  0x187F1, &amp;quot;TANGUT IDEOGRAPH-%04X&amp;quot; }, -- Tangut&lt;br /&gt;
	{  0x18800,  0x18AF2, function (codepoint)&lt;br /&gt;
		return (&amp;quot;TANGUT COMPONENT-%03d&amp;quot;):format(codepoint - 0x187FF)&lt;br /&gt;
	end },&lt;br /&gt;
	{  0x1B170,  0x1B2FB, &amp;quot;NUSHU CHARACTER-%04X&amp;quot; }, -- Nushu&lt;br /&gt;
	{  0x20000,  0x2A6D6, &amp;quot;CJK UNIFIED IDEOGRAPH-%04X&amp;quot; }, -- CJK Ideograph Extension B&lt;br /&gt;
	{  0x2A700,  0x2B734, &amp;quot;CJK UNIFIED IDEOGRAPH-%04X&amp;quot; }, -- CJK Ideograph Extension C&lt;br /&gt;
	{  0x2A740,  0x2B81D, &amp;quot;CJK UNIFIED IDEOGRAPH-%04X&amp;quot; }, -- CJK Ideograph Extension D&lt;br /&gt;
	{  0x2B820,  0x2CEA1, &amp;quot;CJK UNIFIED IDEOGRAPH-%04X&amp;quot; }, -- CJK Ideograph Extension E&lt;br /&gt;
	{  0x2CEB0,  0x2EBE0, &amp;quot;CJK UNIFIED IDEOGRAPH-%04X&amp;quot; }, -- CJK Ideograph Extension F&lt;br /&gt;
	-- CJK Compatibility Ideographs Supplement (Supplementary Ideographic Plane)&lt;br /&gt;
	{  0x2F800,  0x2FA1D, &amp;quot;CJK COMPATIBILITY IDEOGRAPH-%04X&amp;quot; },&lt;br /&gt;
	{  0xE0100,  0xE01EF, function (codepoint) -- Variation Selectors Supplement&lt;br /&gt;
		return (&amp;quot;VARIATION SELECTOR-%d&amp;quot;):format(codepoint - 0xE0100 + 17)&lt;br /&gt;
	end},&lt;br /&gt;
	{  0xF0000,  0xFFFFD, &amp;quot;&amp;lt;private-use-%04X&amp;gt;&amp;quot; }, -- Plane 15 Private Use&lt;br /&gt;
	{ 0x100000, 0x10FFFD, &amp;quot;&amp;lt;private-use-%04X&amp;gt;&amp;quot; }  -- Plane 16 Private Use&lt;br /&gt;
}&lt;br /&gt;
name_hooks.length = #name_hooks&lt;br /&gt;
&lt;br /&gt;
local name_range_cache&lt;br /&gt;
&lt;br /&gt;
local function generate_name(data, codepoint)&lt;br /&gt;
	if type(data) == &amp;quot;string&amp;quot; then&lt;br /&gt;
		return data:format(codepoint)&lt;br /&gt;
	else&lt;br /&gt;
		return data(codepoint)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- Checks that the code point is a number and in range.&lt;br /&gt;
-- Does not check whether code point is an integer.&lt;br /&gt;
-- Not used&lt;br /&gt;
local function check_codepoint(funcName, argIdx, val)&lt;br /&gt;
	require 'libraryUtil'.checkType(funcName, argIdx, val, 'number')&lt;br /&gt;
	if codepoint &amp;lt; 0 or 0x10FFFF &amp;lt; codepoint then&lt;br /&gt;
		errorf(&amp;quot;Codepoint %04X out of range&amp;quot;, codepoint)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
-- https://www.unicode.org/versions/Unicode11.0.0/ch04.pdf, section 4.8&lt;br /&gt;
function p.lookup_name(codepoint)&lt;br /&gt;
	-- U+FDD0-U+FDEF and all code points ending in FFFE or FFFF are Unassigned&lt;br /&gt;
	-- (Cn) and specifically noncharacters:&lt;br /&gt;
	-- https://www.unicode.org/faq/private_use.html#nonchar4&lt;br /&gt;
	if 0xFDD0 &amp;lt;= codepoint and (codepoint &amp;lt;= 0xFDEF&lt;br /&gt;
			or floor(codepoint % 0x10000) &amp;gt;= 0xFFFE) then&lt;br /&gt;
		return (&amp;quot;&amp;lt;noncharacter-%04X&amp;gt;&amp;quot;):format(codepoint)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if name_range_cache -- Check if previously used &amp;quot;name hook&amp;quot; applies to this code point.&lt;br /&gt;
			and codepoint &amp;gt;= name_range_cache[1]&lt;br /&gt;
			and codepoint &amp;lt;= name_range_cache[2] then&lt;br /&gt;
		return generate_name(name_range_cache[3], codepoint)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local range = binary_range_search(codepoint, name_hooks)&lt;br /&gt;
	if range then&lt;br /&gt;
		name_range_cache = range&lt;br /&gt;
		return generate_name(range[3], codepoint)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local data = loader[('names/%03X'):format(codepoint / 0x1000)]&lt;br /&gt;
	&lt;br /&gt;
	if data and data[codepoint] then&lt;br /&gt;
		return data[codepoint]&lt;br /&gt;
	&lt;br /&gt;
	-- Unassigned (Cn) consists of noncharacters and reserved characters.&lt;br /&gt;
	-- The character has been established not to be a noncharacter,&lt;br /&gt;
	-- and if it were assigned, its name would already been retrieved,&lt;br /&gt;
	-- so it must be reserved.&lt;br /&gt;
	else&lt;br /&gt;
		return (&amp;quot;&amp;lt;reserved-%04X&amp;gt;&amp;quot;):format(codepoint)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- No image data modules on Wikipedia yet.&lt;br /&gt;
function p.lookup_image(codepoint)&lt;br /&gt;
	local data = loader[('images/%03X'):format(codepoint / 0x1000)]&lt;br /&gt;
	&lt;br /&gt;
	if data then&lt;br /&gt;
		return data[codepoint]&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
local planes = {&lt;br /&gt;
	[ 0] = &amp;quot;Basic Multilingual Plane&amp;quot;;&lt;br /&gt;
	[ 1] = &amp;quot;Supplementary Multilingual Plane&amp;quot;;&lt;br /&gt;
	[ 2] = &amp;quot;Supplementary Ideographic Plane&amp;quot;;&lt;br /&gt;
	[13] = &amp;quot;Supplementary Special-purpose Plane&amp;quot;;&lt;br /&gt;
	[14] = &amp;quot;Supplementary Private Use Area-A&amp;quot;;&lt;br /&gt;
	[15] = &amp;quot;Supplementary Private Use Area-B&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Load [[Module:Unicode data/blocks]] if needed and assign it to this variable.&lt;br /&gt;
local blocks&lt;br /&gt;
&lt;br /&gt;
local function block_iter(blocks, i)&lt;br /&gt;
	i = i + 1&lt;br /&gt;
	local data = blocks[i]&lt;br /&gt;
	if data then&lt;br /&gt;
		 -- Unpack doesn't work on tables loaded with mw.loadData.&lt;br /&gt;
		return i, data[1], data[2], data[3]&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- An ipairs-type iterator generator for the list of blocks.&lt;br /&gt;
function p.enum_blocks()&lt;br /&gt;
	local blocks = loader.blocks&lt;br /&gt;
	return block_iter, blocks, 0&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.lookup_plane(codepoint)&lt;br /&gt;
	local i = floor(codepoint / 0x10000)&lt;br /&gt;
	return planes[i] or (&amp;quot;Plane %u&amp;quot;):format(i)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.lookup_block(codepoint)&lt;br /&gt;
	local blocks = loader.blocks&lt;br /&gt;
	local range = binary_range_search(codepoint, blocks)&lt;br /&gt;
	if range then&lt;br /&gt;
		return range[3]&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;No Block&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.get_block_info(name)&lt;br /&gt;
	for i, block in ipairs(loader.blocks) do&lt;br /&gt;
		if block[3] == name then&lt;br /&gt;
			return block&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.is_valid_pagename(pagename)&lt;br /&gt;
	local has_nonws = false&lt;br /&gt;
&lt;br /&gt;
	for cp in mw.ustring.gcodepoint(pagename) do&lt;br /&gt;
		if (cp == 0x0023) -- #&lt;br /&gt;
		or (cp == 0x005B) -- [&lt;br /&gt;
		or (cp == 0x005D) -- ]&lt;br /&gt;
		or (cp == 0x007B) -- {&lt;br /&gt;
		or (cp == 0x007C) -- |&lt;br /&gt;
		or (cp == 0x007D) -- }&lt;br /&gt;
		or (cp == 0x180E) -- MONGOLIAN VOWEL SEPARATOR&lt;br /&gt;
		or ((cp &amp;gt;= 0x2000) and (cp &amp;lt;= 0x200A)) -- spaces in General Punctuation block&lt;br /&gt;
		or (cp == 0xFFFD) -- REPLACEMENT CHARACTER&lt;br /&gt;
		then&lt;br /&gt;
			return false&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local printable, result = p.is_printable(cp)&lt;br /&gt;
		if not printable then&lt;br /&gt;
			return false&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if result ~= &amp;quot;space-separator&amp;quot; then&lt;br /&gt;
			has_nonws = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return has_nonws&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function manual_unpack(what, from)&lt;br /&gt;
	if what[from + 1] == nil then&lt;br /&gt;
		return what[from]&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = {}&lt;br /&gt;
	from = from or 1&lt;br /&gt;
	for i, item in ipairs(what) do&lt;br /&gt;
		if i &amp;gt;= from then&lt;br /&gt;
			table.insert(result, item)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return unpack(result)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function compare_ranges(range1, range2)&lt;br /&gt;
	return range1[1] &amp;lt; range2[1]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Creates a function to look up data in a module that contains &amp;quot;singles&amp;quot; (a&lt;br /&gt;
-- code point-to-data map) and &amp;quot;ranges&amp;quot; (an array containing arrays that contain&lt;br /&gt;
-- the low and high code points of a range and the data associated with that&lt;br /&gt;
-- range).&lt;br /&gt;
-- &amp;quot;loader&amp;quot; loads and returns the &amp;quot;singles&amp;quot; and &amp;quot;ranges&amp;quot; tables.&lt;br /&gt;
-- &amp;quot;match_func&amp;quot; is passed the code point and either the data or the &amp;quot;dots&amp;quot;, and&lt;br /&gt;
-- generates the final result of the function.&lt;br /&gt;
-- The varargs (&amp;quot;dots&amp;quot;) describes the default data to be returned if there wasn't&lt;br /&gt;
-- a match.&lt;br /&gt;
-- In case the function is used more than once, &amp;quot;cache&amp;quot; saves ranges that have&lt;br /&gt;
-- already been found to match, or a range whose data is the default if there&lt;br /&gt;
-- was no match.&lt;br /&gt;
local function memo_lookup(data_module_subpage, match_func, ...)&lt;br /&gt;
	local dots = { ... }&lt;br /&gt;
	local cache = {}&lt;br /&gt;
	local singles, ranges&lt;br /&gt;
&lt;br /&gt;
	return function (codepoint)&lt;br /&gt;
		if not singles then&lt;br /&gt;
			local data_module = loader[data_module_subpage]&lt;br /&gt;
			singles, ranges = data_module.singles, data_module.ranges&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if singles[codepoint] then&lt;br /&gt;
			return match_func(codepoint, singles[codepoint])&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local range = binary_range_search(codepoint, cache)&lt;br /&gt;
		if range then&lt;br /&gt;
			return match_func(codepoint, manual_unpack(range, 3))&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		local range, index = binary_range_search(codepoint, ranges)&lt;br /&gt;
		if range then&lt;br /&gt;
			table.insert(cache, range)&lt;br /&gt;
			table.sort(cache, compare_ranges)&lt;br /&gt;
			return match_func(codepoint, manual_unpack(range, 3))&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if ranges[index] then&lt;br /&gt;
			local dots_range&lt;br /&gt;
			if codepoint &amp;gt; ranges[index][2] then&lt;br /&gt;
				dots_range = {&lt;br /&gt;
					ranges[index][2] + 1,&lt;br /&gt;
					ranges[index + 1] and ranges[index + 1][1] - 1 or 0x10FFFF,&lt;br /&gt;
					unpack(dots)&lt;br /&gt;
				}&lt;br /&gt;
			else -- codepoint &amp;lt; range[index][1]&lt;br /&gt;
				dots_range = {&lt;br /&gt;
					ranges[index - 1] and ranges[index - 1][2] + 1 or 0,&lt;br /&gt;
					ranges[index][1] - 1,&lt;br /&gt;
					unpack(dots)&lt;br /&gt;
				}&lt;br /&gt;
			end&lt;br /&gt;
			table.sort(cache, compare_ranges)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		return match_func(codepoint)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Get a code point's combining class value in [[Module:Unicode data/combining]],&lt;br /&gt;
-- and return whether this value is not zero. Zero is assigned as the default&lt;br /&gt;
-- if the combining class value is not found in this data module.&lt;br /&gt;
-- That is, return true if character is combining, or false if it is not.&lt;br /&gt;
-- See https://www.unicode.org/reports/tr44/#Canonical_Combining_Class_Values for&lt;br /&gt;
-- more information.&lt;br /&gt;
p.is_combining = memo_lookup(&lt;br /&gt;
	&amp;quot;combining&amp;quot;,&lt;br /&gt;
	function (codepoint, combining_class)&lt;br /&gt;
		return combining_class and combining_class ~= 0 or false&lt;br /&gt;
	end,&lt;br /&gt;
	0)&lt;br /&gt;
&lt;br /&gt;
function p.add_dotted_circle(str)&lt;br /&gt;
	return (mw.ustring.gsub(str, &amp;quot;.&amp;quot;,&lt;br /&gt;
		function(char)&lt;br /&gt;
			if p.is_combining(mw.ustring.codepoint(char)) then&lt;br /&gt;
				return '◌' .. char&lt;br /&gt;
			end&lt;br /&gt;
		end))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local lookup_control = memo_lookup(&lt;br /&gt;
	&amp;quot;control&amp;quot;,&lt;br /&gt;
	function (codepoint, ccc)&lt;br /&gt;
		return ccc or &amp;quot;assigned&amp;quot;&lt;br /&gt;
	end,&lt;br /&gt;
	&amp;quot;assigned&amp;quot;)&lt;br /&gt;
p.lookup_control = lookup_control&lt;br /&gt;
&lt;br /&gt;
function p.is_assigned(codepoint)&lt;br /&gt;
	return lookup_control(codepoint) ~= &amp;quot;unassigned&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.is_printable(codepoint)&lt;br /&gt;
	local result = lookup_control(codepoint)&lt;br /&gt;
	return (result == &amp;quot;assigned&amp;quot;) or (result == &amp;quot;space-separator&amp;quot;), result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.is_whitespace(codepoint)&lt;br /&gt;
	local result = lookup_control(codepoint)&lt;br /&gt;
	return (result == &amp;quot;space-separator&amp;quot;), result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.lookup_category = memo_lookup(&lt;br /&gt;
	&amp;quot;category&amp;quot;,&lt;br /&gt;
	function (codepoint, category)&lt;br /&gt;
		return category&lt;br /&gt;
	end,&lt;br /&gt;
	&amp;quot;Cn&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local lookup_script = memo_lookup(&lt;br /&gt;
	&amp;quot;scripts&amp;quot;,&lt;br /&gt;
	function (codepoint, script_code)&lt;br /&gt;
		return script_code or 'Zzzz'&lt;br /&gt;
	end,&lt;br /&gt;
	&amp;quot;Zzzz&amp;quot;)&lt;br /&gt;
p.lookup_script = lookup_script&lt;br /&gt;
&lt;br /&gt;
function p.get_best_script(str)&lt;br /&gt;
	-- Check type of argument, because mw.text.decode coerces numbers to strings!&lt;br /&gt;
	require &amp;quot;libraryUtil&amp;quot;.checkType(&amp;quot;get_best_script&amp;quot;, 1, str, &amp;quot;string&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	-- Convert HTML character references (including named character references,&lt;br /&gt;
	-- or character entities) to characters.&lt;br /&gt;
	str = mw.text.decode(str, true)&lt;br /&gt;
	&lt;br /&gt;
	local scripts = {}&lt;br /&gt;
	for codepoint in mw.ustring.gcodepoint(str) do&lt;br /&gt;
		local script = lookup_script(codepoint)&lt;br /&gt;
		&lt;br /&gt;
		-- Ignore &amp;quot;Inherited&amp;quot;, &amp;quot;Undetermined&amp;quot;, or &amp;quot;Uncoded&amp;quot; scripts.&lt;br /&gt;
		if not (script == &amp;quot;Zyyy&amp;quot; or script == &amp;quot;Zinh&amp;quot; or script == &amp;quot;Zzzz&amp;quot;) then&lt;br /&gt;
			scripts[script] = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- If scripts does not contain two or more keys,&lt;br /&gt;
	-- return first and only key (script code) in table.&lt;br /&gt;
	if not next(scripts, next(scripts)) then&lt;br /&gt;
		return next(scripts)&lt;br /&gt;
	end -- else return majority script, or else &amp;quot;Zzzz&amp;quot;?&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.is_Latin(str)&lt;br /&gt;
	require &amp;quot;libraryUtil&amp;quot;.checkType(&amp;quot;get_best_script&amp;quot;, 1, str, &amp;quot;string&amp;quot;)&lt;br /&gt;
	str = mw.text.decode(str, true)&lt;br /&gt;
	&lt;br /&gt;
	-- Search for the leading bytes that introduce the UTF-8 encoding of the&lt;br /&gt;
	-- code points U+0340-U+10FFFF. If they are not found and there is at least&lt;br /&gt;
	-- one Latin-script character, the string counts as Latin, because the rest&lt;br /&gt;
	-- of the characters can only be Zyyy, Zinh, and Zzzz.&lt;br /&gt;
	-- The only scripts found below U+0370 (the first code point of the Greek&lt;br /&gt;
	-- and Coptic block) are Latn, Zyyy, Zinh, and Zzzz.&lt;br /&gt;
	-- See the codepage in the [[UTF-8]] article.&lt;br /&gt;
	if not str:find &amp;quot;[\205-\244]&amp;quot; then&lt;br /&gt;
		for codepoint in mw.ustring.gcodepoint(str) do&lt;br /&gt;
			if lookup_script(codepoint) == &amp;quot;Latn&amp;quot; then&lt;br /&gt;
				return true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local Latn = false&lt;br /&gt;
	&lt;br /&gt;
	for codepoint in mw.ustring.gcodepoint(str) do&lt;br /&gt;
		local script = lookup_script(codepoint)&lt;br /&gt;
		&lt;br /&gt;
		if script == &amp;quot;Latn&amp;quot; then&lt;br /&gt;
			Latn = true&lt;br /&gt;
		elseif not (script == &amp;quot;Zyyy&amp;quot; or script == &amp;quot;Zinh&amp;quot;&lt;br /&gt;
				or script == &amp;quot;Zzzz&amp;quot;) then&lt;br /&gt;
			return false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return Latn&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Checks that a string contains only characters belonging to right-to-left&lt;br /&gt;
-- scripts, or characters of ignorable scripts.&lt;br /&gt;
function p.is_rtl(str)&lt;br /&gt;
	require &amp;quot;libraryUtil&amp;quot;.checkType(&amp;quot;get_best_script&amp;quot;, 1, str, &amp;quot;string&amp;quot;)&lt;br /&gt;
	str = mw.text.decode(str, true)&lt;br /&gt;
	&lt;br /&gt;
	-- Search for the leading bytes that introduce the UTF-8 encoding of the&lt;br /&gt;
	-- code points U+0580-U+10FFFF. If they are not found, the string can only&lt;br /&gt;
	-- have characters from a left-to-right script, because the first code point&lt;br /&gt;
	-- in a right-to-left script is U+0591, in the Hebrew block.&lt;br /&gt;
	if not str:find &amp;quot;[\214-\244]&amp;quot; then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = false&lt;br /&gt;
	local rtl = loader.scripts.rtl&lt;br /&gt;
	for codepoint in mw.ustring.gcodepoint(str) do&lt;br /&gt;
		local script = lookup_script(codepoint)&lt;br /&gt;
		&lt;br /&gt;
		if rtl[script] then&lt;br /&gt;
			result = true&lt;br /&gt;
		elseif not (script == &amp;quot;Zyyy&amp;quot; or script == &amp;quot;Zinh&amp;quot;&lt;br /&gt;
				or script == &amp;quot;Zzzz&amp;quot;) then&lt;br /&gt;
			return false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function get_codepoint(args, arg)&lt;br /&gt;
	local codepoint_string = args[arg]&lt;br /&gt;
		or errorf(2, &amp;quot;Parameter %s is required&amp;quot;, tostring(arg))&lt;br /&gt;
	local codepoint = tonumber(codepoint_string, 16)&lt;br /&gt;
		or errorf(2, &amp;quot;Parameter %s is not a code point in hexadecimal base&amp;quot;,&lt;br /&gt;
			tostring(arg))&lt;br /&gt;
	if not (0 &amp;lt;= codepoint and codepoint &amp;lt;= 0x10FFFF) then&lt;br /&gt;
		errorf(2, &amp;quot;code point in parameter %s out of range&amp;quot;, tostring(arg))&lt;br /&gt;
	end&lt;br /&gt;
	return codepoint&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function get_func(args, arg, prefix)&lt;br /&gt;
	local suffix = args[arg]&lt;br /&gt;
		or errorf(2, &amp;quot;Parameter %s is required&amp;quot;, tostring(arg))&lt;br /&gt;
	suffix = mw.text.trim(suffix)&lt;br /&gt;
	local func_name = prefix .. suffix&lt;br /&gt;
	local func = p[func_name]&lt;br /&gt;
		or errorf(2, &amp;quot;There is no function '%s'&amp;quot;, func_name)&lt;br /&gt;
	return func&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- This function allows any of the &amp;quot;lookup&amp;quot; functions to be invoked. The first&lt;br /&gt;
-- parameter is the word after &amp;quot;lookup_&amp;quot;; the second parameter is the code point&lt;br /&gt;
-- in hexadecimal base.&lt;br /&gt;
function p.lookup(frame)&lt;br /&gt;
	local func = get_func(frame.args, 1, &amp;quot;lookup_&amp;quot;)&lt;br /&gt;
	local codepoint = get_codepoint(frame.args, 2)&lt;br /&gt;
	local result = func(codepoint)&lt;br /&gt;
	if func == p.lookup_name then&lt;br /&gt;
		-- Prevent code point labels such as &amp;lt;control-0000&amp;gt; from being&lt;br /&gt;
		-- interpreted as HTML tags.&lt;br /&gt;
		result = result:gsub(&amp;quot;&amp;lt;&amp;quot;, &amp;quot;&amp;amp;lt;&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.is(frame)&lt;br /&gt;
	local func = get_func(frame.args, 1, &amp;quot;is_&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	-- is_Latin and is_valid_pagename take strings.&lt;br /&gt;
	if func == p.is_Latin or func == p.is_valid_pagename or func == p.is_rtl then&lt;br /&gt;
		return (func(frame.args[2]))&lt;br /&gt;
	else -- The rest take code points.&lt;br /&gt;
		local codepoint = get_codepoint(frame.args, 2)&lt;br /&gt;
		return (func(codepoint)) -- Adjust to one result.&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=Module:TableTools&amp;diff=1354</id>
		<title>Module:TableTools</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=Module:TableTools&amp;diff=1354"/>
		<updated>2019-09-06T09:28:24Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--[[&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--                               TableTools                                       --&lt;br /&gt;
--                                                                                --&lt;br /&gt;
-- This module includes a number of functions for dealing with Lua tables.        --&lt;br /&gt;
-- It is a meta-module, meant to be called from other Lua modules, and should     --&lt;br /&gt;
-- not be called directly from #invoke.                                           --&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
local libraryUtil = require('libraryUtil')&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Define often-used variables and functions.&lt;br /&gt;
local floor = math.floor&lt;br /&gt;
local infinity = math.huge&lt;br /&gt;
local checkType = libraryUtil.checkType&lt;br /&gt;
local checkTypeMulti = libraryUtil.checkTypeMulti&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- isPositiveInteger&lt;br /&gt;
--&lt;br /&gt;
-- This function returns true if the given value is a positive integer, and false&lt;br /&gt;
-- if not. Although it doesn't operate on tables, it is included here as it is&lt;br /&gt;
-- useful for determining whether a given table key is in the array part or the&lt;br /&gt;
-- hash part of a table.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
function p.isPositiveInteger(v)&lt;br /&gt;
	if type(v) == 'number' and v &amp;gt;= 1 and floor(v) == v and v &amp;lt; infinity 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;
-- isNan&lt;br /&gt;
--&lt;br /&gt;
-- This function returns true if the given number is a NaN value, and false&lt;br /&gt;
-- if not. Although it doesn't operate on tables, it is included here as it is&lt;br /&gt;
-- useful for determining whether a value can be a valid table key. Lua will&lt;br /&gt;
-- generate an error if a NaN is used as a table key.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
function p.isNan(v)&lt;br /&gt;
	if type(v) == 'number' and tostring(v) == '-nan' 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;
-- shallowClone&lt;br /&gt;
--&lt;br /&gt;
-- This returns a clone of a table. The value returned is a new table, but all&lt;br /&gt;
-- subtables and functions are shared. Metamethods are respected, but the returned&lt;br /&gt;
-- table will have no metatable of its own.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
function p.shallowClone(t)&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	for k, v in pairs(t) do&lt;br /&gt;
		ret[k] = v&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;
-- removeDuplicates&lt;br /&gt;
--&lt;br /&gt;
-- This removes duplicate values from an array. Non-positive-integer keys are&lt;br /&gt;
-- ignored. The earliest value is kept, and all subsequent duplicate values are&lt;br /&gt;
-- removed, but otherwise the array order is unchanged.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
function p.removeDuplicates(t)&lt;br /&gt;
	checkType('removeDuplicates', 1, t, 'table')&lt;br /&gt;
	local isNan = p.isNan&lt;br /&gt;
	local ret, exists = {}, {}&lt;br /&gt;
	for i, v in ipairs(t) do&lt;br /&gt;
		if isNan(v) then&lt;br /&gt;
			-- NaNs can't be table keys, and they are also unique, so we don't need to check existence.&lt;br /&gt;
			ret[#ret + 1] = v&lt;br /&gt;
		else&lt;br /&gt;
			if not exists[v] then&lt;br /&gt;
				ret[#ret + 1] = v&lt;br /&gt;
				exists[v] = true&lt;br /&gt;
			end&lt;br /&gt;
		end	&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end			&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- numKeys&lt;br /&gt;
--&lt;br /&gt;
-- This takes a table and returns an array containing the numbers of any numerical&lt;br /&gt;
-- keys that have non-nil values, sorted in numerical order.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
function p.numKeys(t)&lt;br /&gt;
	checkType('numKeys', 1, t, 'table')&lt;br /&gt;
	local isPositiveInteger = p.isPositiveInteger&lt;br /&gt;
	local nums = {}&lt;br /&gt;
	for k, v in pairs(t) do&lt;br /&gt;
		if isPositiveInteger(k) then&lt;br /&gt;
			nums[#nums + 1] = k&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(nums)&lt;br /&gt;
	return nums&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- affixNums&lt;br /&gt;
--&lt;br /&gt;
-- This takes a table and returns an array containing the numbers of keys with the&lt;br /&gt;
-- specified prefix and suffix. For example, for the table&lt;br /&gt;
-- {a1 = 'foo', a3 = 'bar', a6 = 'baz'} and the prefix &amp;quot;a&amp;quot;, affixNums will&lt;br /&gt;
-- return {1, 3, 6}.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
function p.affixNums(t, prefix, suffix)&lt;br /&gt;
	checkType('affixNums', 1, t, 'table')&lt;br /&gt;
	checkType('affixNums', 2, prefix, 'string', true)&lt;br /&gt;
	checkType('affixNums', 3, suffix, 'string', true)&lt;br /&gt;
&lt;br /&gt;
	local function cleanPattern(s)&lt;br /&gt;
		-- Cleans a pattern so that the magic characters ()%.[]*+-?^$ are interpreted literally.&lt;br /&gt;
		s = s:gsub('([%(%)%%%.%[%]%*%+%-%?%^%$])', '%%%1')&lt;br /&gt;
		return s&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	prefix = prefix or ''&lt;br /&gt;
	suffix = suffix or ''&lt;br /&gt;
	prefix = cleanPattern(prefix)&lt;br /&gt;
	suffix = cleanPattern(suffix)&lt;br /&gt;
	local pattern = '^' .. prefix .. '([1-9]%d*)' .. suffix .. '$'&lt;br /&gt;
&lt;br /&gt;
	local nums = {}&lt;br /&gt;
	for k, v in pairs(t) do&lt;br /&gt;
		if type(k) == 'string' then			&lt;br /&gt;
			local num = mw.ustring.match(k, pattern)&lt;br /&gt;
			if num then&lt;br /&gt;
				nums[#nums + 1] = tonumber(num)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(nums)&lt;br /&gt;
	return nums&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- numData&lt;br /&gt;
--&lt;br /&gt;
-- Given a table with keys like (&amp;quot;foo1&amp;quot;, &amp;quot;bar1&amp;quot;, &amp;quot;foo2&amp;quot;, &amp;quot;baz2&amp;quot;), returns a table&lt;br /&gt;
-- of subtables in the format &lt;br /&gt;
-- { [1] = {foo = 'text', bar = 'text'}, [2] = {foo = 'text', baz = 'text'} }&lt;br /&gt;
-- Keys that don't end with an integer are stored in a subtable named &amp;quot;other&amp;quot;.&lt;br /&gt;
-- The compress option compresses the table so that it can be iterated over with&lt;br /&gt;
-- ipairs.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
function p.numData(t, compress)&lt;br /&gt;
	checkType('numData', 1, t, 'table')&lt;br /&gt;
	checkType('numData', 2, compress, 'boolean', true)&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	for k, v in pairs(t) do&lt;br /&gt;
		local prefix, num = mw.ustring.match(tostring(k), '^([^0-9]*)([1-9][0-9]*)$')&lt;br /&gt;
		if num then&lt;br /&gt;
			num = tonumber(num)&lt;br /&gt;
			local subtable = ret[num] or {}&lt;br /&gt;
			if prefix == '' then&lt;br /&gt;
				-- Positional parameters match the blank string; put them at the start of the subtable instead.&lt;br /&gt;
				prefix = 1&lt;br /&gt;
			end&lt;br /&gt;
			subtable[prefix] = v&lt;br /&gt;
			ret[num] = subtable&lt;br /&gt;
		else&lt;br /&gt;
			local subtable = ret.other or {}&lt;br /&gt;
			subtable[k] = v&lt;br /&gt;
			ret.other = subtable&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if compress then&lt;br /&gt;
		local other = ret.other&lt;br /&gt;
		ret = p.compressSparseArray(ret)&lt;br /&gt;
		ret.other = other&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;
-- compressSparseArray&lt;br /&gt;
--&lt;br /&gt;
-- This takes an array with one or more nil values, and removes the nil values&lt;br /&gt;
-- while preserving the order, so that the array can be safely traversed with&lt;br /&gt;
-- ipairs.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
function p.compressSparseArray(t)&lt;br /&gt;
	checkType('compressSparseArray', 1, t, 'table')&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	local nums = p.numKeys(t)&lt;br /&gt;
	for _, num in ipairs(nums) do&lt;br /&gt;
		ret[#ret + 1] = t[num]&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;
-- sparseIpairs&lt;br /&gt;
--&lt;br /&gt;
-- This is an iterator for sparse arrays. It can be used like ipairs, but can&lt;br /&gt;
-- handle nil values.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
function p.sparseIpairs(t)&lt;br /&gt;
	checkType('sparseIpairs', 1, t, 'table')&lt;br /&gt;
	local nums = p.numKeys(t)&lt;br /&gt;
	local i = 0&lt;br /&gt;
	local lim = #nums&lt;br /&gt;
	return function ()&lt;br /&gt;
		i = i + 1&lt;br /&gt;
		if i &amp;lt;= lim then&lt;br /&gt;
			local key = nums[i]&lt;br /&gt;
			return key, t[key]&lt;br /&gt;
		else&lt;br /&gt;
			return nil, nil&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- size&lt;br /&gt;
--&lt;br /&gt;
-- This returns the size of a key/value pair table. It will also work on arrays,&lt;br /&gt;
-- but for arrays it is more efficient to use the # operator.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
function p.size(t)&lt;br /&gt;
	checkType('size', 1, t, 'table')&lt;br /&gt;
	local i = 0&lt;br /&gt;
	for k in pairs(t) do&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
	return i&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function defaultKeySort(item1, item2)&lt;br /&gt;
	-- &amp;quot;number&amp;quot; &amp;lt; &amp;quot;string&amp;quot;, so numbers will be sorted before strings.&lt;br /&gt;
	local type1, type2 = type(item1), type(item2)&lt;br /&gt;
	if type1 ~= type2 then&lt;br /&gt;
		return type1 &amp;lt; type2&lt;br /&gt;
	else -- This will fail with table, boolean, function.&lt;br /&gt;
		return item1 &amp;lt; item2&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	Returns a list of the keys in a table, sorted using either a default&lt;br /&gt;
	comparison function or a custom keySort function.&lt;br /&gt;
]]&lt;br /&gt;
function p.keysToList(t, keySort, checked)&lt;br /&gt;
	if not checked then&lt;br /&gt;
		checkType('keysToList', 1, t, 'table')&lt;br /&gt;
		checkTypeMulti('keysToList', 2, keySort, { 'function', 'boolean', 'nil' })&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local list = {}&lt;br /&gt;
	local index = 1&lt;br /&gt;
	for key, value in pairs(t) do&lt;br /&gt;
		list[index] = key&lt;br /&gt;
		index = index + 1&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if keySort ~= false then&lt;br /&gt;
		keySort = type(keySort) == 'function' and keySort or defaultKeySort&lt;br /&gt;
		&lt;br /&gt;
		table.sort(list, keySort)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return list&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	Iterates through a table, with the keys sorted using the keysToList function.&lt;br /&gt;
	If there are only numerical keys, sparseIpairs is probably more efficient.&lt;br /&gt;
]]&lt;br /&gt;
function p.sortedPairs(t, keySort)&lt;br /&gt;
	checkType('sortedPairs', 1, t, 'table')&lt;br /&gt;
	checkType('sortedPairs', 2, keySort, 'function', true)&lt;br /&gt;
	&lt;br /&gt;
	local list = p.keysToList(t, keySort, true)&lt;br /&gt;
	&lt;br /&gt;
	local i = 0&lt;br /&gt;
	return function()&lt;br /&gt;
		i = i + 1&lt;br /&gt;
		local key = list[i]&lt;br /&gt;
		if key ~= nil then&lt;br /&gt;
			return key, t[key]&lt;br /&gt;
		else&lt;br /&gt;
			return nil, nil&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	Returns true if all keys in the table are consecutive integers starting at 1.&lt;br /&gt;
--]]&lt;br /&gt;
function p.isArray(t)&lt;br /&gt;
	checkType(&amp;quot;isArray&amp;quot;, 1, t, &amp;quot;table&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	local i = 0&lt;br /&gt;
	for k, v in pairs(t) do&lt;br /&gt;
		i = i + 1&lt;br /&gt;
		if t[i] == nil then&lt;br /&gt;
			return false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- { &amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot; } -&amp;gt; { a = 1, b = 2, c = 3 }&lt;br /&gt;
function p.invert(array)&lt;br /&gt;
	checkType(&amp;quot;invert&amp;quot;, 1, array, &amp;quot;table&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	local map = {}&lt;br /&gt;
	for i, v in ipairs(array) do&lt;br /&gt;
		map[v] = i&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return map&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	{ &amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot; } -&amp;gt; { [&amp;quot;a&amp;quot;] = true, [&amp;quot;b&amp;quot;] = true, [&amp;quot;c&amp;quot;] = true }&lt;br /&gt;
--]]&lt;br /&gt;
function p.listToSet(t)&lt;br /&gt;
	checkType(&amp;quot;listToSet&amp;quot;, 1, t, &amp;quot;table&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	local set = {}&lt;br /&gt;
	for _, item in ipairs(t) do&lt;br /&gt;
		set[item] = true&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return set&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	Recursive deep copy function.&lt;br /&gt;
	Preserves identities of subtables.&lt;br /&gt;
	&lt;br /&gt;
]]&lt;br /&gt;
local function _deepCopy(orig, includeMetatable, already_seen)&lt;br /&gt;
	-- Stores copies of tables indexed by the original table.&lt;br /&gt;
	already_seen = already_seen or {}&lt;br /&gt;
	&lt;br /&gt;
	local copy = already_seen[orig]&lt;br /&gt;
	if copy ~= nil then&lt;br /&gt;
		return copy&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if type(orig) == 'table' then&lt;br /&gt;
		copy = {}&lt;br /&gt;
		for orig_key, orig_value in pairs(orig) do&lt;br /&gt;
			copy[deepcopy(orig_key, includeMetatable, already_seen)] = deepcopy(orig_value, includeMetatable, already_seen)&lt;br /&gt;
		end&lt;br /&gt;
		already_seen[orig] = copy&lt;br /&gt;
		&lt;br /&gt;
		if includeMetatable then&lt;br /&gt;
			local mt = getmetatable(orig)&lt;br /&gt;
			if mt ~= nil then&lt;br /&gt;
				local mt_copy = deepcopy(mt, includeMetatable, already_seen)&lt;br /&gt;
				setmetatable(copy, mt_copy)&lt;br /&gt;
				already_seen[mt] = mt_copy&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	else -- number, string, boolean, etc&lt;br /&gt;
		copy = orig&lt;br /&gt;
	end&lt;br /&gt;
	return copy&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.deepCopy(orig, noMetatable, already_seen)&lt;br /&gt;
	checkType(&amp;quot;deepCopy&amp;quot;, 3, already_seen, &amp;quot;table&amp;quot;, true)&lt;br /&gt;
	&lt;br /&gt;
	return _deepCopy(orig, not noMetatable, already_seen)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	Concatenates all values in the table that are indexed by a number, in order.&lt;br /&gt;
	sparseConcat{ a, nil, c, d }  =&amp;gt;  &amp;quot;acd&amp;quot;&lt;br /&gt;
	sparseConcat{ nil, b, c, d }  =&amp;gt;  &amp;quot;bcd&amp;quot;&lt;br /&gt;
]]&lt;br /&gt;
function p.sparseConcat(t, sep, i, j)&lt;br /&gt;
	local list = {}&lt;br /&gt;
	&lt;br /&gt;
	local list_i = 0&lt;br /&gt;
	for _, v in p.sparseIpairs(t) do&lt;br /&gt;
		list_i = list_i + 1&lt;br /&gt;
		list[list_i] = v&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(list, sep, i, j)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- This returns the length of a table, or the first integer key n counting from&lt;br /&gt;
-- 1 such that t[n + 1] is nil. It is similar to the operator #, but may return&lt;br /&gt;
-- a different value when there are gaps in the array portion of the table.&lt;br /&gt;
-- Intended to be used on data loaded with mw.loadData. For other tables, use #.&lt;br /&gt;
-- Note: #frame.args in frame object always be set to 0, regardless of &lt;br /&gt;
-- the number of unnamed template parameters, so use this function for&lt;br /&gt;
-- frame.args.&lt;br /&gt;
--]]&lt;br /&gt;
function p.length(t)&lt;br /&gt;
	local i = 1&lt;br /&gt;
	while t[i] ~= nil do&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
	return i - 1&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.inArray(arr, valueToFind)&lt;br /&gt;
	checkType(&amp;quot;inArray&amp;quot;, 1, arr, &amp;quot;table&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	-- if valueToFind is nil, error?&lt;br /&gt;
	&lt;br /&gt;
	for _, v in ipairs(arr) do&lt;br /&gt;
		if v == valueToFind then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=Module:Section_link&amp;diff=1350</id>
		<title>Module:Section link</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=Module:Section_link&amp;diff=1350"/>
		<updated>2019-09-06T09:28:23Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module implements {{section link}}.&lt;br /&gt;
require('Module:No globals');&lt;br /&gt;
&lt;br /&gt;
local checkType = require('libraryUtil').checkType&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local function makeSectionLink(page, section, display)&lt;br /&gt;
	display = display or section&lt;br /&gt;
	page = page or ''&lt;br /&gt;
	return string.format('[[%s#%s|%s]]', page, section, display)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function normalizeTitle(title)&lt;br /&gt;
	title = mw.ustring.gsub(mw.ustring.gsub(title, &amp;quot;'&amp;quot;, &amp;quot;&amp;quot;), '&amp;quot;', '')&lt;br /&gt;
	title = mw.ustring.gsub(title, &amp;quot;%b&amp;lt;&amp;gt;&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
	return mw.title.new(title).prefixedText&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(page, sections, options, title)&lt;br /&gt;
	-- Validate input.&lt;br /&gt;
	checkType('_main', 1, page, 'string', true)&lt;br /&gt;
	checkType('_main', 3, options, 'table', true)&lt;br /&gt;
	if sections == nil then&lt;br /&gt;
		sections = {}&lt;br /&gt;
	elseif type(sections) == 'string' then&lt;br /&gt;
		sections = {sections}&lt;br /&gt;
	elseif type(sections) ~= 'table' then&lt;br /&gt;
		error(string.format(&lt;br /&gt;
			&amp;quot;type error in argument #2 to '_main' &amp;quot; ..&lt;br /&gt;
			&amp;quot;(string, table or nil expected, got %s)&amp;quot;,&lt;br /&gt;
			type(sections)&lt;br /&gt;
		), 2)&lt;br /&gt;
	end&lt;br /&gt;
	options = options or {}&lt;br /&gt;
	title = title or mw.title.getCurrentTitle()&lt;br /&gt;
&lt;br /&gt;
	-- Deal with blank page names elegantly&lt;br /&gt;
	if page and not page:find('%S') then&lt;br /&gt;
		page = nil&lt;br /&gt;
		options.nopage = true&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Make the link(s).&lt;br /&gt;
	local isShowingPage = not options.nopage&lt;br /&gt;
	if #sections &amp;lt;= 1 then&lt;br /&gt;
		local linkPage = page or ''&lt;br /&gt;
		local section = sections[1] or 'Notes'&lt;br /&gt;
		local display = '§&amp;amp;nbsp;' .. section&lt;br /&gt;
		if isShowingPage then&lt;br /&gt;
			page = page or title.prefixedText&lt;br /&gt;
			if options.display and options.display ~= '' then&lt;br /&gt;
				if normalizeTitle(options.display) == normalizeTitle(page) then&lt;br /&gt;
					display = options.display .. ' ' .. display&lt;br /&gt;
				else&lt;br /&gt;
					error(string.format(&lt;br /&gt;
						'Display title &amp;quot;%s&amp;quot; was ignored since it is ' ..&lt;br /&gt;
						&amp;quot;not equivalent to the page's actual title&amp;quot;,&lt;br /&gt;
						options.display&lt;br /&gt;
					), 0)&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				display = page .. ' ' .. display&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return makeSectionLink(linkPage, section, display)&lt;br /&gt;
	else&lt;br /&gt;
		-- Multiple sections. First, make a list of the links to display.&lt;br /&gt;
		local ret = {}&lt;br /&gt;
		for i, section in ipairs(sections) do&lt;br /&gt;
			ret[i] = makeSectionLink(page, section)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Assemble the list of links into a string with mw.text.listToText.&lt;br /&gt;
		-- We use the default separator for mw.text.listToText, but a custom&lt;br /&gt;
		-- conjunction. There is also a special case conjunction if we only&lt;br /&gt;
		-- have two links.&lt;br /&gt;
		local conjunction&lt;br /&gt;
		if #sections == 2 then&lt;br /&gt;
			conjunction = '&amp;amp;#8203; and '&lt;br /&gt;
		else&lt;br /&gt;
			conjunction = ', and '&lt;br /&gt;
		end&lt;br /&gt;
		ret = mw.text.listToText(ret, nil, conjunction)&lt;br /&gt;
&lt;br /&gt;
		-- Add the intro text.&lt;br /&gt;
		local intro = '§§&amp;amp;nbsp;'&lt;br /&gt;
		if isShowingPage then&lt;br /&gt;
			intro = (page or title.prefixedText) .. ' ' .. intro&lt;br /&gt;
		end&lt;br /&gt;
		ret = intro .. ret&lt;br /&gt;
&lt;br /&gt;
		return ret&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local yesno = require('Module:Yesno')&lt;br /&gt;
	local args = require('Module:Arguments').getArgs(frame, {&lt;br /&gt;
		wrappers = 'Template:Section link',&lt;br /&gt;
		valueFunc = function (key, value)&lt;br /&gt;
			value = value:match('^%s*(.-)%s*$') -- Trim whitespace&lt;br /&gt;
			-- Allow blank first parameters, as the wikitext template does this.&lt;br /&gt;
			if value ~= '' or key == 1 then&lt;br /&gt;
				return value&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	})&lt;br /&gt;
&lt;br /&gt;
	for k, v in pairs(args) do													-- replace underscores in the positional parameter values&lt;br /&gt;
		if 'number' == type(k) and not yesno (args['keep-underscores']) then	-- unless |keep-underscores=yes&lt;br /&gt;
			args[k] = v:gsub ('_', ' ')											-- do the replacement&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Sort the arguments.&lt;br /&gt;
	local page&lt;br /&gt;
	local sections, options = {}, {}&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		if k == 1 then&lt;br /&gt;
			-- Doing this in the loop because of a bug in [[Module:Arguments]]&lt;br /&gt;
			-- when using pairs with deleted arguments.&lt;br /&gt;
			page = mw.text.decode(v, true)&lt;br /&gt;
		elseif type(k) == 'number' then&lt;br /&gt;
			sections[k] = v&lt;br /&gt;
		else&lt;br /&gt;
			options[k] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	options.nopage = yesno (options.nopage);									-- make boolean&lt;br /&gt;
	&lt;br /&gt;
	-- Extract section from page, if present&lt;br /&gt;
	if page then&lt;br /&gt;
		local p, s = page:match('^(.-)#(.*)$')&lt;br /&gt;
		if p then page, sections[1] = p, s end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Compress the sections array.&lt;br /&gt;
	local function compressArray(t)&lt;br /&gt;
		local nums, ret = {}, {}&lt;br /&gt;
		for num in pairs(t) do&lt;br /&gt;
			nums[#nums + 1] = num&lt;br /&gt;
		end&lt;br /&gt;
		table.sort(nums)&lt;br /&gt;
		for i, num in ipairs(nums) do&lt;br /&gt;
			ret[i] = t[num]&lt;br /&gt;
		end&lt;br /&gt;
		return ret&lt;br /&gt;
	end&lt;br /&gt;
	sections = compressArray(sections)&lt;br /&gt;
&lt;br /&gt;
	return p._main(page, sections, options)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=Module:String&amp;diff=1352</id>
		<title>Module:String</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=Module:String&amp;diff=1352"/>
		<updated>2019-09-06T09:28:23Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--[[&lt;br /&gt;
&lt;br /&gt;
This module is intended to provide access to basic string functions.&lt;br /&gt;
&lt;br /&gt;
Most of the functions provided here can be invoked with named parameters,&lt;br /&gt;
unnamed parameters, or a mixture.  If named parameters are used, Mediawiki will&lt;br /&gt;
automatically remove any leading or trailing whitespace from the parameter.&lt;br /&gt;
Depending on the intended use, it may be advantageous to either preserve or&lt;br /&gt;
remove such whitespace.&lt;br /&gt;
&lt;br /&gt;
Global options&lt;br /&gt;
    ignore_errors: If set to 'true' or 1, any error condition will result in&lt;br /&gt;
        an empty string being returned rather than an error message.&lt;br /&gt;
&lt;br /&gt;
    error_category: If an error occurs, specifies the name of a category to&lt;br /&gt;
        include with the error message.  The default category is&lt;br /&gt;
        [Category:Errors reported by Module String].&lt;br /&gt;
&lt;br /&gt;
    no_category: If set to 'true' or 1, no category will be added if an error&lt;br /&gt;
        is generated.&lt;br /&gt;
&lt;br /&gt;
Unit tests for this module are available at Module:String/tests.&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local str = {}&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
len&lt;br /&gt;
&lt;br /&gt;
This function returns the length of the target string.&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:String|len|target_string|}}&lt;br /&gt;
OR&lt;br /&gt;
{{#invoke:String|len|s=target_string}}&lt;br /&gt;
&lt;br /&gt;
Parameters&lt;br /&gt;
    s: The string whose length to report&lt;br /&gt;
&lt;br /&gt;
If invoked using named parameters, Mediawiki will automatically remove any leading or&lt;br /&gt;
trailing whitespace from the target string.&lt;br /&gt;
]]&lt;br /&gt;
function str.len( frame )&lt;br /&gt;
	local new_args = str._getParameters( frame.args, {'s'} )&lt;br /&gt;
	local s = new_args['s'] or ''&lt;br /&gt;
	return mw.ustring.len( s )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
sub&lt;br /&gt;
&lt;br /&gt;
This function returns a substring of the target string at specified indices.&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:String|sub|target_string|start_index|end_index}}&lt;br /&gt;
OR&lt;br /&gt;
{{#invoke:String|sub|s=target_string|i=start_index|j=end_index}}&lt;br /&gt;
&lt;br /&gt;
Parameters&lt;br /&gt;
    s: The string to return a subset of&lt;br /&gt;
    i: The fist index of the substring to return, defaults to 1.&lt;br /&gt;
    j: The last index of the string to return, defaults to the last character.&lt;br /&gt;
&lt;br /&gt;
The first character of the string is assigned an index of 1.  If either i or j&lt;br /&gt;
is a negative value, it is interpreted the same as selecting a character by&lt;br /&gt;
counting from the end of the string.  Hence, a value of -1 is the same as&lt;br /&gt;
selecting the last character of the string.&lt;br /&gt;
&lt;br /&gt;
If the requested indices are out of range for the given string, an error is&lt;br /&gt;
reported.&lt;br /&gt;
]]&lt;br /&gt;
function str.sub( frame )&lt;br /&gt;
	local new_args = str._getParameters( frame.args, { 's', 'i', 'j' } )&lt;br /&gt;
	local s = new_args['s'] or ''&lt;br /&gt;
	local i = tonumber( new_args['i'] ) or 1&lt;br /&gt;
	local j = tonumber( new_args['j'] ) or -1&lt;br /&gt;
&lt;br /&gt;
	local len = mw.ustring.len( s )&lt;br /&gt;
&lt;br /&gt;
	-- Convert negatives for range checking&lt;br /&gt;
	if i &amp;lt; 0 then&lt;br /&gt;
		i = len + i + 1&lt;br /&gt;
	end&lt;br /&gt;
	if j &amp;lt; 0 then&lt;br /&gt;
		j = len + j + 1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if i &amp;gt; len or j &amp;gt; len or i &amp;lt; 1 or j &amp;lt; 1 then&lt;br /&gt;
		return str._error( 'String subset index out of range' )&lt;br /&gt;
	end&lt;br /&gt;
	if j &amp;lt; i then&lt;br /&gt;
		return str._error( 'String subset indices out of order' )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return mw.ustring.sub( s, i, j )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
This function implements that features of {{str sub old}} and is kept in order&lt;br /&gt;
to maintain these older templates.&lt;br /&gt;
]]&lt;br /&gt;
function str.sublength( frame )&lt;br /&gt;
	local i = tonumber( frame.args.i ) or 0&lt;br /&gt;
	local len = tonumber( frame.args.len )&lt;br /&gt;
	return mw.ustring.sub( frame.args.s, i + 1, len and ( i + len ) )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
match&lt;br /&gt;
&lt;br /&gt;
This function returns a substring from the source string that matches a&lt;br /&gt;
specified pattern.&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch_output}}&lt;br /&gt;
OR&lt;br /&gt;
{{#invoke:String|match|s=source_string|pattern=pattern_string|start=start_index&lt;br /&gt;
    |match=match_number|plain=plain_flag|nomatch=nomatch_output}}&lt;br /&gt;
&lt;br /&gt;
Parameters&lt;br /&gt;
    s: The string to search&lt;br /&gt;
    pattern: The pattern or string to find within the string&lt;br /&gt;
    start: The index within the source string to start the search.  The first&lt;br /&gt;
        character of the string has index 1.  Defaults to 1.&lt;br /&gt;
    match: In some cases it may be possible to make multiple matches on a single&lt;br /&gt;
        string.  This specifies which match to return, where the first match is&lt;br /&gt;
        match= 1.  If a negative number is specified then a match is returned&lt;br /&gt;
        counting from the last match.  Hence match = -1 is the same as requesting&lt;br /&gt;
        the last match.  Defaults to 1.&lt;br /&gt;
    plain: A flag indicating that the pattern should be understood as plain&lt;br /&gt;
        text.  Defaults to false.&lt;br /&gt;
    nomatch: If no match is found, output the &amp;quot;nomatch&amp;quot; value rather than an error.&lt;br /&gt;
&lt;br /&gt;
If invoked using named parameters, Mediawiki will automatically remove any leading or&lt;br /&gt;
trailing whitespace from each string.  In some circumstances this is desirable, in&lt;br /&gt;
other cases one may want to preserve the whitespace.&lt;br /&gt;
&lt;br /&gt;
If the match_number or start_index are out of range for the string being queried, then&lt;br /&gt;
this function generates an error.  An error is also generated if no match is found.&lt;br /&gt;
If one adds the parameter ignore_errors=true, then the error will be suppressed and&lt;br /&gt;
an empty string will be returned on any failure.&lt;br /&gt;
&lt;br /&gt;
For information on constructing Lua patterns, a form of [regular expression], see:&lt;br /&gt;
&lt;br /&gt;
* http://www.lua.org/manual/5.1/manual.html#5.4.1&lt;br /&gt;
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns&lt;br /&gt;
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
-- This sub-routine is exported for use in other modules&lt;br /&gt;
function str._match( s, pattern, start, match_index, plain_flag, nomatch )&lt;br /&gt;
	if s == '' then&lt;br /&gt;
		return str._error( 'Target string is empty' )&lt;br /&gt;
	end&lt;br /&gt;
	if pattern == '' then&lt;br /&gt;
		return str._error( 'Pattern string is empty' )&lt;br /&gt;
	end&lt;br /&gt;
	start = tonumber(start) or 1&lt;br /&gt;
	if math.abs(start) &amp;lt; 1 or math.abs(start) &amp;gt; mw.ustring.len( s ) then&lt;br /&gt;
		return str._error( 'Requested start is out of range' )&lt;br /&gt;
	end&lt;br /&gt;
	if match_index == 0 then&lt;br /&gt;
		return str._error( 'Match index is out of range' )&lt;br /&gt;
	end&lt;br /&gt;
	if plain_flag then&lt;br /&gt;
		pattern = str._escapePattern( pattern )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local result&lt;br /&gt;
	if match_index == 1 then&lt;br /&gt;
		-- Find first match is simple case&lt;br /&gt;
		result = mw.ustring.match( s, pattern, start )&lt;br /&gt;
	else&lt;br /&gt;
		if start &amp;gt; 1 then&lt;br /&gt;
			s = mw.ustring.sub( s, start )&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local iterator = mw.ustring.gmatch(s, pattern)&lt;br /&gt;
		if match_index &amp;gt; 0 then&lt;br /&gt;
			-- Forward search&lt;br /&gt;
			for w in iterator do&lt;br /&gt;
				match_index = match_index - 1&lt;br /&gt;
				if match_index == 0 then&lt;br /&gt;
					result = w&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			-- Reverse search&lt;br /&gt;
			local result_table = {}&lt;br /&gt;
			local count = 1&lt;br /&gt;
			for w in iterator do&lt;br /&gt;
				result_table[count] = w&lt;br /&gt;
				count = count + 1&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			result = result_table[ count + match_index ]&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if result == nil then&lt;br /&gt;
		if nomatch == nil then&lt;br /&gt;
			return str._error( 'Match not found' )&lt;br /&gt;
		else&lt;br /&gt;
			return nomatch&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return result&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
-- This is the entry point for #invoke:String|match&lt;br /&gt;
function str.match( frame )&lt;br /&gt;
	local new_args = str._getParameters( frame.args, {'s', 'pattern', 'start', 'match', 'plain', 'nomatch'} )&lt;br /&gt;
	local s = new_args['s'] or ''&lt;br /&gt;
	local start = tonumber( new_args['start'] ) or 1&lt;br /&gt;
	local plain_flag = str._getBoolean( new_args['plain'] or false )&lt;br /&gt;
	local pattern = new_args['pattern'] or ''&lt;br /&gt;
	local match_index = math.floor( tonumber(new_args['match']) or 1 )&lt;br /&gt;
	local nomatch = new_args['nomatch']&lt;br /&gt;
&lt;br /&gt;
	return str._match( s, pattern, start, match_index, plain_flag, nomatch )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
pos&lt;br /&gt;
&lt;br /&gt;
This function returns a single character from the target string at position pos.&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:String|pos|target_string|index_value}}&lt;br /&gt;
OR&lt;br /&gt;
{{#invoke:String|pos|target=target_string|pos=index_value}}&lt;br /&gt;
&lt;br /&gt;
Parameters&lt;br /&gt;
    target: The string to search&lt;br /&gt;
    pos: The index for the character to return&lt;br /&gt;
&lt;br /&gt;
If invoked using named parameters, Mediawiki will automatically remove any leading or&lt;br /&gt;
trailing whitespace from the target string.  In some circumstances this is desirable, in&lt;br /&gt;
other cases one may want to preserve the whitespace.&lt;br /&gt;
&lt;br /&gt;
The first character has an index value of 1.&lt;br /&gt;
&lt;br /&gt;
If one requests a negative value, this function will select a character by counting backwards&lt;br /&gt;
from the end of the string.  In other words pos = -1 is the same as asking for the last character.&lt;br /&gt;
&lt;br /&gt;
A requested value of zero, or a value greater than the length of the string returns an error.&lt;br /&gt;
]]&lt;br /&gt;
function str.pos( frame )&lt;br /&gt;
	local new_args = str._getParameters( frame.args, {'target', 'pos'} )&lt;br /&gt;
	local target_str = new_args['target'] or ''&lt;br /&gt;
	local pos = tonumber( new_args['pos'] ) or 0&lt;br /&gt;
&lt;br /&gt;
	if pos == 0 or math.abs(pos) &amp;gt; mw.ustring.len( target_str ) then&lt;br /&gt;
		return str._error( 'String index out of range' )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return mw.ustring.sub( target_str, pos, pos )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
str_find&lt;br /&gt;
&lt;br /&gt;
This function duplicates the behavior of {{str_find}}, including all of its quirks.&lt;br /&gt;
This is provided in order to support existing templates, but is NOT RECOMMENDED for&lt;br /&gt;
new code and templates.  New code is recommended to use the &amp;quot;find&amp;quot; function instead.&lt;br /&gt;
&lt;br /&gt;
Returns the first index in &amp;quot;source&amp;quot; that is a match to &amp;quot;target&amp;quot;.  Indexing is 1-based,&lt;br /&gt;
and the function returns -1 if the &amp;quot;target&amp;quot; string is not present in &amp;quot;source&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Important Note: If the &amp;quot;target&amp;quot; string is empty / missing, this function returns a&lt;br /&gt;
value of &amp;quot;1&amp;quot;, which is generally unexpected behavior, and must be accounted for&lt;br /&gt;
separatetly.&lt;br /&gt;
]]&lt;br /&gt;
function str.str_find( frame )&lt;br /&gt;
	local new_args = str._getParameters( frame.args, {'source', 'target'} )&lt;br /&gt;
	local source_str = new_args['source'] or ''&lt;br /&gt;
	local target_str = new_args['target'] or ''&lt;br /&gt;
&lt;br /&gt;
	if target_str == '' then&lt;br /&gt;
		return 1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local start = mw.ustring.find( source_str, target_str, 1, true )&lt;br /&gt;
	if start == nil then&lt;br /&gt;
		start = -1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return start&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
find&lt;br /&gt;
&lt;br /&gt;
This function allows one to search for a target string or pattern within another&lt;br /&gt;
string.&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:String|find|source_str|target_string|start_index|plain_flag}}&lt;br /&gt;
OR&lt;br /&gt;
{{#invoke:String|find|source=source_str|target=target_str|start=start_index|plain=plain_flag}}&lt;br /&gt;
&lt;br /&gt;
Parameters&lt;br /&gt;
    source: The string to search&lt;br /&gt;
    target: The string or pattern to find within source&lt;br /&gt;
    start: The index within the source string to start the search, defaults to 1&lt;br /&gt;
    plain: Boolean flag indicating that target should be understood as plain&lt;br /&gt;
        text and not as a Lua style regular expression, defaults to true&lt;br /&gt;
&lt;br /&gt;
If invoked using named parameters, Mediawiki will automatically remove any leading or&lt;br /&gt;
trailing whitespace from the parameter.  In some circumstances this is desirable, in&lt;br /&gt;
other cases one may want to preserve the whitespace.&lt;br /&gt;
&lt;br /&gt;
This function returns the first index &amp;gt;= &amp;quot;start&amp;quot; where &amp;quot;target&amp;quot; can be found&lt;br /&gt;
within &amp;quot;source&amp;quot;.  Indices are 1-based.  If &amp;quot;target&amp;quot; is not found, then this&lt;br /&gt;
function returns 0.  If either &amp;quot;source&amp;quot; or &amp;quot;target&amp;quot; are missing / empty, this&lt;br /&gt;
function also returns 0.&lt;br /&gt;
&lt;br /&gt;
This function should be safe for UTF-8 strings.&lt;br /&gt;
]]&lt;br /&gt;
function str.find( frame )&lt;br /&gt;
	local new_args = str._getParameters( frame.args, {'source', 'target', 'start', 'plain' } )&lt;br /&gt;
	local source_str = new_args['source'] or ''&lt;br /&gt;
	local pattern = new_args['target'] or ''&lt;br /&gt;
	local start_pos = tonumber(new_args['start']) or 1&lt;br /&gt;
	local plain = new_args['plain'] or true&lt;br /&gt;
&lt;br /&gt;
	if source_str == '' or pattern == '' then&lt;br /&gt;
		return 0&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	plain = str._getBoolean( plain )&lt;br /&gt;
&lt;br /&gt;
	local start = mw.ustring.find( source_str, pattern, start_pos, plain )&lt;br /&gt;
	if start == nil then&lt;br /&gt;
		start = 0&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return start&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
replace&lt;br /&gt;
&lt;br /&gt;
This function allows one to replace a target string or pattern within another&lt;br /&gt;
string.&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:String|replace|source_str|pattern_string|replace_string|replacement_count|plain_flag}}&lt;br /&gt;
OR&lt;br /&gt;
{{#invoke:String|replace|source=source_string|pattern=pattern_string|replace=replace_string|&lt;br /&gt;
   count=replacement_count|plain=plain_flag}}&lt;br /&gt;
&lt;br /&gt;
Parameters&lt;br /&gt;
    source: The string to search&lt;br /&gt;
    pattern: The string or pattern to find within source&lt;br /&gt;
    replace: The replacement text&lt;br /&gt;
    count: The number of occurences to replace, defaults to all.&lt;br /&gt;
    plain: Boolean flag indicating that pattern should be understood as plain&lt;br /&gt;
        text and not as a Lua style regular expression, defaults to true&lt;br /&gt;
]]&lt;br /&gt;
function str.replace( frame )&lt;br /&gt;
	local new_args = str._getParameters( frame.args, {'source', 'pattern', 'replace', 'count', 'plain' } )&lt;br /&gt;
	local source_str = new_args['source'] or ''&lt;br /&gt;
	local pattern = new_args['pattern'] or ''&lt;br /&gt;
	local replace = new_args['replace'] or ''&lt;br /&gt;
	local count = tonumber( new_args['count'] )&lt;br /&gt;
	local plain = new_args['plain'] or true&lt;br /&gt;
&lt;br /&gt;
	if source_str == '' or pattern == '' then&lt;br /&gt;
		return source_str&lt;br /&gt;
	end&lt;br /&gt;
	plain = str._getBoolean( plain )&lt;br /&gt;
&lt;br /&gt;
	if plain then&lt;br /&gt;
		pattern = str._escapePattern( pattern )&lt;br /&gt;
		replace = mw.ustring.gsub( replace, &amp;quot;%%&amp;quot;, &amp;quot;%%%%&amp;quot; ) --Only need to escape replacement sequences.&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local result&lt;br /&gt;
&lt;br /&gt;
	if count ~= nil then&lt;br /&gt;
		result = mw.ustring.gsub( source_str, pattern, replace, count )&lt;br /&gt;
	else&lt;br /&gt;
		result = mw.ustring.gsub( source_str, pattern, replace )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
    simple function to pipe string.rep to templates.&lt;br /&gt;
]]&lt;br /&gt;
function str.rep( frame )&lt;br /&gt;
	local repetitions = tonumber( frame.args[2] )&lt;br /&gt;
	if not repetitions then&lt;br /&gt;
		return str._error( 'function rep expects a number as second parameter, received &amp;quot;' .. ( frame.args[2] or '' ) .. '&amp;quot;' )&lt;br /&gt;
	end&lt;br /&gt;
	return string.rep( frame.args[1] or '', repetitions )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
escapePattern&lt;br /&gt;
&lt;br /&gt;
This function escapes special characters from a Lua string pattern. See [1]&lt;br /&gt;
for details on how patterns work.&lt;br /&gt;
&lt;br /&gt;
[1] https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:String|escapePattern|pattern_string}}&lt;br /&gt;
&lt;br /&gt;
Parameters&lt;br /&gt;
    pattern_string: The pattern string to escape.&lt;br /&gt;
]]&lt;br /&gt;
function str.escapePattern( frame )&lt;br /&gt;
	local pattern_str = frame.args[1]&lt;br /&gt;
	if not pattern_str then&lt;br /&gt;
		return str._error( 'No pattern string specified' )&lt;br /&gt;
	end&lt;br /&gt;
	local result = str._escapePattern( pattern_str )&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
count&lt;br /&gt;
This function counts the number of occurrences of one string in another.&lt;br /&gt;
]]&lt;br /&gt;
function str.count(frame)&lt;br /&gt;
	local args = str._getParameters(frame.args, {'source', 'pattern', 'plain'})&lt;br /&gt;
	local source = args.source or ''&lt;br /&gt;
	local pattern = args.pattern or ''&lt;br /&gt;
	local plain = str._getBoolean(args.plain or true)&lt;br /&gt;
	if plain then&lt;br /&gt;
		pattern = str._escapePattern(pattern)&lt;br /&gt;
	end&lt;br /&gt;
	local _, count = mw.ustring.gsub(source, pattern, '')&lt;br /&gt;
	return count&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
endswith&lt;br /&gt;
This function determines whether a string ends with another string.&lt;br /&gt;
]]&lt;br /&gt;
function str.endswith(frame)&lt;br /&gt;
	local args = str._getParameters(frame.args, {'source', 'pattern'})&lt;br /&gt;
	local source = args.source or ''&lt;br /&gt;
	local pattern = args.pattern or ''&lt;br /&gt;
	if pattern == '' then&lt;br /&gt;
		-- All strings end with the empty string.&lt;br /&gt;
		return &amp;quot;yes&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	if mw.ustring.sub(source, -mw.ustring.len(pattern), -1) == pattern then&lt;br /&gt;
		return &amp;quot;yes&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
join&lt;br /&gt;
&lt;br /&gt;
Join all non empty arguments together; the first argument is the separator.&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:String|join|sep|one|two|three}}&lt;br /&gt;
]]&lt;br /&gt;
function str.join(frame)&lt;br /&gt;
	local args = {}&lt;br /&gt;
	local sep&lt;br /&gt;
	for _, v in ipairs( frame.args ) do&lt;br /&gt;
		if sep then&lt;br /&gt;
			if v ~= '' then&lt;br /&gt;
				table.insert(args, v)&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			sep = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat( args, sep or '' )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Helper function that populates the argument list given that user may need to use a mix of&lt;br /&gt;
named and unnamed parameters.  This is relevant because named parameters are not&lt;br /&gt;
identical to unnamed parameters due to string trimming, and when dealing with strings&lt;br /&gt;
we sometimes want to either preserve or remove that whitespace depending on the application.&lt;br /&gt;
]]&lt;br /&gt;
function str._getParameters( frame_args, arg_list )&lt;br /&gt;
	local new_args = {}&lt;br /&gt;
	local index = 1&lt;br /&gt;
	local value&lt;br /&gt;
&lt;br /&gt;
	for _, arg in ipairs( arg_list ) do&lt;br /&gt;
		value = frame_args[arg]&lt;br /&gt;
		if value == nil then&lt;br /&gt;
			value = frame_args[index]&lt;br /&gt;
			index = index + 1&lt;br /&gt;
		end&lt;br /&gt;
		new_args[arg] = value&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return new_args&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Helper function to handle error messages.&lt;br /&gt;
]]&lt;br /&gt;
function str._error( error_str )&lt;br /&gt;
	local frame = mw.getCurrentFrame()&lt;br /&gt;
	local error_category = frame.args.error_category or 'Errors reported by Module String'&lt;br /&gt;
	local ignore_errors = frame.args.ignore_errors or false&lt;br /&gt;
	local no_category = frame.args.no_category or false&lt;br /&gt;
&lt;br /&gt;
	if str._getBoolean(ignore_errors) then&lt;br /&gt;
		return ''&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local error_str = '&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;String Module Error: ' .. error_str .. '&amp;lt;/strong&amp;gt;'&lt;br /&gt;
	if error_category ~= '' and not str._getBoolean( no_category ) then&lt;br /&gt;
		error_str = '[[Category:' .. error_category .. ']]' .. error_str&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return error_str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Helper Function to interpret boolean strings&lt;br /&gt;
]]&lt;br /&gt;
function str._getBoolean( boolean_str )&lt;br /&gt;
	local boolean_value&lt;br /&gt;
&lt;br /&gt;
	if type( boolean_str ) == 'string' then&lt;br /&gt;
		boolean_str = boolean_str:lower()&lt;br /&gt;
		if boolean_str == 'false' or boolean_str == 'no' or boolean_str == '0'&lt;br /&gt;
				or boolean_str == '' then&lt;br /&gt;
			boolean_value = false&lt;br /&gt;
		else&lt;br /&gt;
			boolean_value = true&lt;br /&gt;
		end&lt;br /&gt;
	elseif type( boolean_str ) == 'boolean' then&lt;br /&gt;
		boolean_value = boolean_str&lt;br /&gt;
	else&lt;br /&gt;
		error( 'No boolean value found' )&lt;br /&gt;
	end&lt;br /&gt;
	return boolean_value&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Helper function that escapes all pattern characters so that they will be treated&lt;br /&gt;
as plain text.&lt;br /&gt;
]]&lt;br /&gt;
function str._escapePattern( pattern_str )&lt;br /&gt;
	return mw.ustring.gsub( pattern_str, &amp;quot;([%(%)%.%%%+%-%*%?%[%^%$%]])&amp;quot;, &amp;quot;%%%1&amp;quot; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return str&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=Module:Purge&amp;diff=1348</id>
		<title>Module:Purge</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=Module:Purge&amp;diff=1348"/>
		<updated>2019-09-06T09:28:22Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module implements [[Template:Purge]].&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local function makeUrlLink(url, display)&lt;br /&gt;
	return string.format('[%s %s]', url, display)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(args)&lt;br /&gt;
	-- Make the URL&lt;br /&gt;
	local url&lt;br /&gt;
	do&lt;br /&gt;
		local title&lt;br /&gt;
		if args.page then&lt;br /&gt;
			title = mw.title.new(args.page)&lt;br /&gt;
			if not title then&lt;br /&gt;
				error(string.format(&lt;br /&gt;
					&amp;quot;'%s' is not a valid page name&amp;quot;,&lt;br /&gt;
					args.page&lt;br /&gt;
				), 2)&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			title = mw.title.getCurrentTitle()&lt;br /&gt;
		end&lt;br /&gt;
		if args.anchor then&lt;br /&gt;
			title.fragment = args.anchor&lt;br /&gt;
		end&lt;br /&gt;
		url = title:fullUrl{action = 'purge'}&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Make the display&lt;br /&gt;
	local display&lt;br /&gt;
	if args.page then&lt;br /&gt;
		display = args[1] or 'Purge'&lt;br /&gt;
	else&lt;br /&gt;
		display = mw.html.create('span')&lt;br /&gt;
		display&lt;br /&gt;
			:attr('title', 'Purge this page')&lt;br /&gt;
			:wikitext(args[1] or 'Purge')&lt;br /&gt;
		display = tostring(display)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Output the HTML&lt;br /&gt;
	local root = mw.html.create('span')&lt;br /&gt;
	root&lt;br /&gt;
		:addClass('noprint')&lt;br /&gt;
		:addClass('plainlinks')&lt;br /&gt;
		:addClass('purgelink')&lt;br /&gt;
		:wikitext(makeUrlLink(url, display))&lt;br /&gt;
	&lt;br /&gt;
	return tostring(root)&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;
	return p._main(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=Module:Protection_banner&amp;diff=1344</id>
		<title>Module:Protection banner</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=Module:Protection_banner&amp;diff=1344"/>
		<updated>2019-09-06T09:28:21Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module implements {{pp-meta}} and its daughter templates such as&lt;br /&gt;
-- {{pp-dispute}}, {{pp-vandalism}} and {{pp-sock}}.&lt;br /&gt;
&lt;br /&gt;
-- Initialise necessary modules.&lt;br /&gt;
require('Module:No globals')&lt;br /&gt;
local makeFileLink = require('Module:File link')._main&lt;br /&gt;
local effectiveProtectionLevel = require('Module:Effective protection level')._main&lt;br /&gt;
local effectiveProtectionExpiry = require('Module:Effective protection expiry')._main&lt;br /&gt;
local yesno = require('Module:Yesno')&lt;br /&gt;
&lt;br /&gt;
-- Lazily initialise modules and objects we don't always need.&lt;br /&gt;
local getArgs, makeMessageBox, lang&lt;br /&gt;
&lt;br /&gt;
-- Set constants.&lt;br /&gt;
local CONFIG_MODULE = 'Module:Protection banner/config'&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Helper functions&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function makeCategoryLink(cat, sort)&lt;br /&gt;
	if cat then&lt;br /&gt;
		return string.format(&lt;br /&gt;
			'[[%s:%s|%s]]',&lt;br /&gt;
			mw.site.namespaces[14].name,&lt;br /&gt;
			cat,&lt;br /&gt;
			sort&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Validation function for the expiry and the protection date&lt;br /&gt;
local function validateDate(dateString, dateType)&lt;br /&gt;
	if not lang then&lt;br /&gt;
		lang = mw.language.getContentLanguage()&lt;br /&gt;
	end&lt;br /&gt;
	local success, result = pcall(lang.formatDate, lang, 'U', dateString)&lt;br /&gt;
	if success then&lt;br /&gt;
		result = tonumber(result)&lt;br /&gt;
		if result then&lt;br /&gt;
			return result&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	error(string.format(&lt;br /&gt;
		'invalid %s: %s',&lt;br /&gt;
		dateType,&lt;br /&gt;
		tostring(dateString)&lt;br /&gt;
	), 4)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeFullUrl(page, query, display)&lt;br /&gt;
	return string.format(&lt;br /&gt;
		'[%s %s]',&lt;br /&gt;
		tostring(mw.uri.fullUrl(page, query)),&lt;br /&gt;
		display&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Given a directed graph formatted as node -&amp;gt; table of direct successors,&lt;br /&gt;
-- get a table of all nodes reachable from a given node (though always&lt;br /&gt;
-- including the given node).&lt;br /&gt;
local function getReachableNodes(graph, start)&lt;br /&gt;
	local toWalk, retval = {[start] = true}, {}&lt;br /&gt;
	while true do&lt;br /&gt;
		-- Can't use pairs() since we're adding and removing things as we're iterating&lt;br /&gt;
		local k = next(toWalk) -- This always gets the &amp;quot;first&amp;quot; key&lt;br /&gt;
		if k == nil then&lt;br /&gt;
			return retval&lt;br /&gt;
		end&lt;br /&gt;
		toWalk[k] = nil&lt;br /&gt;
		retval[k] = true&lt;br /&gt;
		for _,v in ipairs(graph[k]) do&lt;br /&gt;
			if not retval[v] then&lt;br /&gt;
				toWalk[v] = 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;
-- Protection class&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local Protection = {}&lt;br /&gt;
Protection.__index = Protection&lt;br /&gt;
&lt;br /&gt;
Protection.supportedActions = {&lt;br /&gt;
	edit = true,&lt;br /&gt;
	move = true,&lt;br /&gt;
	autoreview = true,&lt;br /&gt;
	upload = true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Protection.bannerConfigFields = {&lt;br /&gt;
	'text',&lt;br /&gt;
	'explanation',&lt;br /&gt;
	'tooltip',&lt;br /&gt;
	'alt',&lt;br /&gt;
	'link',&lt;br /&gt;
	'image'&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function Protection.new(args, cfg, title)&lt;br /&gt;
	local obj = {}&lt;br /&gt;
	obj._cfg = cfg&lt;br /&gt;
	obj.title = title or mw.title.getCurrentTitle()&lt;br /&gt;
&lt;br /&gt;
	-- Set action&lt;br /&gt;
	if not args.action then&lt;br /&gt;
		obj.action = 'edit'&lt;br /&gt;
	elseif Protection.supportedActions[args.action] then&lt;br /&gt;
		obj.action = args.action&lt;br /&gt;
	else&lt;br /&gt;
		error(string.format(&lt;br /&gt;
			'invalid action: %s',&lt;br /&gt;
			tostring(args.action)&lt;br /&gt;
		), 3)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set level&lt;br /&gt;
	obj.level = args.demolevel or effectiveProtectionLevel(obj.action, obj.title)&lt;br /&gt;
	if not obj.level or (obj.action == 'move' and obj.level == 'autoconfirmed') then&lt;br /&gt;
		-- Users need to be autoconfirmed to move pages anyway, so treat&lt;br /&gt;
		-- semi-move-protected pages as unprotected.&lt;br /&gt;
		obj.level = '*'&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set expiry&lt;br /&gt;
	local effectiveExpiry = effectiveProtectionExpiry(obj.action, obj.title)&lt;br /&gt;
	if effectiveExpiry == 'infinity' then&lt;br /&gt;
		obj.expiry = 'indef'&lt;br /&gt;
	elseif effectiveExpiry ~= 'unknown' then&lt;br /&gt;
		obj.expiry = validateDate(effectiveExpiry, 'expiry date')&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set reason&lt;br /&gt;
	if args[1] then&lt;br /&gt;
		obj.reason = mw.ustring.lower(args[1])&lt;br /&gt;
		if obj.reason:find('|') then&lt;br /&gt;
			error('reasons cannot contain the pipe character (&amp;quot;|&amp;quot;)', 3)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set protection date&lt;br /&gt;
	if args.date then&lt;br /&gt;
		obj.protectionDate = validateDate(args.date, 'protection date')&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Set banner config&lt;br /&gt;
	do&lt;br /&gt;
		obj.bannerConfig = {}&lt;br /&gt;
		local configTables = {}&lt;br /&gt;
		if cfg.banners[obj.action] then&lt;br /&gt;
			configTables[#configTables + 1] = cfg.banners[obj.action][obj.reason]&lt;br /&gt;
		end&lt;br /&gt;
		if cfg.defaultBanners[obj.action] then&lt;br /&gt;
			configTables[#configTables + 1] = cfg.defaultBanners[obj.action][obj.level]&lt;br /&gt;
			configTables[#configTables + 1] = cfg.defaultBanners[obj.action].default&lt;br /&gt;
		end&lt;br /&gt;
		configTables[#configTables + 1] = cfg.masterBanner&lt;br /&gt;
		for i, field in ipairs(Protection.bannerConfigFields) do&lt;br /&gt;
			for j, t in ipairs(configTables) do&lt;br /&gt;
				if t[field] then&lt;br /&gt;
					obj.bannerConfig[field] = t[field]&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return setmetatable(obj, Protection)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Protection:isProtected()&lt;br /&gt;
	return self.level ~= '*'&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Protection:isTemporary()&lt;br /&gt;
	return type(self.expiry) == 'number'&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Protection:makeProtectionCategory()&lt;br /&gt;
	local cfg = self._cfg&lt;br /&gt;
	local title = self.title&lt;br /&gt;
	&lt;br /&gt;
	-- Exit if the page is not protected.&lt;br /&gt;
	if not self:isProtected() then&lt;br /&gt;
		return ''&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Get the expiry key fragment.&lt;br /&gt;
	local expiryFragment&lt;br /&gt;
	if self.expiry == 'indef' then&lt;br /&gt;
		expiryFragment = self.expiry&lt;br /&gt;
	elseif type(self.expiry) == 'number' then&lt;br /&gt;
		expiryFragment = 'temp'&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Get the namespace key fragment.&lt;br /&gt;
	local namespaceFragment = cfg.categoryNamespaceKeys[title.namespace]&lt;br /&gt;
	if not namespaceFragment and title.namespace % 2 == 1 then&lt;br /&gt;
			namespaceFragment = 'talk'&lt;br /&gt;
	end&lt;br /&gt;
 &lt;br /&gt;
	-- Define the order that key fragments are tested in. This is done with an&lt;br /&gt;
	-- array of tables containing the value to be tested, along with its&lt;br /&gt;
	-- position in the cfg.protectionCategories table.&lt;br /&gt;
	local order = {&lt;br /&gt;
		{val = expiryFragment,    keypos = 1},&lt;br /&gt;
		{val = namespaceFragment, keypos = 2},&lt;br /&gt;
		{val = self.reason,       keypos = 3},&lt;br /&gt;
		{val = self.level,        keypos = 4},&lt;br /&gt;
		{val = self.action,       keypos = 5}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- The old protection templates used an ad-hoc protection category system,&lt;br /&gt;
	-- with some templates prioritising namespaces in their categories, and&lt;br /&gt;
	-- others prioritising the protection reason. To emulate this in this module&lt;br /&gt;
	-- we use the config table cfg.reasonsWithNamespacePriority to set the&lt;br /&gt;
	-- reasons for which namespaces have priority over protection reason.&lt;br /&gt;
	-- If we are dealing with one of those reasons, move the namespace table to&lt;br /&gt;
	-- the end of the order table, i.e. give it highest priority. If not, the&lt;br /&gt;
	-- reason should have highest priority, so move that to the end of the table&lt;br /&gt;
	-- instead.&lt;br /&gt;
	--]]&lt;br /&gt;
	table.insert(order, table.remove(order, self.reason and cfg.reasonsWithNamespacePriority[self.reason] and 2 or 3))&lt;br /&gt;
 &lt;br /&gt;
	--[[&lt;br /&gt;
	-- Define the attempt order. Inactive subtables (subtables with nil &amp;quot;value&amp;quot;&lt;br /&gt;
	-- fields) are moved to the end, where they will later be given the key&lt;br /&gt;
	-- &amp;quot;all&amp;quot;. This is to cut down on the number of table lookups in&lt;br /&gt;
	-- cfg.protectionCategories, which grows exponentially with the number of&lt;br /&gt;
	-- non-nil keys. We keep track of the number of active subtables with the&lt;br /&gt;
	-- noActive parameter.&lt;br /&gt;
	--]]&lt;br /&gt;
	local noActive, attemptOrder&lt;br /&gt;
	do&lt;br /&gt;
		local active, inactive = {}, {}&lt;br /&gt;
		for i, t in ipairs(order) do&lt;br /&gt;
			if t.val then&lt;br /&gt;
				active[#active + 1] = t&lt;br /&gt;
			else&lt;br /&gt;
				inactive[#inactive + 1] = t&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		noActive = #active&lt;br /&gt;
		attemptOrder = active&lt;br /&gt;
		for i, t in ipairs(inactive) do&lt;br /&gt;
			attemptOrder[#attemptOrder + 1] = t&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
 &lt;br /&gt;
	--[[&lt;br /&gt;
	-- Check increasingly generic key combinations until we find a match. If a&lt;br /&gt;
	-- specific category exists for the combination of key fragments we are&lt;br /&gt;
	-- given, that match will be found first. If not, we keep trying different&lt;br /&gt;
	-- key fragment combinations until we match using the key&lt;br /&gt;
	-- &amp;quot;all-all-all-all-all&amp;quot;.&lt;br /&gt;
	--&lt;br /&gt;
	-- To generate the keys, we index the key subtables using a binary matrix&lt;br /&gt;
	-- with indexes i and j. j is only calculated up to the number of active&lt;br /&gt;
	-- subtables. For example, if there were three active subtables, the matrix&lt;br /&gt;
	-- would look like this, with 0 corresponding to the key fragment &amp;quot;all&amp;quot;, and&lt;br /&gt;
	-- 1 corresponding to other key fragments.&lt;br /&gt;
	-- &lt;br /&gt;
	--   j 1  2  3&lt;br /&gt;
	-- i  &lt;br /&gt;
	-- 1   1  1  1&lt;br /&gt;
	-- 2   0  1  1&lt;br /&gt;
	-- 3   1  0  1&lt;br /&gt;
	-- 4   0  0  1&lt;br /&gt;
	-- 5   1  1  0&lt;br /&gt;
	-- 6   0  1  0&lt;br /&gt;
	-- 7   1  0  0&lt;br /&gt;
	-- 8   0  0  0&lt;br /&gt;
	-- &lt;br /&gt;
	-- Values of j higher than the number of active subtables are set&lt;br /&gt;
	-- to the string &amp;quot;all&amp;quot;.&lt;br /&gt;
	--&lt;br /&gt;
	-- A key for cfg.protectionCategories is constructed for each value of i.&lt;br /&gt;
	-- The position of the value in the key is determined by the keypos field in&lt;br /&gt;
	-- each subtable.&lt;br /&gt;
	--]]&lt;br /&gt;
	local cats = cfg.protectionCategories&lt;br /&gt;
	for i = 1, 2^noActive do&lt;br /&gt;
		local key = {}&lt;br /&gt;
		for j, t in ipairs(attemptOrder) do&lt;br /&gt;
			if j &amp;gt; noActive then&lt;br /&gt;
				key[t.keypos] = 'all'&lt;br /&gt;
			else&lt;br /&gt;
				local quotient = i / 2 ^ (j - 1)&lt;br /&gt;
				quotient = math.ceil(quotient)&lt;br /&gt;
				if quotient % 2 == 1 then&lt;br /&gt;
					key[t.keypos] = t.val&lt;br /&gt;
				else&lt;br /&gt;
					key[t.keypos] = 'all'&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		key = table.concat(key, '|')&lt;br /&gt;
		local attempt = cats[key]&lt;br /&gt;
		if attempt then&lt;br /&gt;
			return makeCategoryLink(attempt, title.text)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return ''&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Protection:isIncorrect()&lt;br /&gt;
	local expiry = self.expiry&lt;br /&gt;
	return not self:isProtected()&lt;br /&gt;
		or type(expiry) == 'number' and expiry &amp;lt; os.time()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Protection:isTemplateProtectedNonTemplate()&lt;br /&gt;
	local action, namespace = self.action, self.title.namespace&lt;br /&gt;
	return self.level == 'templateeditor'&lt;br /&gt;
		and (&lt;br /&gt;
			(action ~= 'edit' and action ~= 'move')&lt;br /&gt;
			or (namespace ~= 10 and namespace ~= 828)&lt;br /&gt;
		)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Protection:makeCategoryLinks()&lt;br /&gt;
	local msg = self._cfg.msg&lt;br /&gt;
	local ret = { self:makeProtectionCategory() }&lt;br /&gt;
	if self:isIncorrect() then&lt;br /&gt;
		ret[#ret + 1] = makeCategoryLink(&lt;br /&gt;
			msg['tracking-category-incorrect'],&lt;br /&gt;
			self.title.text&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	if self:isTemplateProtectedNonTemplate() then&lt;br /&gt;
		ret[#ret + 1] = makeCategoryLink(&lt;br /&gt;
			msg['tracking-category-template'],&lt;br /&gt;
			self.title.text&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(ret)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Blurb class&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local Blurb = {}&lt;br /&gt;
Blurb.__index = Blurb&lt;br /&gt;
&lt;br /&gt;
Blurb.bannerTextFields = {&lt;br /&gt;
	text = true,&lt;br /&gt;
	explanation = true,&lt;br /&gt;
	tooltip = true,&lt;br /&gt;
	alt = true,&lt;br /&gt;
	link = true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function Blurb.new(protectionObj, args, cfg)&lt;br /&gt;
	return setmetatable({&lt;br /&gt;
		_cfg = cfg,&lt;br /&gt;
		_protectionObj = protectionObj,&lt;br /&gt;
		_args = args&lt;br /&gt;
	}, Blurb)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Private methods --&lt;br /&gt;
&lt;br /&gt;
function Blurb:_formatDate(num)&lt;br /&gt;
	-- Formats a Unix timestamp into dd Month, YYYY format.&lt;br /&gt;
	lang = lang or mw.language.getContentLanguage()&lt;br /&gt;
	local success, date = pcall(&lt;br /&gt;
		lang.formatDate,&lt;br /&gt;
		lang,&lt;br /&gt;
		self._cfg.msg['expiry-date-format'] or 'j F Y',&lt;br /&gt;
		'@' .. tostring(num)&lt;br /&gt;
	)&lt;br /&gt;
	if success then&lt;br /&gt;
		return date&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_getExpandedMessage(msgKey)&lt;br /&gt;
	return self:_substituteParameters(self._cfg.msg[msgKey])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_substituteParameters(msg)&lt;br /&gt;
	if not self._params then&lt;br /&gt;
		local parameterFuncs = {}&lt;br /&gt;
&lt;br /&gt;
		parameterFuncs.CURRENTVERSION     = self._makeCurrentVersionParameter&lt;br /&gt;
		parameterFuncs.EDITREQUEST        = self._makeEditRequestParameter&lt;br /&gt;
		parameterFuncs.EXPIRY             = self._makeExpiryParameter&lt;br /&gt;
		parameterFuncs.EXPLANATIONBLURB   = self._makeExplanationBlurbParameter&lt;br /&gt;
		parameterFuncs.IMAGELINK          = self._makeImageLinkParameter&lt;br /&gt;
		parameterFuncs.INTROBLURB         = self._makeIntroBlurbParameter&lt;br /&gt;
		parameterFuncs.INTROFRAGMENT      = self._makeIntroFragmentParameter&lt;br /&gt;
		parameterFuncs.PAGETYPE           = self._makePagetypeParameter&lt;br /&gt;
		parameterFuncs.PROTECTIONBLURB    = self._makeProtectionBlurbParameter&lt;br /&gt;
		parameterFuncs.PROTECTIONDATE     = self._makeProtectionDateParameter&lt;br /&gt;
		parameterFuncs.PROTECTIONLEVEL    = self._makeProtectionLevelParameter&lt;br /&gt;
		parameterFuncs.PROTECTIONLOG      = self._makeProtectionLogParameter&lt;br /&gt;
		parameterFuncs.TALKPAGE           = self._makeTalkPageParameter&lt;br /&gt;
		parameterFuncs.TOOLTIPBLURB       = self._makeTooltipBlurbParameter&lt;br /&gt;
		parameterFuncs.TOOLTIPFRAGMENT    = self._makeTooltipFragmentParameter&lt;br /&gt;
		parameterFuncs.VANDAL             = self._makeVandalTemplateParameter&lt;br /&gt;
		&lt;br /&gt;
		self._params = setmetatable({}, {&lt;br /&gt;
			__index = function (t, k)&lt;br /&gt;
				local param&lt;br /&gt;
				if parameterFuncs[k] then&lt;br /&gt;
					param = parameterFuncs[k](self)&lt;br /&gt;
				end&lt;br /&gt;
				param = param or ''&lt;br /&gt;
				t[k] = param&lt;br /&gt;
				return param&lt;br /&gt;
			end&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	msg = msg:gsub('${(%u+)}', self._params)&lt;br /&gt;
	return msg&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeCurrentVersionParameter()&lt;br /&gt;
	-- A link to the page history or the move log, depending on the kind of&lt;br /&gt;
	-- protection.&lt;br /&gt;
	local pagename = self._protectionObj.title.prefixedText&lt;br /&gt;
	if self._protectionObj.action == 'move' then&lt;br /&gt;
		-- We need the move log link.&lt;br /&gt;
		return makeFullUrl(&lt;br /&gt;
			'Special:Log',&lt;br /&gt;
			{type = 'move', page = pagename},&lt;br /&gt;
			self:_getExpandedMessage('current-version-move-display')&lt;br /&gt;
		)&lt;br /&gt;
	else&lt;br /&gt;
		-- We need the history link.&lt;br /&gt;
		return makeFullUrl(&lt;br /&gt;
			pagename,&lt;br /&gt;
			{action = 'history'},&lt;br /&gt;
			self:_getExpandedMessage('current-version-edit-display')&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeEditRequestParameter()&lt;br /&gt;
	local mEditRequest = require('Module:Submit an edit request')&lt;br /&gt;
	local action = self._protectionObj.action&lt;br /&gt;
	local level = self._protectionObj.level&lt;br /&gt;
	&lt;br /&gt;
	-- Get the edit request type.&lt;br /&gt;
	local requestType&lt;br /&gt;
	if action == 'edit' then&lt;br /&gt;
		if level == 'autoconfirmed' then&lt;br /&gt;
			requestType = 'semi'&lt;br /&gt;
		elseif level == 'extendedconfirmed' then&lt;br /&gt;
			requestType = 'extended'&lt;br /&gt;
		elseif level == 'templateeditor' then&lt;br /&gt;
			requestType = 'template'&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	requestType = requestType or 'full'&lt;br /&gt;
	&lt;br /&gt;
	-- Get the display value.&lt;br /&gt;
	local display = self:_getExpandedMessage('edit-request-display')&lt;br /&gt;
&lt;br /&gt;
	return mEditRequest._link{type = requestType, display = display}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeExpiryParameter()&lt;br /&gt;
	local expiry = self._protectionObj.expiry&lt;br /&gt;
	if type(expiry) == 'number' then&lt;br /&gt;
		return self:_formatDate(expiry)&lt;br /&gt;
	else&lt;br /&gt;
		return expiry&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeExplanationBlurbParameter()&lt;br /&gt;
	-- Cover special cases first.&lt;br /&gt;
	if self._protectionObj.title.namespace == 8 then&lt;br /&gt;
		-- MediaWiki namespace&lt;br /&gt;
		return self:_getExpandedMessage('explanation-blurb-nounprotect')&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Get explanation blurb table keys&lt;br /&gt;
	local action = self._protectionObj.action&lt;br /&gt;
	local level = self._protectionObj.level&lt;br /&gt;
	local talkKey = self._protectionObj.title.isTalkPage and 'talk' or 'subject'&lt;br /&gt;
&lt;br /&gt;
	-- Find the message in the explanation blurb table and substitute any&lt;br /&gt;
	-- parameters.&lt;br /&gt;
	local explanations = self._cfg.explanationBlurbs&lt;br /&gt;
	local msg&lt;br /&gt;
	if explanations[action][level] and explanations[action][level][talkKey] then&lt;br /&gt;
		msg = explanations[action][level][talkKey]&lt;br /&gt;
	elseif explanations[action][level] and explanations[action][level].default then&lt;br /&gt;
		msg = explanations[action][level].default&lt;br /&gt;
	elseif explanations[action].default and explanations[action].default[talkKey] then&lt;br /&gt;
		msg = explanations[action].default[talkKey]&lt;br /&gt;
	elseif explanations[action].default and explanations[action].default.default then&lt;br /&gt;
		msg = explanations[action].default.default&lt;br /&gt;
	else&lt;br /&gt;
		error(string.format(&lt;br /&gt;
			'could not find explanation blurb for action &amp;quot;%s&amp;quot;, level &amp;quot;%s&amp;quot; and talk key &amp;quot;%s&amp;quot;',&lt;br /&gt;
			action,&lt;br /&gt;
			level,&lt;br /&gt;
			talkKey&lt;br /&gt;
		), 8)&lt;br /&gt;
	end&lt;br /&gt;
	return self:_substituteParameters(msg)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeImageLinkParameter()&lt;br /&gt;
	local imageLinks = self._cfg.imageLinks&lt;br /&gt;
	local action = self._protectionObj.action&lt;br /&gt;
	local level = self._protectionObj.level&lt;br /&gt;
	local msg&lt;br /&gt;
	if imageLinks[action][level] then&lt;br /&gt;
		msg = imageLinks[action][level]&lt;br /&gt;
	elseif imageLinks[action].default then&lt;br /&gt;
		msg = imageLinks[action].default&lt;br /&gt;
	else&lt;br /&gt;
		msg = imageLinks.edit.default&lt;br /&gt;
	end&lt;br /&gt;
	return self:_substituteParameters(msg)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeIntroBlurbParameter()&lt;br /&gt;
	if self._protectionObj:isTemporary() then&lt;br /&gt;
		return self:_getExpandedMessage('intro-blurb-expiry')&lt;br /&gt;
	else&lt;br /&gt;
		return self:_getExpandedMessage('intro-blurb-noexpiry')&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeIntroFragmentParameter()&lt;br /&gt;
	if self._protectionObj:isTemporary() then&lt;br /&gt;
		return self:_getExpandedMessage('intro-fragment-expiry')&lt;br /&gt;
	else&lt;br /&gt;
		return self:_getExpandedMessage('intro-fragment-noexpiry')&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makePagetypeParameter()&lt;br /&gt;
	local pagetypes = self._cfg.pagetypes&lt;br /&gt;
	return pagetypes[self._protectionObj.title.namespace]&lt;br /&gt;
		or pagetypes.default&lt;br /&gt;
		or error('no default pagetype defined', 8)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeProtectionBlurbParameter()&lt;br /&gt;
	local protectionBlurbs = self._cfg.protectionBlurbs&lt;br /&gt;
	local action = self._protectionObj.action&lt;br /&gt;
	local level = self._protectionObj.level&lt;br /&gt;
	local msg&lt;br /&gt;
	if protectionBlurbs[action][level] then&lt;br /&gt;
		msg = protectionBlurbs[action][level]&lt;br /&gt;
	elseif protectionBlurbs[action].default then&lt;br /&gt;
		msg = protectionBlurbs[action].default&lt;br /&gt;
	elseif protectionBlurbs.edit.default then&lt;br /&gt;
		msg = protectionBlurbs.edit.default&lt;br /&gt;
	else&lt;br /&gt;
		error('no protection blurb defined for protectionBlurbs.edit.default', 8)&lt;br /&gt;
	end&lt;br /&gt;
	return self:_substituteParameters(msg)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeProtectionDateParameter()&lt;br /&gt;
	local protectionDate = self._protectionObj.protectionDate&lt;br /&gt;
	if type(protectionDate) == 'number' then&lt;br /&gt;
		return self:_formatDate(protectionDate)&lt;br /&gt;
	else&lt;br /&gt;
		return protectionDate&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeProtectionLevelParameter()&lt;br /&gt;
	local protectionLevels = self._cfg.protectionLevels&lt;br /&gt;
	local action = self._protectionObj.action&lt;br /&gt;
	local level = self._protectionObj.level&lt;br /&gt;
	local msg&lt;br /&gt;
	if protectionLevels[action][level] then&lt;br /&gt;
		msg = protectionLevels[action][level]&lt;br /&gt;
	elseif protectionLevels[action].default then&lt;br /&gt;
		msg = protectionLevels[action].default&lt;br /&gt;
	elseif protectionLevels.edit.default then&lt;br /&gt;
		msg = protectionLevels.edit.default&lt;br /&gt;
	else&lt;br /&gt;
		error('no protection level defined for protectionLevels.edit.default', 8)&lt;br /&gt;
	end&lt;br /&gt;
	return self:_substituteParameters(msg)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeProtectionLogParameter()&lt;br /&gt;
	local pagename = self._protectionObj.title.prefixedText&lt;br /&gt;
	if self._protectionObj.action == 'autoreview' then&lt;br /&gt;
		-- We need the pending changes log.&lt;br /&gt;
		return makeFullUrl(&lt;br /&gt;
			'Special:Log',&lt;br /&gt;
			{type = 'stable', page = pagename},&lt;br /&gt;
			self:_getExpandedMessage('pc-log-display')&lt;br /&gt;
		)&lt;br /&gt;
	else&lt;br /&gt;
		-- We need the protection log.&lt;br /&gt;
		return makeFullUrl(&lt;br /&gt;
			'Special:Log',&lt;br /&gt;
			{type = 'protect', page = pagename},&lt;br /&gt;
			self:_getExpandedMessage('protection-log-display')&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeTalkPageParameter()&lt;br /&gt;
	return string.format(&lt;br /&gt;
		'[[%s:%s#%s|%s]]',&lt;br /&gt;
		mw.site.namespaces[self._protectionObj.title.namespace].talk.name,&lt;br /&gt;
		self._protectionObj.title.text,&lt;br /&gt;
		self._args.section or 'top',&lt;br /&gt;
		self:_getExpandedMessage('talk-page-link-display')&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeTooltipBlurbParameter()&lt;br /&gt;
	if self._protectionObj:isTemporary() then&lt;br /&gt;
		return self:_getExpandedMessage('tooltip-blurb-expiry')&lt;br /&gt;
	else&lt;br /&gt;
		return self:_getExpandedMessage('tooltip-blurb-noexpiry')&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeTooltipFragmentParameter()&lt;br /&gt;
	if self._protectionObj:isTemporary() then&lt;br /&gt;
		return self:_getExpandedMessage('tooltip-fragment-expiry')&lt;br /&gt;
	else&lt;br /&gt;
		return self:_getExpandedMessage('tooltip-fragment-noexpiry')&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeVandalTemplateParameter()&lt;br /&gt;
	return require('Module:Vandal-m')._main{&lt;br /&gt;
		self._args.user or self._protectionObj.title.baseText&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Public methods --&lt;br /&gt;
&lt;br /&gt;
function Blurb:makeBannerText(key)&lt;br /&gt;
	-- Validate input.&lt;br /&gt;
	if not key or not Blurb.bannerTextFields[key] then&lt;br /&gt;
		error(string.format(&lt;br /&gt;
			'&amp;quot;%s&amp;quot; is not a valid banner config field',&lt;br /&gt;
			tostring(key)&lt;br /&gt;
		), 2)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Generate the text.&lt;br /&gt;
	local msg = self._protectionObj.bannerConfig[key]&lt;br /&gt;
	if type(msg) == 'string' then&lt;br /&gt;
		return self:_substituteParameters(msg)&lt;br /&gt;
	elseif type(msg) == 'function' then&lt;br /&gt;
		msg = msg(self._protectionObj, self._args)&lt;br /&gt;
		if type(msg) ~= 'string' then&lt;br /&gt;
			error(string.format(&lt;br /&gt;
				'bad output from banner config function with key &amp;quot;%s&amp;quot;'&lt;br /&gt;
					.. ' (expected string, got %s)',&lt;br /&gt;
				tostring(key),&lt;br /&gt;
				type(msg)&lt;br /&gt;
			), 4)&lt;br /&gt;
		end&lt;br /&gt;
		return self:_substituteParameters(msg)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- BannerTemplate class&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local BannerTemplate = {}&lt;br /&gt;
BannerTemplate.__index = BannerTemplate&lt;br /&gt;
&lt;br /&gt;
function BannerTemplate.new(protectionObj, cfg)&lt;br /&gt;
	local obj = {}&lt;br /&gt;
	obj._cfg = cfg&lt;br /&gt;
&lt;br /&gt;
	-- Set the image filename.&lt;br /&gt;
	local imageFilename = protectionObj.bannerConfig.image&lt;br /&gt;
	if imageFilename then&lt;br /&gt;
		obj._imageFilename = imageFilename&lt;br /&gt;
	else&lt;br /&gt;
		-- If an image filename isn't specified explicitly in the banner config,&lt;br /&gt;
		-- generate it from the protection status and the namespace.&lt;br /&gt;
		local action = protectionObj.action&lt;br /&gt;
		local level = protectionObj.level&lt;br /&gt;
		local namespace = protectionObj.title.namespace&lt;br /&gt;
		local reason = protectionObj.reason&lt;br /&gt;
		&lt;br /&gt;
		-- Deal with special cases first.&lt;br /&gt;
		if (&lt;br /&gt;
			namespace == 10&lt;br /&gt;
			or namespace == 828&lt;br /&gt;
			or reason and obj._cfg.indefImageReasons[reason]&lt;br /&gt;
			)&lt;br /&gt;
			and action == 'edit'&lt;br /&gt;
			and level == 'sysop'&lt;br /&gt;
			and not protectionObj:isTemporary()&lt;br /&gt;
		then&lt;br /&gt;
			-- Fully protected modules and templates get the special red &amp;quot;indef&amp;quot;&lt;br /&gt;
			-- padlock.&lt;br /&gt;
			obj._imageFilename = obj._cfg.msg['image-filename-indef']&lt;br /&gt;
		else&lt;br /&gt;
			-- Deal with regular protection types.&lt;br /&gt;
			local images = obj._cfg.images&lt;br /&gt;
			if images[action] then&lt;br /&gt;
				if images[action][level] then&lt;br /&gt;
					obj._imageFilename = images[action][level]&lt;br /&gt;
				elseif images[action].default then&lt;br /&gt;
					obj._imageFilename = images[action].default&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return setmetatable(obj, BannerTemplate)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function BannerTemplate:renderImage()&lt;br /&gt;
	local filename = self._imageFilename&lt;br /&gt;
		or self._cfg.msg['image-filename-default']&lt;br /&gt;
		or 'Transparent.gif'&lt;br /&gt;
	return makeFileLink{&lt;br /&gt;
		file = filename,&lt;br /&gt;
		size = (self.imageWidth or 20) .. 'px',&lt;br /&gt;
		alt = self._imageAlt,&lt;br /&gt;
		link = self._imageLink,&lt;br /&gt;
		caption = self.imageCaption&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Banner class&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local Banner = setmetatable({}, BannerTemplate)&lt;br /&gt;
Banner.__index = Banner&lt;br /&gt;
&lt;br /&gt;
function Banner.new(protectionObj, blurbObj, cfg)&lt;br /&gt;
	local obj = BannerTemplate.new(protectionObj, cfg) -- This doesn't need the blurb.&lt;br /&gt;
	obj.imageWidth = 40&lt;br /&gt;
	obj.imageCaption = blurbObj:makeBannerText('alt') -- Large banners use the alt text for the tooltip.&lt;br /&gt;
	obj._reasonText = blurbObj:makeBannerText('text')&lt;br /&gt;
	obj._explanationText = blurbObj:makeBannerText('explanation')&lt;br /&gt;
	obj._page = protectionObj.title.prefixedText -- Only makes a difference in testing.&lt;br /&gt;
	return setmetatable(obj, Banner)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Banner:__tostring()&lt;br /&gt;
	-- Renders the banner.&lt;br /&gt;
	makeMessageBox = makeMessageBox or require('Module:Message box').main&lt;br /&gt;
	local reasonText = self._reasonText or error('no reason text set', 2)&lt;br /&gt;
	local explanationText = self._explanationText&lt;br /&gt;
	local mbargs = {&lt;br /&gt;
		page = self._page,&lt;br /&gt;
		type = 'protection',&lt;br /&gt;
		image = self:renderImage(),&lt;br /&gt;
		text = string.format(&lt;br /&gt;
			&amp;quot;'''%s'''%s&amp;quot;,&lt;br /&gt;
			reasonText,&lt;br /&gt;
			explanationText and '&amp;lt;br /&amp;gt;' .. explanationText or ''&lt;br /&gt;
		)&lt;br /&gt;
	}&lt;br /&gt;
	return makeMessageBox('mbox', mbargs)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Padlock class&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local Padlock = setmetatable({}, BannerTemplate)&lt;br /&gt;
Padlock.__index = Padlock&lt;br /&gt;
&lt;br /&gt;
function Padlock.new(protectionObj, blurbObj, cfg)&lt;br /&gt;
	local obj = BannerTemplate.new(protectionObj, cfg) -- This doesn't need the blurb.&lt;br /&gt;
	obj.imageWidth = 20&lt;br /&gt;
	obj.imageCaption = blurbObj:makeBannerText('tooltip')&lt;br /&gt;
	obj._imageAlt = blurbObj:makeBannerText('alt')&lt;br /&gt;
	obj._imageLink = blurbObj:makeBannerText('link')&lt;br /&gt;
	obj._indicatorName = cfg.padlockIndicatorNames[protectionObj.action]&lt;br /&gt;
		or cfg.padlockIndicatorNames.default&lt;br /&gt;
		or 'pp-default'&lt;br /&gt;
	return setmetatable(obj, Padlock)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Padlock:__tostring()&lt;br /&gt;
	local frame = mw.getCurrentFrame()&lt;br /&gt;
	-- The nowiki tag helps prevent whitespace at the top of articles.&lt;br /&gt;
	return frame:extensionTag{name = 'nowiki'} .. frame:extensionTag{&lt;br /&gt;
		name = 'indicator',&lt;br /&gt;
		args = {name = self._indicatorName},&lt;br /&gt;
		content = self:renderImage()&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Exports&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p._exportClasses()&lt;br /&gt;
	-- This is used for testing purposes.&lt;br /&gt;
	return {&lt;br /&gt;
		Protection = Protection,&lt;br /&gt;
		Blurb = Blurb,&lt;br /&gt;
		BannerTemplate = BannerTemplate,&lt;br /&gt;
		Banner = Banner,&lt;br /&gt;
		Padlock = Padlock,&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(args, cfg, title)&lt;br /&gt;
	args = args or {}&lt;br /&gt;
	cfg = cfg or require(CONFIG_MODULE)&lt;br /&gt;
&lt;br /&gt;
	local protectionObj = Protection.new(args, cfg, title)&lt;br /&gt;
&lt;br /&gt;
	local ret = {}&lt;br /&gt;
&lt;br /&gt;
	-- If a page's edit protection is equally or more restrictive than its&lt;br /&gt;
	-- protection from some other action, then don't bother displaying anything&lt;br /&gt;
	-- for the other action (except categories).&lt;br /&gt;
	if protectionObj.action == 'edit' or&lt;br /&gt;
		args.demolevel or&lt;br /&gt;
		not getReachableNodes(&lt;br /&gt;
			cfg.hierarchy,&lt;br /&gt;
			protectionObj.level&lt;br /&gt;
		)[effectiveProtectionLevel('edit', protectionObj.title)]&lt;br /&gt;
	then&lt;br /&gt;
		-- Initialise the blurb object&lt;br /&gt;
		local blurbObj = Blurb.new(protectionObj, args, cfg)&lt;br /&gt;
	&lt;br /&gt;
		-- Render the banner&lt;br /&gt;
		if protectionObj:isProtected() then&lt;br /&gt;
			ret[#ret + 1] = tostring(&lt;br /&gt;
				(yesno(args.small) and Padlock or Banner)&lt;br /&gt;
				.new(protectionObj, blurbObj, cfg)&lt;br /&gt;
			)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Render the categories&lt;br /&gt;
	if yesno(args.category) ~= false then&lt;br /&gt;
		ret[#ret + 1] = protectionObj:makeCategoryLinks()&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(ret)	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame, cfg)&lt;br /&gt;
	cfg = cfg or require(CONFIG_MODULE)&lt;br /&gt;
&lt;br /&gt;
	-- Find default args, if any.&lt;br /&gt;
	local parent = frame.getParent and frame:getParent()&lt;br /&gt;
	local defaultArgs = parent and cfg.wrappers[parent:getTitle():gsub('/sandbox$', '')]&lt;br /&gt;
&lt;br /&gt;
	-- Find user args, and use the parent frame if we are being called from a&lt;br /&gt;
	-- wrapper template.&lt;br /&gt;
	getArgs = getArgs or require('Module:Arguments').getArgs&lt;br /&gt;
	local userArgs = getArgs(frame, {&lt;br /&gt;
		parentOnly = defaultArgs,&lt;br /&gt;
		frameOnly = not defaultArgs&lt;br /&gt;
	})&lt;br /&gt;
&lt;br /&gt;
	-- Build the args table. User-specified args overwrite default args.&lt;br /&gt;
	local args = {}&lt;br /&gt;
	for k, v in pairs(defaultArgs or {}) do&lt;br /&gt;
		args[k] = v&lt;br /&gt;
	end&lt;br /&gt;
	for k, v in pairs(userArgs) do&lt;br /&gt;
		args[k] = v&lt;br /&gt;
	end&lt;br /&gt;
	return p._main(args, cfg)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=Module:Protection_banner/config&amp;diff=1346</id>
		<title>Module:Protection banner/config</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=Module:Protection_banner/config&amp;diff=1346"/>
		<updated>2019-09-06T09:28:21Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module provides configuration data for [[Module:Protection banner]].&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
--&lt;br /&gt;
--                                BANNER DATA&lt;br /&gt;
--&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- Banner data consists of six fields:&lt;br /&gt;
-- * text - the main protection text that appears at the top of protection&lt;br /&gt;
--   banners.&lt;br /&gt;
-- * explanation - the text that appears below the main protection text, used&lt;br /&gt;
--   to explain the details of the protection.&lt;br /&gt;
-- * tooltip - the tooltip text you see when you move the mouse over a small&lt;br /&gt;
--   padlock icon.&lt;br /&gt;
-- * link - the page that the small padlock icon links to.&lt;br /&gt;
-- * alt - the alt text for the small padlock icon. This is also used as tooltip&lt;br /&gt;
--   text for the large protection banners.&lt;br /&gt;
-- * image - the padlock image used in both protection banners and small padlock&lt;br /&gt;
--   icons.&lt;br /&gt;
--&lt;br /&gt;
-- The module checks in three separate tables to find a value for each field.&lt;br /&gt;
-- First it checks the banners table, which has values specific to the reason&lt;br /&gt;
-- for the page being protected. Then the module checks the defaultBanners&lt;br /&gt;
-- table, which has values specific to each protection level. Finally, the&lt;br /&gt;
-- module checks the masterBanner table, which holds data for protection&lt;br /&gt;
-- templates to use if no data has been found in the previous two tables.&lt;br /&gt;
--&lt;br /&gt;
-- The values in the banner data can take parameters. These are specified&lt;br /&gt;
-- using ${TEXTLIKETHIS} (a dollar sign preceding a parameter name&lt;br /&gt;
-- enclosed in curly braces).&lt;br /&gt;
--&lt;br /&gt;
--                          Available parameters:&lt;br /&gt;
--&lt;br /&gt;
-- ${CURRENTVERSION} - a link to the page history or the move log, with the&lt;br /&gt;
-- display message &amp;quot;current-version-edit-display&amp;quot; or&lt;br /&gt;
-- &amp;quot;current-version-move-display&amp;quot;.&lt;br /&gt;
--&lt;br /&gt;
-- ${EDITREQUEST} - a link to create an edit request for the current page.&lt;br /&gt;
--&lt;br /&gt;
-- ${EXPLANATIONBLURB} - an explanation blurb, e.g. &amp;quot;Please discuss any changes&lt;br /&gt;
-- on the talk page; you may submit a request to ask an administrator to make&lt;br /&gt;
-- an edit if it is minor or supported by consensus.&amp;quot;&lt;br /&gt;
--&lt;br /&gt;
-- ${IMAGELINK} - a link to set the image to, depending on the protection&lt;br /&gt;
-- action and protection level.&lt;br /&gt;
--&lt;br /&gt;
-- ${INTROBLURB} - the PROTECTIONBLURB parameter, plus the expiry if an expiry&lt;br /&gt;
-- is set. E.g. &amp;quot;Editing of this page by new or unregistered users is currently &lt;br /&gt;
-- disabled until dd Month YYYY.&amp;quot;&lt;br /&gt;
--&lt;br /&gt;
-- ${INTROFRAGMENT} - the same as ${INTROBLURB}, but without final punctuation&lt;br /&gt;
-- so that it can be used in run-on sentences.&lt;br /&gt;
--&lt;br /&gt;
-- ${PAGETYPE} - the type of the page, e.g. &amp;quot;article&amp;quot; or &amp;quot;template&amp;quot;.&lt;br /&gt;
-- Defined in the cfg.pagetypes table.&lt;br /&gt;
--&lt;br /&gt;
-- ${PROTECTIONBLURB} - a blurb explaining the protection level of the page, e.g.&lt;br /&gt;
-- &amp;quot;Editing of this page by new or unregistered users is currently disabled&amp;quot;&lt;br /&gt;
--&lt;br /&gt;
-- ${PROTECTIONDATE} - the protection date, if it has been supplied to the&lt;br /&gt;
-- template.&lt;br /&gt;
--&lt;br /&gt;
-- ${PROTECTIONLEVEL} - the protection level, e.g. &amp;quot;fully protected&amp;quot; or&lt;br /&gt;
-- &amp;quot;semi-protected&amp;quot;.&lt;br /&gt;
--&lt;br /&gt;
-- ${PROTECTIONLOG} - a link to the protection log or the pending changes log,&lt;br /&gt;
-- depending on the protection action.&lt;br /&gt;
--&lt;br /&gt;
-- ${TALKPAGE} - a link to the talk page. If a section is specified, links&lt;br /&gt;
-- straight to that talk page section.&lt;br /&gt;
--&lt;br /&gt;
-- ${TOOLTIPBLURB} - uses the PAGETYPE, PROTECTIONTYPE and EXPIRY parameters to&lt;br /&gt;
-- create a blurb like &amp;quot;This template is semi-protected&amp;quot;, or &amp;quot;This article is&lt;br /&gt;
-- move-protected until DD Month YYYY&amp;quot;.&lt;br /&gt;
--&lt;br /&gt;
-- ${VANDAL} - links for the specified username (or the root page name)&lt;br /&gt;
-- using Module:Vandal-m.&lt;br /&gt;
--&lt;br /&gt;
--                                 Functions&lt;br /&gt;
--&lt;br /&gt;
-- For advanced users, it is possible to use Lua functions instead of strings&lt;br /&gt;
-- in the banner config tables. Using functions gives flexibility that is not&lt;br /&gt;
-- possible just by using parameters. Functions take two arguments, the&lt;br /&gt;
-- protection object and the template arguments, and they must output a string.&lt;br /&gt;
--&lt;br /&gt;
-- For example:&lt;br /&gt;
--&lt;br /&gt;
-- text = function (protectionObj, args)&lt;br /&gt;
--     if protectionObj.level == 'autoconfirmed' then&lt;br /&gt;
--         return 'foo'&lt;br /&gt;
--     else&lt;br /&gt;
--         return 'bar'&lt;br /&gt;
--     end&lt;br /&gt;
-- end&lt;br /&gt;
--&lt;br /&gt;
-- Some protection object properties and methods that may be useful:&lt;br /&gt;
-- protectionObj.action - the protection action&lt;br /&gt;
-- protectionObj.level - the protection level&lt;br /&gt;
-- protectionObj.reason - the protection reason&lt;br /&gt;
-- protectionObj.expiry - the expiry. Nil if unset, the string &amp;quot;indef&amp;quot; if set&lt;br /&gt;
--     to indefinite, and the protection time in unix time if temporary.&lt;br /&gt;
-- protectionObj.protectionDate - the protection date in unix time, or nil if&lt;br /&gt;
--     unspecified.&lt;br /&gt;
-- protectionObj.bannerConfig - the banner config found by the module. Beware&lt;br /&gt;
--     of editing the config field used by the function, as it could create an&lt;br /&gt;
--     infinite loop.&lt;br /&gt;
-- protectionObj:isProtected - returns a boolean showing whether the page is&lt;br /&gt;
--     protected.&lt;br /&gt;
-- protectionObj:isTemporary - returns a boolean showing whether the expiry is&lt;br /&gt;
--     temporary.&lt;br /&gt;
-- protectionObj:isIncorrect - returns a boolean showing whether the protection&lt;br /&gt;
--     template is incorrect.&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
-- The master banner data, used if no values have been found in banners or&lt;br /&gt;
-- defaultBanners.&lt;br /&gt;
masterBanner = {&lt;br /&gt;
	text = '${INTROBLURB}',&lt;br /&gt;
	explanation = '${EXPLANATIONBLURB}',&lt;br /&gt;
	tooltip = '${TOOLTIPBLURB}',&lt;br /&gt;
	link = '${IMAGELINK}',&lt;br /&gt;
	alt = 'Page ${PROTECTIONLEVEL}'&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
-- The default banner data. This holds banner data for different protection&lt;br /&gt;
-- levels.&lt;br /&gt;
-- *required* - this table needs edit, move, autoreview and upload subtables.&lt;br /&gt;
defaultBanners = {&lt;br /&gt;
	edit = {},&lt;br /&gt;
	move = {},&lt;br /&gt;
	autoreview = {&lt;br /&gt;
		default = {&lt;br /&gt;
			alt = 'Page protected with pending changes',&lt;br /&gt;
			tooltip = 'All edits by unregistered and new users are subject to review prior to becoming visible to unregistered users',&lt;br /&gt;
			image = 'Pending-protection-shackle.svg'&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	upload = {}&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
-- The banner data. This holds banner data for different protection reasons.&lt;br /&gt;
-- In fact, the reasons specified in this table control which reasons are&lt;br /&gt;
-- valid inputs to the first positional parameter.&lt;br /&gt;
--&lt;br /&gt;
-- There is also a non-standard &amp;quot;description&amp;quot; field that can be used for items&lt;br /&gt;
-- in this table. This is a description of the protection reason for use in the&lt;br /&gt;
-- module documentation.&lt;br /&gt;
--&lt;br /&gt;
-- *required* - this table needs edit, move, autoreview and upload subtables.&lt;br /&gt;
banners = {&lt;br /&gt;
	edit = {&lt;br /&gt;
		blp = {&lt;br /&gt;
			description = 'For pages protected to promote compliance with the'&lt;br /&gt;
				.. ' [[Wikipedia:Biographies of living persons'&lt;br /&gt;
				.. '|biographies of living persons]] policy',&lt;br /&gt;
			text = '${INTROFRAGMENT} to promote compliance with'&lt;br /&gt;
				.. ' [[Wikipedia:Biographies of living persons'&lt;br /&gt;
				.. &amp;quot;|Wikipedia's&amp;amp;nbsp;policy on&amp;amp;nbsp;the&amp;amp;nbsp;biographies&amp;quot;&lt;br /&gt;
				.. ' of&amp;amp;nbsp;living&amp;amp;nbsp;people]].',&lt;br /&gt;
			tooltip = '${TOOLTIPFRAGMENT} to promote compliance with the policy on'&lt;br /&gt;
				.. ' biographies of living people',&lt;br /&gt;
		},&lt;br /&gt;
		dmca = {&lt;br /&gt;
			description = 'For pages protected by the Wikimedia Foundation'&lt;br /&gt;
				.. ' due to [[Digital Millennium Copyright Act]] takedown requests',&lt;br /&gt;
			explanation = function (protectionObj, args)&lt;br /&gt;
				local ret = 'Pursuant to a rights owner notice under the Digital'&lt;br /&gt;
					.. ' Millennium Copyright Act (DMCA) regarding some content'&lt;br /&gt;
					.. ' in this article, the Wikimedia Foundation acted under'&lt;br /&gt;
					.. ' applicable law and took down and restricted the content'&lt;br /&gt;
					.. ' in question.'&lt;br /&gt;
				if args.notice then&lt;br /&gt;
					ret = ret .. ' A copy of the received notice can be found here: '&lt;br /&gt;
						.. args.notice .. '.'&lt;br /&gt;
				end&lt;br /&gt;
				ret = ret .. ' For more information, including websites discussing'&lt;br /&gt;
					.. ' how to file a counter-notice, please see'&lt;br /&gt;
					.. &amp;quot; [[Wikipedia:Office actions]] and the article's ${TALKPAGE}.&amp;quot;&lt;br /&gt;
					.. &amp;quot;'''Do not remove this template from the article until the&amp;quot;&lt;br /&gt;
					.. &amp;quot; restrictions are withdrawn'''.&amp;quot;&lt;br /&gt;
				return ret&lt;br /&gt;
			end,&lt;br /&gt;
			image = 'Office-protection-shackle.svg',&lt;br /&gt;
		},&lt;br /&gt;
		dispute = {&lt;br /&gt;
			description = 'For pages protected due to editing disputes',&lt;br /&gt;
			text = function (protectionObj, args)&lt;br /&gt;
				-- Find the value of &amp;quot;disputes&amp;quot;.&lt;br /&gt;
				local display = 'disputes'&lt;br /&gt;
				local disputes&lt;br /&gt;
				if args.section then&lt;br /&gt;
					disputes = string.format(&lt;br /&gt;
						'[[%s:%s#%s|%s]]',&lt;br /&gt;
						mw.site.namespaces[protectionObj.title.namespace].talk.name,&lt;br /&gt;
						protectionObj.title.text,&lt;br /&gt;
						args.section,&lt;br /&gt;
						display&lt;br /&gt;
					)&lt;br /&gt;
				else&lt;br /&gt;
					disputes = display&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				-- Make the blurb, depending on the expiry.&lt;br /&gt;
				local msg&lt;br /&gt;
				if type(protectionObj.expiry) == 'number' then&lt;br /&gt;
					msg = '${INTROFRAGMENT} or until editing %s have been resolved.'&lt;br /&gt;
				else&lt;br /&gt;
					msg = '${INTROFRAGMENT} until editing %s have been resolved.'&lt;br /&gt;
				end&lt;br /&gt;
				return string.format(msg, disputes)&lt;br /&gt;
			end,&lt;br /&gt;
			explanation = &amp;quot;This protection is '''not''' an endorsement of the&amp;quot;&lt;br /&gt;
				.. ' ${CURRENTVERSION}. ${EXPLANATIONBLURB}',&lt;br /&gt;
			tooltip = '${TOOLTIPFRAGMENT} due to editing disputes',&lt;br /&gt;
		},&lt;br /&gt;
		ecp = {&lt;br /&gt;
			description = 'For articles in topic areas authorized by'&lt;br /&gt;
				.. ' [[Wikipedia:Arbitration Committee|ArbCom]] or'&lt;br /&gt;
				.. ' meets the criteria for community use',&lt;br /&gt;
			tooltip = 'This ${PAGETYPE} is extended-confirmed protected',&lt;br /&gt;
			alt = 'Extended-protected ${PAGETYPE}',&lt;br /&gt;
		},&lt;br /&gt;
		mainpage = {&lt;br /&gt;
			description = 'For pages protected for being displayed on the [[Main Page]]',&lt;br /&gt;
			text = 'This file is currently'&lt;br /&gt;
				.. ' [[Wikipedia:This page is protected|protected]] from'&lt;br /&gt;
				.. ' editing because it is currently or will soon be displayed'&lt;br /&gt;
				.. ' on the [[Main Page]].',&lt;br /&gt;
			explanation = 'Images on the Main Page are protected due to their high'&lt;br /&gt;
				.. ' visibility. Please discuss any necessary changes on the ${TALKPAGE}.'&lt;br /&gt;
				.. '&amp;lt;br /&amp;gt;&amp;lt;span style=&amp;quot;font-size:90%;&amp;quot;&amp;gt;'&lt;br /&gt;
				.. &amp;quot;'''Administrators:''' Once this image is definitely off the Main Page,&amp;quot;&lt;br /&gt;
				.. ' please unprotect this file, or reduce to semi-protection,'&lt;br /&gt;
				.. ' as appropriate.&amp;lt;/span&amp;gt;',&lt;br /&gt;
		},&lt;br /&gt;
		office = {&lt;br /&gt;
			description = 'For pages protected by the Wikimedia Foundation',&lt;br /&gt;
			text = function (protectionObj, args)&lt;br /&gt;
				local ret = 'This ${PAGETYPE} is currently under the'&lt;br /&gt;
					.. ' scrutiny of the'&lt;br /&gt;
					.. ' [[Wikipedia:Office actions|Wikimedia Foundation Office]]'&lt;br /&gt;
					.. ' and is protected.'&lt;br /&gt;
				if protectionObj.protectionDate then&lt;br /&gt;
					ret = ret .. ' It has been protected since ${PROTECTIONDATE}.'&lt;br /&gt;
				end&lt;br /&gt;
				return ret&lt;br /&gt;
			end,&lt;br /&gt;
			explanation = &amp;quot;If you can edit this page, please discuss all changes and&amp;quot;&lt;br /&gt;
				.. &amp;quot; additions on the ${TALKPAGE} first. '''Do not remove protection from this&amp;quot;&lt;br /&gt;
				.. &amp;quot; page unless you are authorized by the Wikimedia Foundation to do&amp;quot;&lt;br /&gt;
				.. &amp;quot; so.'''&amp;quot;,&lt;br /&gt;
			image = 'Office-protection-shackle.svg',&lt;br /&gt;
		},&lt;br /&gt;
		reset = {&lt;br /&gt;
			description = 'For pages protected by the Wikimedia Foundation and'&lt;br /&gt;
				.. ' &amp;quot;reset&amp;quot; to a bare-bones version',&lt;br /&gt;
 			text = 'This ${PAGETYPE} is currently under the'&lt;br /&gt;
					.. ' scrutiny of the'&lt;br /&gt;
					.. ' [[Wikipedia:Office actions|Wikimedia Foundation Office]]'&lt;br /&gt;
					.. ' and is protected.',&lt;br /&gt;
			explanation = function (protectionObj, args)&lt;br /&gt;
				local ret = ''&lt;br /&gt;
				if protectionObj.protectionDate then&lt;br /&gt;
					ret = ret .. 'On ${PROTECTIONDATE} this ${PAGETYPE} was'&lt;br /&gt;
				else&lt;br /&gt;
					ret = ret .. 'This ${PAGETYPE} has been'&lt;br /&gt;
				end&lt;br /&gt;
				ret = ret .. ' reduced to a'&lt;br /&gt;
				.. ' simplified, &amp;quot;bare bones&amp;quot; version so that it may be completely'&lt;br /&gt;
				.. ' rewritten to ensure it meets the policies of'&lt;br /&gt;
				.. ' [[WP:NPOV|Neutral Point of View]] and [[WP:V|Verifiability]].'&lt;br /&gt;
				.. ' Standard Wikipedia policies will apply to its rewriting—which'&lt;br /&gt;
				.. ' will eventually be open to all editors—and will be strictly'&lt;br /&gt;
				.. ' enforced. The ${PAGETYPE} has been ${PROTECTIONLEVEL} while'&lt;br /&gt;
				.. ' it is being rebuilt.\n\n'&lt;br /&gt;
				.. 'Any insertion of material directly from'&lt;br /&gt;
				.. ' pre-protection revisions of the ${PAGETYPE} will be removed, as'&lt;br /&gt;
				.. ' will any material added to the ${PAGETYPE} that is not properly'&lt;br /&gt;
				.. ' sourced. The associated talk page(s) were also cleared on the'&lt;br /&gt;
				.. &amp;quot; same date.\n\n&amp;quot;&lt;br /&gt;
				.. &amp;quot;If you can edit this page, please discuss all changes and&amp;quot;&lt;br /&gt;
				.. &amp;quot; additions on the ${TALKPAGE} first. '''Do not override&amp;quot;&lt;br /&gt;
				.. &amp;quot; this action, and do not remove protection from this page,&amp;quot;&lt;br /&gt;
				.. &amp;quot; unless you are authorized by the Wikimedia Foundation&amp;quot;&lt;br /&gt;
				.. &amp;quot; to do so. No editor may remove this notice.'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
				return ret&lt;br /&gt;
			end,&lt;br /&gt;
			image = 'Office-protection-shackle.svg',&lt;br /&gt;
		},&lt;br /&gt;
		sock = {&lt;br /&gt;
			description = 'For pages protected due to'&lt;br /&gt;
				.. ' [[Wikipedia:Sock puppetry|sock puppetry]]',&lt;br /&gt;
			text = '${INTROFRAGMENT} to prevent [[Wikipedia:Sock puppetry|sock puppets]] of'&lt;br /&gt;
				.. ' [[Wikipedia:Blocking policy|blocked]] or'&lt;br /&gt;
				.. ' [[Wikipedia:Banning policy|banned users]]'&lt;br /&gt;
				.. ' from editing it.',&lt;br /&gt;
			tooltip = '${TOOLTIPFRAGMENT} to prevent sock puppets of blocked or banned users from'&lt;br /&gt;
				.. ' editing it',&lt;br /&gt;
		},&lt;br /&gt;
		template = {&lt;br /&gt;
			description = 'For [[Wikipedia:High-risk templates|high-risk]]'&lt;br /&gt;
				.. ' templates and Lua modules',&lt;br /&gt;
			text = 'This is a permanently [[Help:Protection|protected]] ${PAGETYPE},'&lt;br /&gt;
				.. ' as it is [[Wikipedia:High-risk templates|high-risk]].',&lt;br /&gt;
			explanation = 'Please discuss any changes on the ${TALKPAGE}; you may'&lt;br /&gt;
				.. ' ${EDITREQUEST} to ask an'&lt;br /&gt;
				.. ' [[Wikipedia:Administrators|administrator]] or'&lt;br /&gt;
				.. ' [[Wikipedia:Template editor|template editor]] to make an edit if'&lt;br /&gt;
				.. ' it is [[Help:Minor edit#When to mark an edit as a minor edit'&lt;br /&gt;
				.. '|uncontroversial]] or supported by'&lt;br /&gt;
				.. ' [[Wikipedia:Consensus|consensus]]. You can also'&lt;br /&gt;
				.. ' [[Wikipedia:Requests for page protection|request]] that the page be'&lt;br /&gt;
				.. ' unprotected.',&lt;br /&gt;
			tooltip = 'This high-risk ${PAGETYPE} is permanently ${PROTECTIONLEVEL}'&lt;br /&gt;
				.. ' to prevent vandalism',&lt;br /&gt;
			alt = 'Permanently protected ${PAGETYPE}',&lt;br /&gt;
		},&lt;br /&gt;
		usertalk = {&lt;br /&gt;
			description = 'For pages protected against disruptive edits by a'&lt;br /&gt;
				.. ' particular user',&lt;br /&gt;
			text = '${INTROFRAGMENT} to prevent ${VANDAL} from using it to make disruptive edits,'&lt;br /&gt;
				.. ' such as abusing the'&lt;br /&gt;
				.. ' &amp;amp;#123;&amp;amp;#123;[[Template:unblock|unblock]]&amp;amp;#125;&amp;amp;#125; template.',&lt;br /&gt;
			explanation = 'If you cannot edit this user talk page and you need to'&lt;br /&gt;
				.. ' make a change or leave a message, you can'&lt;br /&gt;
				.. ' [[Wikipedia:Requests for page protection'&lt;br /&gt;
				.. '#Current requests for edits to a protected page'&lt;br /&gt;
				.. '|request an edit]],'&lt;br /&gt;
				.. ' [[Wikipedia:Requests for page protection'&lt;br /&gt;
				.. '#Current requests for reduction in protection level'&lt;br /&gt;
				.. '|request unprotection]],'&lt;br /&gt;
				.. ' [[Special:Userlogin|log in]],'&lt;br /&gt;
				.. ' or [[Special:UserLogin/signup|create an account]].',&lt;br /&gt;
		},&lt;br /&gt;
		vandalism = {&lt;br /&gt;
			description = 'For pages protected against'&lt;br /&gt;
				.. ' [[Wikipedia:Vandalism|vandalism]]',&lt;br /&gt;
			text = '${INTROFRAGMENT} due to [[Wikipedia:Vandalism|vandalism]].',&lt;br /&gt;
			explanation = function (protectionObj, args)&lt;br /&gt;
				local ret = ''&lt;br /&gt;
				if protectionObj.level == 'sysop' then&lt;br /&gt;
					ret = ret .. &amp;quot;This protection is '''not''' an endorsement of the&amp;quot;&lt;br /&gt;
						.. ' ${CURRENTVERSION}. '&lt;br /&gt;
				end&lt;br /&gt;
				return ret .. '${EXPLANATIONBLURB}'&lt;br /&gt;
			end,&lt;br /&gt;
			tooltip = '${TOOLTIPFRAGMENT} due to vandalism',&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	move = {&lt;br /&gt;
		dispute = {&lt;br /&gt;
			description = 'For pages protected against page moves due to'&lt;br /&gt;
				.. ' disputes over the page title',&lt;br /&gt;
			explanation = &amp;quot;This protection is '''not''' an endorsement of the&amp;quot;&lt;br /&gt;
				.. ' ${CURRENTVERSION}. ${EXPLANATIONBLURB}',&lt;br /&gt;
			image = 'Move-protection-shackle.svg'&lt;br /&gt;
		},&lt;br /&gt;
		vandalism = {&lt;br /&gt;
			description = 'For pages protected against'&lt;br /&gt;
				.. ' [[Wikipedia:Vandalism#Page-move vandalism'&lt;br /&gt;
				.. ' |page-move vandalism]]'&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	autoreview = {},&lt;br /&gt;
	upload = {}&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
--&lt;br /&gt;
--                            GENERAL DATA TABLES&lt;br /&gt;
--&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Protection blurbs&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This table produces the protection blurbs available with the&lt;br /&gt;
-- ${PROTECTIONBLURB} parameter. It is sorted by protection action and&lt;br /&gt;
-- protection level, and is checked by the module in the following order:&lt;br /&gt;
-- 1. page's protection action, page's protection level&lt;br /&gt;
-- 2. page's protection action, default protection level&lt;br /&gt;
-- 3. &amp;quot;edit&amp;quot; protection action, default protection level&lt;br /&gt;
--&lt;br /&gt;
-- It is possible to use banner parameters inside this table.&lt;br /&gt;
-- *required* - this table needs edit, move, autoreview and upload subtables.&lt;br /&gt;
protectionBlurbs = {&lt;br /&gt;
	edit = {&lt;br /&gt;
		default = 'This ${PAGETYPE} is currently [[Help:Protection|'&lt;br /&gt;
			.. 'protected]] from editing',&lt;br /&gt;
		autoconfirmed = 'Editing of this ${PAGETYPE} by [[Wikipedia:User access'&lt;br /&gt;
			.. ' levels#New users|new]] or [[Wikipedia:User access levels#Unregistered'&lt;br /&gt;
			.. ' users|unregistered]] users is currently [[Help:Protection|disabled]]',&lt;br /&gt;
		extendedconfirmed = 'This ${PAGETYPE} is currently under extended confirmed protection',&lt;br /&gt;
	},&lt;br /&gt;
	move = {&lt;br /&gt;
		default = 'This ${PAGETYPE} is currently [[Help:Protection|protected]]'&lt;br /&gt;
			.. ' from [[Help:Moving a page|page moves]]'&lt;br /&gt;
	},&lt;br /&gt;
	autoreview = {&lt;br /&gt;
		default = 'All edits made to this ${PAGETYPE} by'&lt;br /&gt;
			.. ' [[Wikipedia:User access levels#New users|new]] or'&lt;br /&gt;
			.. ' [[Wikipedia:User access levels#Unregistered users|unregistered]]'&lt;br /&gt;
			.. ' users are currently'&lt;br /&gt;
			.. ' [[Wikipedia:Pending changes|subject to review]]'&lt;br /&gt;
	},&lt;br /&gt;
	upload = {&lt;br /&gt;
		default = 'Uploading new versions of this ${PAGETYPE} is currently disabled'&lt;br /&gt;
	}&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Explanation blurbs&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This table produces the explanation blurbs available with the&lt;br /&gt;
-- ${EXPLANATIONBLURB} parameter. It is sorted by protection action,&lt;br /&gt;
-- protection level, and whether the page is a talk page or not. If the page is&lt;br /&gt;
-- a talk page it will have a talk key of &amp;quot;talk&amp;quot;; otherwise it will have a talk&lt;br /&gt;
-- key of &amp;quot;subject&amp;quot;. The table is checked in the following order:&lt;br /&gt;
-- 1. page's protection action, page's protection level, page's talk key&lt;br /&gt;
-- 2. page's protection action, page's protection level, default talk key&lt;br /&gt;
-- 3. page's protection action, default protection level, page's talk key&lt;br /&gt;
-- 4. page's protection action, default protection level, default talk key&lt;br /&gt;
--&lt;br /&gt;
-- It is possible to use banner parameters inside this table.&lt;br /&gt;
-- *required* - this table needs edit, move, autoreview and upload subtables.&lt;br /&gt;
explanationBlurbs = {&lt;br /&gt;
	edit = {&lt;br /&gt;
		autoconfirmed = {&lt;br /&gt;
			subject = 'See the [[Wikipedia:Protection policy|'&lt;br /&gt;
				.. 'protection policy]] and ${PROTECTIONLOG} for more details. If you'&lt;br /&gt;
				.. ' cannot edit this ${PAGETYPE} and you wish to make a change, you can'&lt;br /&gt;
				.. ' ${EDITREQUEST}, discuss changes on the ${TALKPAGE},'&lt;br /&gt;
				.. ' [[Wikipedia:Requests for page protection'&lt;br /&gt;
				.. '#Current requests for reduction in protection level'&lt;br /&gt;
				.. '|request unprotection]], [[Special:Userlogin|log in]], or'&lt;br /&gt;
				.. ' [[Special:UserLogin/signup|create an account]].',&lt;br /&gt;
			default = 'See the [[Wikipedia:Protection policy|'&lt;br /&gt;
				.. 'protection policy]] and ${PROTECTIONLOG} for more details. If you'&lt;br /&gt;
				.. ' cannot edit this ${PAGETYPE} and you wish to make a change, you can'&lt;br /&gt;
				.. ' [[Wikipedia:Requests for page protection'&lt;br /&gt;
				.. '#Current requests for reduction in protection level'&lt;br /&gt;
				.. '|request unprotection]], [[Special:Userlogin|log in]], or'&lt;br /&gt;
				.. ' [[Special:UserLogin/signup|create an account]].',&lt;br /&gt;
		},&lt;br /&gt;
		extendedconfirmed = {&lt;br /&gt;
			default = 'Extended confirmed protection prevents edits from all unregistered editors'&lt;br /&gt;
				.. ' and registered users with fewer than 30 days tenure and 500 edits.'&lt;br /&gt;
				.. ' The [[Wikipedia:Protection policy#extended|policy on community use]]'&lt;br /&gt;
				.. ' specifies that extended confirmed protection can be applied to combat'&lt;br /&gt;
				.. ' disruption, if semi-protection has proven to be ineffective.'&lt;br /&gt;
				.. ' Extended confirmed protection may also be applied to enforce'&lt;br /&gt;
				.. ' [[Wikipedia:Arbitration Committee|arbitration sanctions]].'&lt;br /&gt;
				.. ' Please discuss any changes on the ${TALKPAGE}; you may'&lt;br /&gt;
				.. ' ${EDITREQUEST} to ask for uncontroversial changes supported by'&lt;br /&gt;
				.. ' [[Wikipedia:Consensus|consensus]].'&lt;br /&gt;
		},&lt;br /&gt;
		default = {&lt;br /&gt;
			subject = 'See the [[Wikipedia:Protection policy|'&lt;br /&gt;
				.. 'protection policy]] and ${PROTECTIONLOG} for more details.'&lt;br /&gt;
				.. ' Please discuss any changes on the ${TALKPAGE}; you'&lt;br /&gt;
				.. ' may ${EDITREQUEST} to ask an'&lt;br /&gt;
				.. ' [[Wikipedia:Administrators|administrator]] to make an edit if it'&lt;br /&gt;
				.. ' is [[Help:Minor edit#When to mark an edit as a minor edit'&lt;br /&gt;
				.. '|uncontroversial]] or supported by [[Wikipedia:Consensus'&lt;br /&gt;
				.. '|consensus]]. You may also [[Wikipedia:Requests for'&lt;br /&gt;
				.. ' page protection#Current requests for reduction in protection level'&lt;br /&gt;
				.. '|request]] that this page be unprotected.',&lt;br /&gt;
			default = 'See the [[Wikipedia:Protection policy|'&lt;br /&gt;
				.. 'protection policy]] and ${PROTECTIONLOG} for more details.'&lt;br /&gt;
				.. ' You may [[Wikipedia:Requests for page'&lt;br /&gt;
				.. ' protection#Current requests for edits to a protected page|request an'&lt;br /&gt;
				.. ' edit]] to this page, or [[Wikipedia:Requests for'&lt;br /&gt;
				.. ' page protection#Current requests for reduction in protection level'&lt;br /&gt;
				.. '|ask]] for it to be unprotected.'&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	move = {&lt;br /&gt;
		default = {&lt;br /&gt;
			subject = 'See the [[Wikipedia:Protection policy|'&lt;br /&gt;
				.. 'protection policy]] and ${PROTECTIONLOG} for more details.'&lt;br /&gt;
				.. ' The page may still be edited but cannot be moved'&lt;br /&gt;
				.. ' until unprotected. Please discuss any suggested moves on the'&lt;br /&gt;
				.. ' ${TALKPAGE} or at [[Wikipedia:Requested moves]]. You can also'&lt;br /&gt;
				.. ' [[Wikipedia:Requests for page protection|request]] that the page be'&lt;br /&gt;
				.. ' unprotected.',&lt;br /&gt;
			default = 'See the [[Wikipedia:Protection policy|'&lt;br /&gt;
				.. 'protection policy]] and ${PROTECTIONLOG} for more details.'&lt;br /&gt;
				.. ' The page may still be edited but cannot be moved'&lt;br /&gt;
				.. ' until unprotected. Please discuss any suggested moves at'&lt;br /&gt;
				.. ' [[Wikipedia:Requested moves]]. You can also'&lt;br /&gt;
				.. ' [[Wikipedia:Requests for page protection|request]] that the page be'&lt;br /&gt;
				.. ' unprotected.'&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	autoreview = {&lt;br /&gt;
		default = {&lt;br /&gt;
			default = 'See the [[Wikipedia:Protection policy|'&lt;br /&gt;
				.. 'protection policy]] and ${PROTECTIONLOG} for more details.'&lt;br /&gt;
				.. ' Edits to this ${PAGETYPE} by new and unregistered users'&lt;br /&gt;
				.. ' will not be visible to readers until they are accepted by'&lt;br /&gt;
				.. ' a reviewer. To avoid the need for your edits to be'&lt;br /&gt;
				.. ' reviewed, you may'&lt;br /&gt;
				.. ' [[Wikipedia:Requests for page protection'&lt;br /&gt;
				.. '#Current requests for reduction in protection level'&lt;br /&gt;
				.. '|request unprotection]], [[Special:Userlogin|log in]], or'&lt;br /&gt;
				.. ' [[Special:UserLogin/signup|create an account]].'&lt;br /&gt;
		},&lt;br /&gt;
	},&lt;br /&gt;
	upload = {&lt;br /&gt;
		default = {&lt;br /&gt;
			default = 'See the [[Wikipedia:Protection policy|'&lt;br /&gt;
				.. 'protection policy]] and ${PROTECTIONLOG} for more details.'&lt;br /&gt;
				.. ' The page may still be edited but new versions of the file'&lt;br /&gt;
				.. ' cannot be uploaded until it is unprotected. You can'&lt;br /&gt;
				.. ' request that a new version be uploaded by using a'&lt;br /&gt;
				.. ' [[Wikipedia:Edit requests|protected edit request]], or you'&lt;br /&gt;
				.. ' can  [[Wikipedia:Requests for page protection|request]]'&lt;br /&gt;
				.. ' that the file be unprotected.'&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Protection levels&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This table provides the data for the ${PROTECTIONLEVEL} parameter, which&lt;br /&gt;
-- produces a short label for different protection levels. It is sorted by&lt;br /&gt;
-- protection action and protection level, and is checked in the following&lt;br /&gt;
-- order:&lt;br /&gt;
-- 1. page's protection action, page's protection level&lt;br /&gt;
-- 2. page's protection action, default protection level&lt;br /&gt;
-- 3. &amp;quot;edit&amp;quot; protection action, default protection level&lt;br /&gt;
--&lt;br /&gt;
-- It is possible to use banner parameters inside this table.&lt;br /&gt;
-- *required* - this table needs edit, move, autoreview and upload subtables.&lt;br /&gt;
protectionLevels = {&lt;br /&gt;
	edit = {&lt;br /&gt;
		default = 'protected',&lt;br /&gt;
		templateeditor = 'template-protected',&lt;br /&gt;
		extendedconfirmed = 'extended-protected',&lt;br /&gt;
		autoconfirmed = 'semi-protected',&lt;br /&gt;
	},&lt;br /&gt;
	move = {&lt;br /&gt;
		default = 'move-protected'&lt;br /&gt;
	},&lt;br /&gt;
	autoreview = {&lt;br /&gt;
	},&lt;br /&gt;
	upload = {&lt;br /&gt;
		default = 'upload-protected'&lt;br /&gt;
	}&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Images&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This table lists different padlock images for each protection action and&lt;br /&gt;
-- protection level. It is used if an image is not specified in any of the&lt;br /&gt;
-- banner data tables, and if the page does not satisfy the conditions for using&lt;br /&gt;
-- the ['image-filename-indef'] image. It is checked in the following order:&lt;br /&gt;
-- 1. page's protection action, page's protection level&lt;br /&gt;
-- 2. page's protection action, default protection level&lt;br /&gt;
images = {&lt;br /&gt;
	edit = {&lt;br /&gt;
		default = 'Full-protection-shackle.svg',&lt;br /&gt;
		templateeditor = 'Template-protection-shackle.svg',&lt;br /&gt;
		extendedconfirmed = 'Extended-protection-shackle.svg',&lt;br /&gt;
		autoconfirmed = 'Semi-protection-shackle.svg'&lt;br /&gt;
	},&lt;br /&gt;
	move = {&lt;br /&gt;
		default = 'Move-protection-shackle.svg',&lt;br /&gt;
	},&lt;br /&gt;
	autoreview = {&lt;br /&gt;
		default = 'Pending-protection-shackle.svg'&lt;br /&gt;
	},&lt;br /&gt;
	upload = {&lt;br /&gt;
		default = 'Upload-protection-shackle.svg'&lt;br /&gt;
	}&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
-- Pages with a reason specified in this table will show the special &amp;quot;indef&amp;quot;&lt;br /&gt;
-- padlock, defined in the 'image-filename-indef' message, if no expiry is set.&lt;br /&gt;
indefImageReasons = {&lt;br /&gt;
	template = true&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Image links&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This table provides the data for the ${IMAGELINK} parameter, which gets&lt;br /&gt;
-- the image link for small padlock icons based on the page's protection action&lt;br /&gt;
-- and protection level. It is checked in the following order:&lt;br /&gt;
-- 1. page's protection action, page's protection level&lt;br /&gt;
-- 2. page's protection action, default protection level&lt;br /&gt;
-- 3. &amp;quot;edit&amp;quot; protection action, default protection level&lt;br /&gt;
--&lt;br /&gt;
-- It is possible to use banner parameters inside this table.&lt;br /&gt;
-- *required* - this table needs edit, move, autoreview and upload subtables.&lt;br /&gt;
imageLinks = {&lt;br /&gt;
	edit = {&lt;br /&gt;
		default = 'Wikipedia:Protection policy#full',&lt;br /&gt;
		templateeditor = 'Wikipedia:Protection policy#template',&lt;br /&gt;
		extendedconfirmed = 'Wikipedia:Protection policy#extended',&lt;br /&gt;
		autoconfirmed = 'Wikipedia:Protection policy#semi'&lt;br /&gt;
	},&lt;br /&gt;
	move = {&lt;br /&gt;
		default = 'Wikipedia:Protection policy#move'&lt;br /&gt;
	},&lt;br /&gt;
	autoreview = {&lt;br /&gt;
		default = 'Wikipedia:Protection policy#pending'&lt;br /&gt;
	},&lt;br /&gt;
	upload = {&lt;br /&gt;
		default = 'Wikipedia:Protection policy#upload'&lt;br /&gt;
	}&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Padlock indicator names&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This table provides the &amp;quot;name&amp;quot; attribute for the &amp;lt;indicator&amp;gt; extension tag&lt;br /&gt;
-- with which small padlock icons are generated. All indicator tags on a page&lt;br /&gt;
-- are displayed in alphabetical order based on this attribute, and with&lt;br /&gt;
-- indicator tags with duplicate names, the last tag on the page wins.&lt;br /&gt;
-- The attribute is chosen based on the protection action; table keys must be a&lt;br /&gt;
-- protection action name or the string &amp;quot;default&amp;quot;.&lt;br /&gt;
padlockIndicatorNames = {&lt;br /&gt;
	autoreview = 'pp-autoreview',&lt;br /&gt;
	default = 'pp-default'&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Protection categories&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- The protection categories are stored in the protectionCategories table.&lt;br /&gt;
-- Keys to this table are made up of the following strings:&lt;br /&gt;
--&lt;br /&gt;
-- 1. the expiry date&lt;br /&gt;
-- 2. the namespace&lt;br /&gt;
-- 3. the protection reason (e.g. &amp;quot;dispute&amp;quot; or &amp;quot;vandalism&amp;quot;)&lt;br /&gt;
-- 4. the protection level (e.g. &amp;quot;sysop&amp;quot; or &amp;quot;autoconfirmed&amp;quot;)&lt;br /&gt;
-- 5. the action (e.g. &amp;quot;edit&amp;quot; or &amp;quot;move&amp;quot;)&lt;br /&gt;
-- &lt;br /&gt;
-- When the module looks up a category in the table, first it will will check to&lt;br /&gt;
-- see a key exists that corresponds to all five parameters. For example, a&lt;br /&gt;
-- user page semi-protected from vandalism for two weeks would have the key&lt;br /&gt;
-- &amp;quot;temp-user-vandalism-autoconfirmed-edit&amp;quot;. If no match is found, the module&lt;br /&gt;
-- changes the first part of the key to &amp;quot;all&amp;quot; and checks the table again. It&lt;br /&gt;
-- keeps checking increasingly generic key combinations until it finds the&lt;br /&gt;
-- field, or until it reaches the key &amp;quot;all-all-all-all-all&amp;quot;.&lt;br /&gt;
--&lt;br /&gt;
-- The module uses a binary matrix to determine the order in which to search.&lt;br /&gt;
-- This is best demonstrated by a table. In this table, the &amp;quot;0&amp;quot; values&lt;br /&gt;
-- represent &amp;quot;all&amp;quot;, and the &amp;quot;1&amp;quot; values represent the original data (e.g.&lt;br /&gt;
-- &amp;quot;indef&amp;quot; or &amp;quot;file&amp;quot; or &amp;quot;vandalism&amp;quot;).&lt;br /&gt;
--&lt;br /&gt;
--        expiry    namespace reason   level     action&lt;br /&gt;
-- order&lt;br /&gt;
-- 1      1         1         1        1         1&lt;br /&gt;
-- 2      0         1         1        1         1&lt;br /&gt;
-- 3      1         0         1        1         1&lt;br /&gt;
-- 4      0         0         1        1         1&lt;br /&gt;
-- 5      1         1         0        1         1&lt;br /&gt;
-- 6      0         1         0        1         1&lt;br /&gt;
-- 7      1         0         0        1         1&lt;br /&gt;
-- 8      0         0         0        1         1&lt;br /&gt;
-- 9      1         1         1        0         1&lt;br /&gt;
-- 10     0         1         1        0         1&lt;br /&gt;
-- 11     1         0         1        0         1&lt;br /&gt;
-- 12     0         0         1        0         1&lt;br /&gt;
-- 13     1         1         0        0         1&lt;br /&gt;
-- 14     0         1         0        0         1&lt;br /&gt;
-- 15     1         0         0        0         1&lt;br /&gt;
-- 16     0         0         0        0         1&lt;br /&gt;
-- 17     1         1         1        1         0&lt;br /&gt;
-- 18     0         1         1        1         0&lt;br /&gt;
-- 19     1         0         1        1         0&lt;br /&gt;
-- 20     0         0         1        1         0&lt;br /&gt;
-- 21     1         1         0        1         0&lt;br /&gt;
-- 22     0         1         0        1         0&lt;br /&gt;
-- 23     1         0         0        1         0&lt;br /&gt;
-- 24     0         0         0        1         0&lt;br /&gt;
-- 25     1         1         1        0         0&lt;br /&gt;
-- 26     0         1         1        0         0&lt;br /&gt;
-- 27     1         0         1        0         0&lt;br /&gt;
-- 28     0         0         1        0         0&lt;br /&gt;
-- 29     1         1         0        0         0&lt;br /&gt;
-- 30     0         1         0        0         0&lt;br /&gt;
-- 31     1         0         0        0         0&lt;br /&gt;
-- 32     0         0         0        0         0&lt;br /&gt;
--&lt;br /&gt;
-- In this scheme the action has the highest priority, as it is the last&lt;br /&gt;
-- to change, and the expiry has the least priority, as it changes the most.&lt;br /&gt;
-- The priorities of the expiry, the protection level and the action are&lt;br /&gt;
-- fixed, but the priorities of the reason and the namespace can be swapped&lt;br /&gt;
-- through the use of the cfg.bannerDataNamespaceHasPriority table.&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
-- If the reason specified to the template is listed in this table,&lt;br /&gt;
-- namespace data will take priority over reason data in the protectionCategories&lt;br /&gt;
-- table.&lt;br /&gt;
reasonsWithNamespacePriority = {&lt;br /&gt;
	vandalism = true,&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
-- The string to use as a namespace key for the protectionCategories table for each&lt;br /&gt;
-- namespace number.&lt;br /&gt;
categoryNamespaceKeys = {&lt;br /&gt;
	[  2] = 'user',&lt;br /&gt;
	[  3] = 'user',&lt;br /&gt;
	[  4] = 'project',&lt;br /&gt;
	[  6] = 'file',&lt;br /&gt;
	[  8] = 'mediawiki',&lt;br /&gt;
	[ 10] = 'template',&lt;br /&gt;
	[ 12] = 'project',&lt;br /&gt;
	[ 14] = 'category',&lt;br /&gt;
	[100] = 'portal',&lt;br /&gt;
	[828] = 'module',&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
protectionCategories = {&lt;br /&gt;
	['all|all|all|all|all']                  = 'Wikipedia fully protected pages',&lt;br /&gt;
	['all|all|office|all|all']               = 'Wikipedia Office-protected pages',&lt;br /&gt;
	['all|all|reset|all|all']                = 'Wikipedia Office-protected pages',&lt;br /&gt;
	['all|all|dmca|all|all']                 = 'Wikipedia Office-protected pages',&lt;br /&gt;
	['all|all|mainpage|all|all']             = 'Wikipedia fully-protected main page files',&lt;br /&gt;
	['all|all|all|extendedconfirmed|all']    = 'Wikipedia pages under 30-500 editing restriction',&lt;br /&gt;
	['all|all|ecp|extendedconfirmed|all']    = 'Wikipedia pages under 30-500 editing restriction',&lt;br /&gt;
	['all|template|all|all|edit']            = 'Wikipedia fully protected templates',&lt;br /&gt;
	['all|all|all|autoconfirmed|edit']       = 'Wikipedia semi-protected pages',&lt;br /&gt;
	['indef|all|all|autoconfirmed|edit']     = 'Wikipedia indefinitely semi-protected pages',&lt;br /&gt;
	['all|all|blp|autoconfirmed|edit']       = 'Wikipedia indefinitely semi-protected biographies of living people',&lt;br /&gt;
	['temp|all|blp|autoconfirmed|edit']      = 'Wikipedia temporarily semi-protected biographies of living people',&lt;br /&gt;
	['all|all|dispute|autoconfirmed|edit']   = 'Wikipedia pages semi-protected due to dispute',&lt;br /&gt;
	['all|all|sock|autoconfirmed|edit']      = 'Wikipedia pages semi-protected from banned users',&lt;br /&gt;
	['all|all|vandalism|autoconfirmed|edit'] = 'Wikipedia pages semi-protected against vandalism',&lt;br /&gt;
	['all|category|all|autoconfirmed|edit']  = 'Wikipedia semi-protected categories',&lt;br /&gt;
	['all|file|all|autoconfirmed|edit']      = 'Wikipedia semi-protected files',&lt;br /&gt;
	['all|portal|all|autoconfirmed|edit']    = 'Wikipedia semi-protected portals',&lt;br /&gt;
	['all|project|all|autoconfirmed|edit']   = 'Wikipedia semi-protected project pages',&lt;br /&gt;
	['all|talk|all|autoconfirmed|edit']      = 'Wikipedia semi-protected talk pages',&lt;br /&gt;
	['all|template|all|autoconfirmed|edit']  = 'Wikipedia semi-protected templates',&lt;br /&gt;
	['all|user|all|autoconfirmed|edit']      = 'Wikipedia semi-protected user and user talk pages',&lt;br /&gt;
	['all|template|all|templateeditor|edit'] = 'Wikipedia template-protected templates',&lt;br /&gt;
	['all|all|blp|sysop|edit']               = 'Wikipedia indefinitely protected biographies of living people',&lt;br /&gt;
	['temp|all|blp|sysop|edit']              = 'Wikipedia temporarily protected biographies of living people',&lt;br /&gt;
	['all|all|dispute|sysop|edit']           = 'Wikipedia pages protected due to dispute',&lt;br /&gt;
	['all|all|sock|sysop|edit']              = 'Wikipedia pages protected from banned users',&lt;br /&gt;
	['all|all|vandalism|sysop|edit']         = 'Wikipedia pages protected against vandalism',&lt;br /&gt;
	['all|category|all|sysop|edit']          = 'Wikipedia protected categories',&lt;br /&gt;
	['all|file|all|sysop|edit']              = 'Wikipedia fully-protected files',&lt;br /&gt;
	['all|project|all|sysop|edit']           = 'Wikipedia fully-protected project pages',&lt;br /&gt;
	['all|talk|all|sysop|edit']              = 'Wikipedia fully-protected talk pages',&lt;br /&gt;
	['all|template|all|sysop|edit']          = 'Wikipedia fully protected templates',&lt;br /&gt;
	['all|user|all|sysop|edit']              = 'Wikipedia protected user and user talk pages',&lt;br /&gt;
	['all|module|all|all|edit']              = 'Wikipedia fully-protected modules',&lt;br /&gt;
	['all|module|all|templateeditor|edit']   = 'Wikipedia template-protected modules',&lt;br /&gt;
	['all|module|all|autoconfirmed|edit']    = 'Wikipedia semi-protected modules',&lt;br /&gt;
	['all|all|all|sysop|move']               = 'Wikipedia move-protected pages',&lt;br /&gt;
	['indef|all|all|sysop|move']             = 'Wikipedia indefinitely move-protected pages',&lt;br /&gt;
	['all|all|dispute|sysop|move']           = 'Wikipedia pages move-protected due to dispute',&lt;br /&gt;
	['all|all|vandalism|sysop|move']         = 'Wikipedia pages move-protected due to vandalism',&lt;br /&gt;
	['all|portal|all|sysop|move']            = 'Wikipedia move-protected portals',&lt;br /&gt;
	['all|portal|all|sysop|move']            = 'Wikipedia move-protected portals',&lt;br /&gt;
	['all|project|all|sysop|move']           = 'Wikipedia move-protected project pages',&lt;br /&gt;
	['all|talk|all|sysop|move']              = 'Wikipedia move-protected talk pages',&lt;br /&gt;
	['all|template|all|sysop|move']          = 'Wikipedia move-protected templates',&lt;br /&gt;
	['all|user|all|sysop|move']              = 'Wikipedia move-protected user and user talk pages',&lt;br /&gt;
	['all|all|all|autoconfirmed|autoreview'] = 'Wikipedia pending changes protected pages',&lt;br /&gt;
	['all|file|all|all|upload']              = 'Wikipedia upload-protected files',&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Expiry category config&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This table configures the expiry category behaviour for each protection&lt;br /&gt;
-- action.&lt;br /&gt;
-- * If set to true, setting that action will always categorise the page if&lt;br /&gt;
--   an expiry parameter is not set.&lt;br /&gt;
-- * If set to false, setting that action will never categorise the page.&lt;br /&gt;
-- * If set to nil, the module will categorise the page if:&lt;br /&gt;
--   1) an expiry parameter is not set, and&lt;br /&gt;
--   2) a reason is provided, and&lt;br /&gt;
--   3) the specified reason is not blacklisted in the reasonsWithoutExpiryCheck&lt;br /&gt;
--      table.&lt;br /&gt;
&lt;br /&gt;
expiryCheckActions = {&lt;br /&gt;
	edit = nil,&lt;br /&gt;
	move = false,&lt;br /&gt;
	autoreview = true,&lt;br /&gt;
	upload = false&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
reasonsWithoutExpiryCheck = {&lt;br /&gt;
	blp = true,&lt;br /&gt;
	template = true,&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Pagetypes&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This table produces the page types available with the ${PAGETYPE} parameter.&lt;br /&gt;
-- Keys are namespace numbers, or the string &amp;quot;default&amp;quot; for the default value.&lt;br /&gt;
pagetypes = {&lt;br /&gt;
	[0] = 'article',&lt;br /&gt;
	[6] = 'file',&lt;br /&gt;
	[10] = 'template',&lt;br /&gt;
	[14] = 'category',&lt;br /&gt;
	[828] = 'module',&lt;br /&gt;
	default = 'page'&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Strings marking indefinite protection&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This table contains values passed to the expiry parameter that mean the page&lt;br /&gt;
-- is protected indefinitely.&lt;br /&gt;
indefStrings = {&lt;br /&gt;
	['indef'] = true,&lt;br /&gt;
	['indefinite'] = true,&lt;br /&gt;
	['indefinitely'] = true,&lt;br /&gt;
	['infinite'] = true,&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Group hierarchy&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This table maps each group to all groups that have a superset of the original&lt;br /&gt;
-- group's page editing permissions.&lt;br /&gt;
hierarchy = {&lt;br /&gt;
	sysop = {},&lt;br /&gt;
	reviewer = {'sysop'},&lt;br /&gt;
	filemover = {'sysop'},&lt;br /&gt;
	templateeditor = {'sysop'},&lt;br /&gt;
	extendedconfirmed = {'sysop'},&lt;br /&gt;
	autoconfirmed = {'reviewer', 'filemover', 'templateeditor', 'extendedconfirmed'},&lt;br /&gt;
	user = {'autoconfirmed'},&lt;br /&gt;
	['*'] = {'user'}&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Wrapper templates and their default arguments&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This table contains wrapper templates used with the module, and their&lt;br /&gt;
-- default arguments. Templates specified in this table should contain the&lt;br /&gt;
-- following invocation, and no other template content:&lt;br /&gt;
--&lt;br /&gt;
-- {{#invoke:Protection banner|main}}&lt;br /&gt;
--&lt;br /&gt;
-- If other content is desired, it can be added between&lt;br /&gt;
-- &amp;lt;noinclude&amp;gt;...&amp;lt;/noinclude&amp;gt; tags.&lt;br /&gt;
--&lt;br /&gt;
-- When a user calls one of these wrapper templates, they will use the&lt;br /&gt;
-- default arguments automatically. However, users can override any of the&lt;br /&gt;
-- arguments.&lt;br /&gt;
wrappers = {&lt;br /&gt;
	['Template:Pp']                         = {},&lt;br /&gt;
	['Template:Pp-30-500']                  = {'ecp'},&lt;br /&gt;
	['Template:Pp-blp']                     = {'blp'},&lt;br /&gt;
	-- we don't need Template:Pp-create&lt;br /&gt;
	['Template:Pp-dispute']                 = {'dispute'},&lt;br /&gt;
	['Template:Pp-main-page']               = {'mainpage'},&lt;br /&gt;
	['Template:Pp-move']                    = {action = 'move'},&lt;br /&gt;
	['Template:Pp-move-dispute']            = {'dispute', action = 'move'},&lt;br /&gt;
	-- we don't need Template:Pp-move-indef&lt;br /&gt;
	['Template:Pp-move-vandalism']          = {'vandalism', action = 'move'},&lt;br /&gt;
	['Template:Pp-office']                  = {'office'},&lt;br /&gt;
	['Template:Pp-office-dmca']             = {'dmca'},&lt;br /&gt;
	['Template:Pp-pc']                      = {action = 'autoreview', small = true},&lt;br /&gt;
	['Template:Pp-pc1']                     = {action = 'autoreview', small = true},&lt;br /&gt;
	['Template:Pp-reset']                   = {'reset'},&lt;br /&gt;
	['Template:Pp-semi-indef']              = {small = true},&lt;br /&gt;
	['Template:Pp-sock']                    = {'sock'},&lt;br /&gt;
	['Template:Pp-template']                = {'template', small = true},&lt;br /&gt;
	['Template:Pp-upload']                  = {action = 'upload'},&lt;br /&gt;
	['Template:Pp-usertalk']                = {'usertalk'},&lt;br /&gt;
	['Template:Pp-vandalism']               = {'vandalism'},&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- &lt;br /&gt;
--                                 MESSAGES&lt;br /&gt;
-- &lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
msg = {&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Intro blurb and intro fragment&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- These messages specify what is produced by the ${INTROBLURB} and&lt;br /&gt;
-- ${INTROFRAGMENT} parameters. If the protection is temporary they use the&lt;br /&gt;
-- intro-blurb-expiry or intro-fragment-expiry, and if not they use&lt;br /&gt;
-- intro-blurb-noexpiry or intro-fragment-noexpiry.&lt;br /&gt;
-- It is possible to use banner parameters in these messages.&lt;br /&gt;
['intro-blurb-expiry'] = '${PROTECTIONBLURB} until ${EXPIRY}.',&lt;br /&gt;
['intro-blurb-noexpiry'] = '${PROTECTIONBLURB}.',&lt;br /&gt;
['intro-fragment-expiry'] = '${PROTECTIONBLURB} until ${EXPIRY},',&lt;br /&gt;
['intro-fragment-noexpiry'] = '${PROTECTIONBLURB}',&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Tooltip blurb&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- These messages specify what is produced by the ${TOOLTIPBLURB} parameter.&lt;br /&gt;
-- If the protection is temporary the tooltip-blurb-expiry message is used, and&lt;br /&gt;
-- if not the tooltip-blurb-noexpiry message is used.&lt;br /&gt;
-- It is possible to use banner parameters in these messages.&lt;br /&gt;
['tooltip-blurb-expiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY}.',&lt;br /&gt;
['tooltip-blurb-noexpiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}.',&lt;br /&gt;
['tooltip-fragment-expiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY},',&lt;br /&gt;
['tooltip-fragment-noexpiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}',&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Special explanation blurb&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- An explanation blurb for pages that cannot be unprotected, e.g. for pages&lt;br /&gt;
-- in the MediaWiki namespace.&lt;br /&gt;
-- It is possible to use banner parameters in this message.&lt;br /&gt;
['explanation-blurb-nounprotect'] = 'See the [[Wikipedia:Protection policy|'&lt;br /&gt;
	.. 'protection policy]] and ${PROTECTIONLOG} for more details.'&lt;br /&gt;
	.. ' Please discuss any changes on the ${TALKPAGE}; you'&lt;br /&gt;
	.. ' may ${EDITREQUEST} to ask an'&lt;br /&gt;
	.. ' [[Wikipedia:Administrators|administrator]] to make an edit if it'&lt;br /&gt;
	.. ' is [[Help:Minor edit#When to mark an edit as a minor edit'&lt;br /&gt;
	.. '|uncontroversial]] or supported by [[Wikipedia:Consensus'&lt;br /&gt;
	.. '|consensus]].',&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Protection log display values&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- These messages determine the display values for the protection log link&lt;br /&gt;
-- or the pending changes log link produced by the ${PROTECTIONLOG} parameter.&lt;br /&gt;
-- It is possible to use banner parameters in these messages.&lt;br /&gt;
['protection-log-display'] = 'protection log',&lt;br /&gt;
['pc-log-display'] = 'pending changes log',&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Current version display values&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- These messages determine the display values for the page history link&lt;br /&gt;
-- or the move log link produced by the ${CURRENTVERSION} parameter.&lt;br /&gt;
-- It is possible to use banner parameters in these messages.&lt;br /&gt;
['current-version-move-display'] = 'current title',&lt;br /&gt;
['current-version-edit-display'] = 'current version',&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Talk page&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This message determines the display value of the talk page link produced&lt;br /&gt;
-- with the ${TALKPAGE} parameter.&lt;br /&gt;
-- It is possible to use banner parameters in this message.&lt;br /&gt;
['talk-page-link-display'] = 'talk page',&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Edit requests&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This message determines the display value of the edit request link produced&lt;br /&gt;
-- with the ${EDITREQUEST} parameter.&lt;br /&gt;
-- It is possible to use banner parameters in this message.&lt;br /&gt;
['edit-request-display'] = 'submit an edit request',&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Expiry date format&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This is the format for the blurb expiry date. It should be valid input for&lt;br /&gt;
-- the first parameter of the #time parser function.&lt;br /&gt;
['expiry-date-format'] = 'F j, Y &amp;quot;at&amp;quot; H:i e',&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Tracking categories&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- These messages determine which tracking categories the module outputs.&lt;br /&gt;
['tracking-category-incorrect'] = 'Wikipedia pages with incorrect protection templates',&lt;br /&gt;
['tracking-category-template'] = 'Wikipedia template-protected pages other than templates and modules',&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Images&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- These are images that are not defined by their protection action and protection level.&lt;br /&gt;
['image-filename-indef'] = 'Full-protection-shackle.svg',&lt;br /&gt;
['image-filename-default'] = 'Transparent.gif',&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- End messages&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- End configuration&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=Module:No_globals&amp;diff=1342</id>
		<title>Module:No globals</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=Module:No_globals&amp;diff=1342"/>
		<updated>2019-09-06T09:28:20Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local mt = getmetatable(_G) or {}&lt;br /&gt;
function mt.__index (t, k)&lt;br /&gt;
	if k ~= 'arg' then&lt;br /&gt;
		error('Tried to read nil global ' .. tostring(k), 2)&lt;br /&gt;
	end&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
function mt.__newindex(t, k, v)&lt;br /&gt;
	if k ~= 'arg' then&lt;br /&gt;
		error('Tried to write global ' .. tostring(k), 2)&lt;br /&gt;
	end&lt;br /&gt;
	rawset(t, k, v)&lt;br /&gt;
end&lt;br /&gt;
setmetatable(_G, mt)&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=Module:Navbox&amp;diff=1340</id>
		<title>Module:Navbox</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=Module:Navbox&amp;diff=1340"/>
		<updated>2019-09-06T09:28:19Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--&lt;br /&gt;
-- This module implements {{Navbox}}&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local navbar = require('Module:Navbar')._navbar&lt;br /&gt;
local getArgs -- lazily initialized&lt;br /&gt;
&lt;br /&gt;
local args&lt;br /&gt;
local border&lt;br /&gt;
local listnums&lt;br /&gt;
local ODD_EVEN_MARKER = '\127_ODDEVEN_\127'&lt;br /&gt;
local RESTART_MARKER = '\127_ODDEVEN0_\127'&lt;br /&gt;
local REGEX_MARKER = '\127_ODDEVEN(%d?)_\127'&lt;br /&gt;
&lt;br /&gt;
local function striped(wikitext)&lt;br /&gt;
	-- Return wikitext with markers replaced for odd/even striping.&lt;br /&gt;
	-- Child (subgroup) navboxes are flagged with a category that is removed&lt;br /&gt;
	-- by parent navboxes. The result is that the category shows all pages&lt;br /&gt;
	-- where a child navbox is not contained in a parent navbox.&lt;br /&gt;
	local orphanCat = '[[Category:Navbox orphans]]'&lt;br /&gt;
	if border == 'subgroup' and args.orphan ~= 'yes' then&lt;br /&gt;
		-- No change; striping occurs in outermost navbox.&lt;br /&gt;
		return wikitext .. orphanCat&lt;br /&gt;
	end&lt;br /&gt;
	local first, second = 'odd', 'even'&lt;br /&gt;
	if args.evenodd then&lt;br /&gt;
		if args.evenodd == 'swap' then&lt;br /&gt;
			first, second = second, first&lt;br /&gt;
		else&lt;br /&gt;
			first = args.evenodd&lt;br /&gt;
			second = first&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local changer&lt;br /&gt;
	if first == second then&lt;br /&gt;
		changer = first&lt;br /&gt;
	else&lt;br /&gt;
		local index = 0&lt;br /&gt;
		changer = function (code)&lt;br /&gt;
			if code == '0' then&lt;br /&gt;
				-- Current occurrence is for a group before a nested table.&lt;br /&gt;
				-- Set it to first as a valid although pointless class.&lt;br /&gt;
				-- The next occurrence will be the first row after a title&lt;br /&gt;
				-- in a subgroup and will also be first.&lt;br /&gt;
				index = 0&lt;br /&gt;
				return first&lt;br /&gt;
			end&lt;br /&gt;
			index = index + 1&lt;br /&gt;
			return index % 2 == 1 and first or second&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local regex = orphanCat:gsub('([%[%]])', '%%%1')&lt;br /&gt;
	return (wikitext:gsub(regex, ''):gsub(REGEX_MARKER, changer))  -- () omits gsub count&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function processItem(item, nowrapitems)&lt;br /&gt;
	if item:sub(1, 2) == '{|' then&lt;br /&gt;
		-- Applying nowrap to lines in a table does not make sense.&lt;br /&gt;
		-- Add newlines to compensate for trim of x in |parm=x in a template.&lt;br /&gt;
		return '\n' .. item ..'\n'&lt;br /&gt;
	end&lt;br /&gt;
	if nowrapitems == 'yes' then&lt;br /&gt;
		local lines = {}&lt;br /&gt;
		for line in (item .. '\n'):gmatch('([^\n]*)\n') do&lt;br /&gt;
			local prefix, content = line:match('^([*:;#]+)%s*(.*)')&lt;br /&gt;
			if prefix and not content:match('^&amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;') then&lt;br /&gt;
				line = prefix .. '&amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;' .. content .. '&amp;lt;/span&amp;gt;'&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(lines, line)&lt;br /&gt;
		end&lt;br /&gt;
		item = table.concat(lines, '\n')&lt;br /&gt;
	end&lt;br /&gt;
	if item:match('^[*:;#]') then&lt;br /&gt;
		return '\n' .. item ..'\n'&lt;br /&gt;
	end&lt;br /&gt;
	return item&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderNavBar(titleCell)&lt;br /&gt;
&lt;br /&gt;
	if args.navbar ~= 'off' and args.navbar ~= 'plain' and not (not args.name and mw.getCurrentFrame():getParent():getTitle():gsub('/sandbox$', '') == 'Template:Navbox') then&lt;br /&gt;
		titleCell:wikitext(navbar{&lt;br /&gt;
			args.name,&lt;br /&gt;
			mini = 1,&lt;br /&gt;
			fontstyle = (args.basestyle or '') .. ';' .. (args.titlestyle or '') .. ';background:none transparent;border:none;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none; padding:0;'&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
--   Title row&lt;br /&gt;
--&lt;br /&gt;
local function renderTitleRow(tbl)&lt;br /&gt;
	if not args.title then return end&lt;br /&gt;
&lt;br /&gt;
	local titleRow = tbl:tag('tr')&lt;br /&gt;
&lt;br /&gt;
	if args.titlegroup then&lt;br /&gt;
		titleRow&lt;br /&gt;
			:tag('th')&lt;br /&gt;
				:attr('scope', 'row')&lt;br /&gt;
				:addClass('navbox-group')&lt;br /&gt;
				:addClass(args.titlegroupclass)&lt;br /&gt;
				:cssText(args.basestyle)&lt;br /&gt;
				:cssText(args.groupstyle)&lt;br /&gt;
				:cssText(args.titlegroupstyle)&lt;br /&gt;
				:wikitext(args.titlegroup)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local titleCell = titleRow:tag('th'):attr('scope', 'col')&lt;br /&gt;
&lt;br /&gt;
	if args.titlegroup then&lt;br /&gt;
		titleCell&lt;br /&gt;
			:css('border-left', '2px solid #fdfdfd')&lt;br /&gt;
			:css('width', '100%')&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local titleColspan = 2&lt;br /&gt;
	if args.imageleft then titleColspan = titleColspan + 1 end&lt;br /&gt;
	if args.image then titleColspan = titleColspan + 1 end&lt;br /&gt;
	if args.titlegroup then titleColspan = titleColspan - 1 end&lt;br /&gt;
&lt;br /&gt;
	titleCell&lt;br /&gt;
		:cssText(args.basestyle)&lt;br /&gt;
		:cssText(args.titlestyle)&lt;br /&gt;
		:addClass('navbox-title')&lt;br /&gt;
		:attr('colspan', titleColspan)&lt;br /&gt;
&lt;br /&gt;
	renderNavBar(titleCell)&lt;br /&gt;
&lt;br /&gt;
	titleCell&lt;br /&gt;
		:tag('div')&lt;br /&gt;
			-- id for aria-labelledby attribute&lt;br /&gt;
			:attr('id', mw.uri.anchorEncode(args.title))&lt;br /&gt;
			:addClass(args.titleclass)&lt;br /&gt;
			:css('font-size', '114%')&lt;br /&gt;
			:css('margin', '0 4em')&lt;br /&gt;
			:wikitext(processItem(args.title))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
--   Above/Below rows&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
local function getAboveBelowColspan()&lt;br /&gt;
	local ret = 2&lt;br /&gt;
	if args.imageleft then ret = ret + 1 end&lt;br /&gt;
	if args.image then ret = ret + 1 end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderAboveRow(tbl)&lt;br /&gt;
	if not args.above then return end&lt;br /&gt;
&lt;br /&gt;
	tbl:tag('tr')&lt;br /&gt;
		:tag('td')&lt;br /&gt;
			:addClass('navbox-abovebelow')&lt;br /&gt;
			:addClass(args.aboveclass)&lt;br /&gt;
			:cssText(args.basestyle)&lt;br /&gt;
			:cssText(args.abovestyle)&lt;br /&gt;
			:attr('colspan', getAboveBelowColspan())&lt;br /&gt;
			:tag('div')&lt;br /&gt;
				-- id for aria-labelledby attribute, if no title&lt;br /&gt;
				:attr('id', args.title and nil or mw.uri.anchorEncode(args.above))&lt;br /&gt;
				:wikitext(processItem(args.above, args.nowrapitems))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderBelowRow(tbl)&lt;br /&gt;
	if not args.below then return end&lt;br /&gt;
&lt;br /&gt;
	tbl:tag('tr')&lt;br /&gt;
		:tag('td')&lt;br /&gt;
			:addClass('navbox-abovebelow')&lt;br /&gt;
			:addClass(args.belowclass)&lt;br /&gt;
			:cssText(args.basestyle)&lt;br /&gt;
			:cssText(args.belowstyle)&lt;br /&gt;
			:attr('colspan', getAboveBelowColspan())&lt;br /&gt;
			:tag('div')&lt;br /&gt;
				:wikitext(processItem(args.below, args.nowrapitems))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
--   List rows&lt;br /&gt;
--&lt;br /&gt;
local function renderListRow(tbl, index, listnum)&lt;br /&gt;
	local row = tbl:tag('tr')&lt;br /&gt;
&lt;br /&gt;
	if index == 1 and args.imageleft then&lt;br /&gt;
		row&lt;br /&gt;
			:tag('td')&lt;br /&gt;
				:addClass('navbox-image')&lt;br /&gt;
				:addClass(args.imageclass)&lt;br /&gt;
				:css('width', '1px')               -- Minimize width&lt;br /&gt;
				:css('padding', '0px 2px 0px 0px')&lt;br /&gt;
				:cssText(args.imageleftstyle)&lt;br /&gt;
				:attr('rowspan', #listnums)&lt;br /&gt;
				:tag('div')&lt;br /&gt;
					:wikitext(processItem(args.imageleft))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args['group' .. listnum] then&lt;br /&gt;
		local groupCell = row:tag('th')&lt;br /&gt;
&lt;br /&gt;
		-- id for aria-labelledby attribute, if lone group with no title or above&lt;br /&gt;
		if listnum == 1 and not (args.title or args.above or args.group2) then&lt;br /&gt;
			groupCell&lt;br /&gt;
				:attr('id', mw.uri.anchorEncode(args.group1))&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		groupCell&lt;br /&gt;
			:attr('scope', 'row')&lt;br /&gt;
			:addClass('navbox-group')&lt;br /&gt;
			:addClass(args.groupclass)&lt;br /&gt;
			:cssText(args.basestyle)&lt;br /&gt;
			:css('width', args.groupwidth or '1%') -- If groupwidth not specified, minimize width&lt;br /&gt;
&lt;br /&gt;
		groupCell&lt;br /&gt;
			:cssText(args.groupstyle)&lt;br /&gt;
			:cssText(args['group' .. listnum .. 'style'])&lt;br /&gt;
			:wikitext(args['group' .. listnum])&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local listCell = row:tag('td')&lt;br /&gt;
&lt;br /&gt;
	if args['group' .. listnum] then&lt;br /&gt;
		listCell&lt;br /&gt;
			:css('text-align', 'left')&lt;br /&gt;
			:css('border-left-width', '2px')&lt;br /&gt;
			:css('border-left-style', 'solid')&lt;br /&gt;
	else&lt;br /&gt;
		listCell:attr('colspan', 2)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not args.groupwidth then&lt;br /&gt;
		listCell:css('width', '100%')&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local rowstyle  -- usually nil so cssText(rowstyle) usually adds nothing&lt;br /&gt;
	if index % 2 == 1 then&lt;br /&gt;
		rowstyle = args.oddstyle&lt;br /&gt;
	else&lt;br /&gt;
		rowstyle = args.evenstyle&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local listText = args['list' .. listnum]&lt;br /&gt;
	local oddEven = ODD_EVEN_MARKER&lt;br /&gt;
	if listText:sub(1, 12) == '&amp;lt;/div&amp;gt;&amp;lt;table' then&lt;br /&gt;
		-- Assume list text is for a subgroup navbox so no automatic striping for this row.&lt;br /&gt;
		oddEven = listText:find('&amp;lt;th[^&amp;gt;]*&amp;quot;navbox%-title&amp;quot;') and RESTART_MARKER or 'odd'&lt;br /&gt;
	end&lt;br /&gt;
	listCell&lt;br /&gt;
		:css('padding', '0px')&lt;br /&gt;
		:cssText(args.liststyle)&lt;br /&gt;
		:cssText(rowstyle)&lt;br /&gt;
		:cssText(args['list' .. listnum .. 'style'])&lt;br /&gt;
		:addClass('navbox-list')&lt;br /&gt;
		:addClass('navbox-' .. oddEven)&lt;br /&gt;
		:addClass(args.listclass)&lt;br /&gt;
		:addClass(args['list' .. listnum .. 'class'])&lt;br /&gt;
		:tag('div')&lt;br /&gt;
			:css('padding', (index == 1 and args.list1padding) or args.listpadding or '0em 0.25em')&lt;br /&gt;
			:wikitext(processItem(listText, args.nowrapitems))&lt;br /&gt;
&lt;br /&gt;
	if index == 1 and args.image then&lt;br /&gt;
		row&lt;br /&gt;
			:tag('td')&lt;br /&gt;
				:addClass('navbox-image')&lt;br /&gt;
				:addClass(args.imageclass)&lt;br /&gt;
				:css('width', '1px')               -- Minimize width&lt;br /&gt;
				:css('padding', '0px 0px 0px 2px')&lt;br /&gt;
				:cssText(args.imagestyle)&lt;br /&gt;
				:attr('rowspan', #listnums)&lt;br /&gt;
				:tag('div')&lt;br /&gt;
					:wikitext(processItem(args.image))&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
--   Tracking categories&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
local function needsHorizontalLists()&lt;br /&gt;
	if border == 'subgroup' or args.tracking == 'no' then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	local listClasses = {&lt;br /&gt;
		['plainlist'] = true, ['hlist'] = true, ['hlist hnum'] = true,&lt;br /&gt;
		['hlist hwrap'] = true, ['hlist vcard'] = true, ['vcard hlist'] = true,&lt;br /&gt;
		['hlist vevent'] = true,&lt;br /&gt;
	}&lt;br /&gt;
	return not (listClasses[args.listclass] or listClasses[args.bodyclass])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function hasBackgroundColors()&lt;br /&gt;
	for _, key in ipairs({'titlestyle', 'groupstyle', 'basestyle', 'abovestyle', 'belowstyle'}) do&lt;br /&gt;
		if tostring(args[key]):find('background', 1, true) then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function hasBorders()&lt;br /&gt;
	for _, key in ipairs({'groupstyle', 'basestyle', 'abovestyle', 'belowstyle'}) do&lt;br /&gt;
		if tostring(args[key]):find('border', 1, true) then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function isIllegible()&lt;br /&gt;
	local styleratio = require('Module:Color contrast')._styleratio&lt;br /&gt;
&lt;br /&gt;
	for key, style in pairs(args) do&lt;br /&gt;
		if tostring(key):match(&amp;quot;style$&amp;quot;) then&lt;br /&gt;
			if styleratio{mw.text.unstripNoWiki(style)} &amp;lt; 4.5 then&lt;br /&gt;
				return true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getTrackingCategories()&lt;br /&gt;
	local cats = {}&lt;br /&gt;
	if needsHorizontalLists() then table.insert(cats, 'Navigational boxes without horizontal lists') end&lt;br /&gt;
	if hasBackgroundColors() then table.insert(cats, 'Navboxes using background colours') end&lt;br /&gt;
	if isIllegible() then table.insert(cats, 'Potentially illegible navboxes') end&lt;br /&gt;
	if hasBorders() then table.insert(cats, 'Navboxes using borders') end&lt;br /&gt;
	return cats&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderTrackingCategories(builder)&lt;br /&gt;
	local title = mw.title.getCurrentTitle()&lt;br /&gt;
	if title.namespace ~= 10 then return end -- not in template space&lt;br /&gt;
	local subpage = title.subpageText&lt;br /&gt;
	if subpage == 'doc' or subpage == 'sandbox' or subpage == 'testcases' then return end&lt;br /&gt;
&lt;br /&gt;
	for _, cat in ipairs(getTrackingCategories()) do&lt;br /&gt;
		builder:wikitext('[[Category:' .. cat .. ']]')&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
--   Main navbox tables&lt;br /&gt;
--&lt;br /&gt;
local function renderMainTable()&lt;br /&gt;
	local tbl = mw.html.create('table')&lt;br /&gt;
		:addClass('nowraplinks')&lt;br /&gt;
		:addClass(args.bodyclass)&lt;br /&gt;
&lt;br /&gt;
	if args.title and (args.state ~= 'plain' and args.state ~= 'off') then&lt;br /&gt;
		if args.state == 'collapsed' then args.state = 'mw-collapsed' end&lt;br /&gt;
		tbl&lt;br /&gt;
			:addClass('mw-collapsible')&lt;br /&gt;
			:addClass(args.state or 'autocollapse')&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	tbl:css('border-spacing', 0)&lt;br /&gt;
	if border == 'subgroup' or border == 'none' then&lt;br /&gt;
		tbl&lt;br /&gt;
			:addClass('navbox-subgroup')&lt;br /&gt;
			:cssText(args.bodystyle)&lt;br /&gt;
			:cssText(args.style)&lt;br /&gt;
	else  -- regular navbox - bodystyle and style will be applied to the wrapper table&lt;br /&gt;
		tbl&lt;br /&gt;
			:addClass('navbox-inner')&lt;br /&gt;
			:css('background', 'transparent')&lt;br /&gt;
			:css('color', 'inherit')&lt;br /&gt;
	end&lt;br /&gt;
	tbl:cssText(args.innerstyle)&lt;br /&gt;
&lt;br /&gt;
	renderTitleRow(tbl)&lt;br /&gt;
	renderAboveRow(tbl)&lt;br /&gt;
	for i, listnum in ipairs(listnums) do&lt;br /&gt;
		renderListRow(tbl, i, listnum)&lt;br /&gt;
	end&lt;br /&gt;
	renderBelowRow(tbl)&lt;br /&gt;
&lt;br /&gt;
	return tbl&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._navbox(navboxArgs)&lt;br /&gt;
	args = navboxArgs&lt;br /&gt;
	listnums = {}&lt;br /&gt;
&lt;br /&gt;
	for k, _ in pairs(args) do&lt;br /&gt;
		if type(k) == 'string' then&lt;br /&gt;
			local listnum = k:match('^list(%d+)$')&lt;br /&gt;
			if listnum then table.insert(listnums, tonumber(listnum)) end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(listnums)&lt;br /&gt;
&lt;br /&gt;
	border = mw.text.trim(args.border or args[1] or '')&lt;br /&gt;
	if border == 'child' then&lt;br /&gt;
		border = 'subgroup'&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- render the main body of the navbox&lt;br /&gt;
	local tbl = renderMainTable()&lt;br /&gt;
&lt;br /&gt;
	-- render the appropriate wrapper around the navbox, depending on the border param&lt;br /&gt;
	local res = mw.html.create()&lt;br /&gt;
	if border == 'none' then&lt;br /&gt;
		local nav = res:tag('div')&lt;br /&gt;
			:attr('role', 'navigation')&lt;br /&gt;
			:node(tbl)&lt;br /&gt;
		-- aria-labelledby title, otherwise above, otherwise lone group&lt;br /&gt;
		if args.title or args.above or (args.group1 and not args.group2) then&lt;br /&gt;
			nav:attr('aria-labelledby', mw.uri.anchorEncode(args.title or args.above or args.group1))&lt;br /&gt;
		else&lt;br /&gt;
			nav:attr('aria-label', 'Navbox')&lt;br /&gt;
		end&lt;br /&gt;
	elseif border == 'subgroup' then&lt;br /&gt;
		-- We assume that this navbox is being rendered in a list cell of a parent navbox, and is&lt;br /&gt;
		-- therefore inside a div with padding:0em 0.25em. We start with a &amp;lt;/div&amp;gt; to avoid the&lt;br /&gt;
		-- padding being applied, and at the end add a &amp;lt;div&amp;gt; to balance out the parent's &amp;lt;/div&amp;gt;&lt;br /&gt;
		res&lt;br /&gt;
			:wikitext('&amp;lt;/div&amp;gt;')&lt;br /&gt;
			:node(tbl)&lt;br /&gt;
			:wikitext('&amp;lt;div&amp;gt;')&lt;br /&gt;
	else&lt;br /&gt;
		local nav = res:tag('div')&lt;br /&gt;
			:attr('role', 'navigation')&lt;br /&gt;
			:addClass('navbox')&lt;br /&gt;
			:addClass(args.navboxclass)&lt;br /&gt;
			:cssText(args.bodystyle)&lt;br /&gt;
			:cssText(args.style)&lt;br /&gt;
			:css('padding', '3px')&lt;br /&gt;
			:node(tbl)&lt;br /&gt;
		-- aria-labelledby title, otherwise above, otherwise lone group&lt;br /&gt;
		if args.title or args.above or (args.group1 and not args.group2) then&lt;br /&gt;
			nav:attr('aria-labelledby', mw.uri.anchorEncode(args.title or args.above or args.group1))&lt;br /&gt;
		else&lt;br /&gt;
			nav:attr('aria-label', 'Navbox')&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if (args.nocat or 'false'):lower() == 'false' then&lt;br /&gt;
		renderTrackingCategories(res)&lt;br /&gt;
	end&lt;br /&gt;
	return striped(tostring(res))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.navbox(frame)&lt;br /&gt;
	if not getArgs then&lt;br /&gt;
		getArgs = require('Module:Arguments').getArgs&lt;br /&gt;
	end&lt;br /&gt;
	args = getArgs(frame, {wrappers = {'Template:Navbox', 'Template:Navbox subgroup'}})&lt;br /&gt;
	if frame.args.border then&lt;br /&gt;
		-- This allows Template:Navbox_subgroup to use {{#invoke:Navbox|navbox|border=...}}.&lt;br /&gt;
		args.border = frame.args.border&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Read the arguments in the order they'll be output in, to make references number in the right order.&lt;br /&gt;
	local _&lt;br /&gt;
	_ = args.title&lt;br /&gt;
	_ = args.above&lt;br /&gt;
	for i = 1, 20 do&lt;br /&gt;
		_ = args[&amp;quot;group&amp;quot; .. tostring(i)]&lt;br /&gt;
		_ = args[&amp;quot;list&amp;quot; .. tostring(i)]&lt;br /&gt;
	end&lt;br /&gt;
	_ = args.below&lt;br /&gt;
&lt;br /&gt;
	return p._navbox(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=Module:Message_box/configuration&amp;diff=1336</id>
		<title>Module:Message box/configuration</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=Module:Message_box/configuration&amp;diff=1336"/>
		<updated>2019-09-06T09:28:18Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--------------------------------------------------------------------------------&lt;br /&gt;
--                          Message box configuration                         --&lt;br /&gt;
--                                                                            --&lt;br /&gt;
-- This module contains configuration data for [[Module:Message box]].        --&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
	ambox = {&lt;br /&gt;
		types = {&lt;br /&gt;
			speedy = {&lt;br /&gt;
				class = 'ambox-speedy',&lt;br /&gt;
				image = 'Ambox warning pn.svg'&lt;br /&gt;
			},&lt;br /&gt;
			delete = {&lt;br /&gt;
				class = 'ambox-delete',&lt;br /&gt;
				image = 'Ambox warning pn.svg'&lt;br /&gt;
			},&lt;br /&gt;
			content = {&lt;br /&gt;
				class = 'ambox-content',&lt;br /&gt;
				image = 'Ambox important.svg'&lt;br /&gt;
			},&lt;br /&gt;
			style = {&lt;br /&gt;
				class = 'ambox-style',&lt;br /&gt;
				image = 'Edit-clear.svg'&lt;br /&gt;
			},&lt;br /&gt;
			move = {&lt;br /&gt;
				class = 'ambox-move',&lt;br /&gt;
				image = 'Merge-split-transwiki default.svg'&lt;br /&gt;
			},&lt;br /&gt;
			protection = {&lt;br /&gt;
				class = 'ambox-protection',&lt;br /&gt;
				image = 'Semi-protection-shackle-keyhole.svg'&lt;br /&gt;
			},&lt;br /&gt;
			notice = {&lt;br /&gt;
				class = 'ambox-notice',&lt;br /&gt;
				image = 'Information icon4.svg'&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		default                     = 'notice',&lt;br /&gt;
		allowBlankParams            = {'talk', 'sect', 'date', 'issue', 'fix', 'subst', 'hidden'},&lt;br /&gt;
		allowSmall                  = true,&lt;br /&gt;
		smallParam                  = 'left',&lt;br /&gt;
		smallClass                  = 'mbox-small-left',&lt;br /&gt;
		substCheck                  = true,&lt;br /&gt;
		classes                     = {'metadata', 'ambox'},&lt;br /&gt;
		imageEmptyCell              = true,&lt;br /&gt;
		imageCheckBlank             = true,&lt;br /&gt;
		imageSmallSize              = '20x20px',&lt;br /&gt;
		imageCellDiv                = true,&lt;br /&gt;
		useCollapsibleTextFields    = true,&lt;br /&gt;
		imageRightNone              = true,&lt;br /&gt;
		sectionDefault              = 'article',&lt;br /&gt;
		allowMainspaceCategories    = true,&lt;br /&gt;
		templateCategory            = 'Article message templates',&lt;br /&gt;
	        templateCategoryRequireName = true,&lt;br /&gt;
		templateErrorCategory       = 'Article message templates with missing parameters',&lt;br /&gt;
		templateErrorParamsToCheck  = {'issue', 'fix', 'subst'},&lt;br /&gt;
		removalNotice               = '[[Help:Maintenance template removal|Learn how and when to remove this template message]]'&lt;br /&gt;
	},&lt;br /&gt;
	&lt;br /&gt;
	cmbox = {&lt;br /&gt;
		types = {&lt;br /&gt;
			speedy = {&lt;br /&gt;
				class = 'cmbox-speedy',&lt;br /&gt;
				image = 'Ambox warning pn.svg'&lt;br /&gt;
			},&lt;br /&gt;
			delete = {&lt;br /&gt;
				class = 'cmbox-delete',&lt;br /&gt;
				image = 'Ambox warning pn.svg'&lt;br /&gt;
			},&lt;br /&gt;
			content = {&lt;br /&gt;
				class = 'cmbox-content',&lt;br /&gt;
				image = 'Ambox important.svg'&lt;br /&gt;
			},&lt;br /&gt;
			style = {&lt;br /&gt;
				class = 'cmbox-style',&lt;br /&gt;
				image = 'Edit-clear.svg'&lt;br /&gt;
			},&lt;br /&gt;
			move = {&lt;br /&gt;
				class = 'cmbox-move',&lt;br /&gt;
				image = 'Merge-split-transwiki default.svg'&lt;br /&gt;
			},&lt;br /&gt;
			protection = {&lt;br /&gt;
				class = 'cmbox-protection',&lt;br /&gt;
				image = 'Semi-protection-shackle-keyhole.svg'&lt;br /&gt;
			},&lt;br /&gt;
			notice = {&lt;br /&gt;
				class = 'cmbox-notice',&lt;br /&gt;
				image = 'Information icon4.svg'&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		default              = 'notice',&lt;br /&gt;
		showInvalidTypeError = true,&lt;br /&gt;
		classes              = {'cmbox'},&lt;br /&gt;
		imageEmptyCell       = true&lt;br /&gt;
	},&lt;br /&gt;
	&lt;br /&gt;
	fmbox = {&lt;br /&gt;
		types = {&lt;br /&gt;
			warning = {&lt;br /&gt;
				class = 'fmbox-warning',&lt;br /&gt;
				image = 'Ambox warning pn.svg'&lt;br /&gt;
			},&lt;br /&gt;
			editnotice = {&lt;br /&gt;
				class = 'fmbox-editnotice',&lt;br /&gt;
				image = 'Information icon4.svg'&lt;br /&gt;
			},&lt;br /&gt;
			system = {&lt;br /&gt;
				class = 'fmbox-system',&lt;br /&gt;
				image = 'Information icon4.svg'&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		default              = 'system',&lt;br /&gt;
		showInvalidTypeError = true,&lt;br /&gt;
		classes              = {'fmbox'},&lt;br /&gt;
		imageEmptyCell       = false,&lt;br /&gt;
		imageRightNone       = false&lt;br /&gt;
	},&lt;br /&gt;
	&lt;br /&gt;
	imbox = {&lt;br /&gt;
		types = {&lt;br /&gt;
			speedy = {&lt;br /&gt;
				class = 'imbox-speedy',&lt;br /&gt;
				image = 'Ambox warning pn.svg'&lt;br /&gt;
			},&lt;br /&gt;
			delete = {&lt;br /&gt;
				class = 'imbox-delete',&lt;br /&gt;
				image = 'Ambox warning pn.svg'&lt;br /&gt;
			},&lt;br /&gt;
			content = {&lt;br /&gt;
				class = 'imbox-content',&lt;br /&gt;
				image = 'Ambox important.svg'&lt;br /&gt;
			},&lt;br /&gt;
			style = {&lt;br /&gt;
				class = 'imbox-style',&lt;br /&gt;
				image = 'Edit-clear.svg'&lt;br /&gt;
			},&lt;br /&gt;
			move = {&lt;br /&gt;
				class = 'imbox-move',&lt;br /&gt;
				image = 'Merge-split-transwiki default.svg'&lt;br /&gt;
			},&lt;br /&gt;
			protection = {&lt;br /&gt;
				class = 'imbox-protection',&lt;br /&gt;
				image = 'Semi-protection-shackle-keyhole.svg'&lt;br /&gt;
			},&lt;br /&gt;
			license = {&lt;br /&gt;
				class = 'imbox-license licensetpl',&lt;br /&gt;
				image = 'Imbox license.png' -- @todo We need an SVG version of this&lt;br /&gt;
			},&lt;br /&gt;
			featured = {&lt;br /&gt;
				class = 'imbox-featured',&lt;br /&gt;
				image = 'Cscr-featured.svg'&lt;br /&gt;
			},&lt;br /&gt;
			notice = {&lt;br /&gt;
				class = 'imbox-notice',&lt;br /&gt;
				image = 'Information icon4.svg'&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		default              = 'notice',&lt;br /&gt;
		showInvalidTypeError = true,&lt;br /&gt;
		classes              = {'imbox'},&lt;br /&gt;
		imageEmptyCell       = true,&lt;br /&gt;
		below                = true,&lt;br /&gt;
		templateCategory     = 'File message boxes'&lt;br /&gt;
	},&lt;br /&gt;
	&lt;br /&gt;
	ombox = {&lt;br /&gt;
		types = {&lt;br /&gt;
			speedy = {&lt;br /&gt;
				class = 'ombox-speedy',&lt;br /&gt;
				image = 'Ambox warning pn.svg'&lt;br /&gt;
			},&lt;br /&gt;
			delete = {&lt;br /&gt;
				class = 'ombox-delete',&lt;br /&gt;
				image = 'Ambox warning pn.svg'&lt;br /&gt;
			},&lt;br /&gt;
			content = {&lt;br /&gt;
				class = 'ombox-content',&lt;br /&gt;
				image = 'Ambox important.svg'&lt;br /&gt;
			},&lt;br /&gt;
			style = {&lt;br /&gt;
				class = 'ombox-style',&lt;br /&gt;
				image = 'Edit-clear.svg'&lt;br /&gt;
			},&lt;br /&gt;
			move = {&lt;br /&gt;
				class = 'ombox-move',&lt;br /&gt;
				image = 'Merge-split-transwiki default.svg'&lt;br /&gt;
			},&lt;br /&gt;
			protection = {&lt;br /&gt;
				class = 'ombox-protection',&lt;br /&gt;
				image = 'Semi-protection-shackle-keyhole.svg'&lt;br /&gt;
			},&lt;br /&gt;
			notice = {&lt;br /&gt;
				class = 'ombox-notice',&lt;br /&gt;
				image = 'Information icon4.svg'&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		default              = 'notice',&lt;br /&gt;
		showInvalidTypeError = true,&lt;br /&gt;
		classes              = {'ombox'},&lt;br /&gt;
		allowSmall           = true,&lt;br /&gt;
		imageEmptyCell       = true,&lt;br /&gt;
		imageRightNone       = true&lt;br /&gt;
	},&lt;br /&gt;
	&lt;br /&gt;
	tmbox = {&lt;br /&gt;
		types = {&lt;br /&gt;
			speedy = {&lt;br /&gt;
				class = 'tmbox-speedy',&lt;br /&gt;
				image = 'Ambox warning pn.svg'&lt;br /&gt;
			},&lt;br /&gt;
			delete = {&lt;br /&gt;
				class = 'tmbox-delete',&lt;br /&gt;
				image = 'Ambox warning pn.svg'&lt;br /&gt;
			},&lt;br /&gt;
			content = {&lt;br /&gt;
				class = 'tmbox-content',&lt;br /&gt;
				image = 'Ambox important.svg'&lt;br /&gt;
			},&lt;br /&gt;
			style = {&lt;br /&gt;
				class = 'tmbox-style',&lt;br /&gt;
				image = 'Edit-clear.svg'&lt;br /&gt;
			},&lt;br /&gt;
			move = {&lt;br /&gt;
				class = 'tmbox-move',&lt;br /&gt;
				image = 'Merge-split-transwiki default.svg'&lt;br /&gt;
			},&lt;br /&gt;
			protection = {&lt;br /&gt;
				class = 'tmbox-protection',&lt;br /&gt;
				image = 'Semi-protection-shackle-keyhole.svg'&lt;br /&gt;
			},&lt;br /&gt;
			notice = {&lt;br /&gt;
				class = 'tmbox-notice',&lt;br /&gt;
				image = 'Information icon4.svg'&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		default              = 'notice',&lt;br /&gt;
		showInvalidTypeError = true,&lt;br /&gt;
		classes              = {'tmbox'},&lt;br /&gt;
		allowSmall           = true,&lt;br /&gt;
		imageRightNone       = true,&lt;br /&gt;
		imageEmptyCell       = true,&lt;br /&gt;
		imageEmptyCellStyle  = true,&lt;br /&gt;
		templateCategory     = 'Talk message boxes'&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=Module:Navbar&amp;diff=1338</id>
		<title>Module:Navbar</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=Module:Navbar&amp;diff=1338"/>
		<updated>2019-09-06T09:28:18Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
local getArgs&lt;br /&gt;
local ul&lt;br /&gt;
&lt;br /&gt;
function p.addItem (mini, full, link, descrip, args, url)&lt;br /&gt;
	local l&lt;br /&gt;
	if url then&lt;br /&gt;
		l = {'[', '', ']'}&lt;br /&gt;
	else&lt;br /&gt;
		l = {'[[', '|', ']]'}&lt;br /&gt;
	end&lt;br /&gt;
	ul:tag('li')&lt;br /&gt;
		:addClass('nv-'..full)&lt;br /&gt;
		:wikitext(l[1] .. link .. l[2])&lt;br /&gt;
		:tag(args.mini and 'abbr' or 'span')&lt;br /&gt;
			:attr('title', descrip..' this template')&lt;br /&gt;
			:cssText(args.fontstyle)&lt;br /&gt;
			:wikitext(args.mini and mini or full)&lt;br /&gt;
			:done()&lt;br /&gt;
		:wikitext(l[3])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.brackets (position, c, args, div)&lt;br /&gt;
	if args.brackets then&lt;br /&gt;
		div&lt;br /&gt;
			:tag('span')&lt;br /&gt;
				:css('margin-'..position, '-0.125em')&lt;br /&gt;
				:cssText(args.fontstyle)&lt;br /&gt;
				:wikitext(c)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._navbar(args)&lt;br /&gt;
	local show = {true, true, true, false, false, false}&lt;br /&gt;
	local titleArg = 1&lt;br /&gt;
	&lt;br /&gt;
	if args.collapsible then&lt;br /&gt;
		titleArg = 2&lt;br /&gt;
		if not args.plain then args.mini = 1 end&lt;br /&gt;
		if args.fontcolor then&lt;br /&gt;
			args.fontstyle = 'color:' .. args.fontcolor .. ';'&lt;br /&gt;
		end&lt;br /&gt;
		args.style = 'float:left; text-align:left'&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.template then&lt;br /&gt;
		titleArg = 'template'&lt;br /&gt;
		show = {true, false, false, false, false, false}&lt;br /&gt;
		local index = {t = 2, d = 2, e = 3, h = 4, m = 5, w = 6, talk = 2, edit = 3, hist = 4, move = 5, watch = 6}&lt;br /&gt;
		for k,v in ipairs(require ('Module:TableTools').compressSparseArray(args)) do&lt;br /&gt;
			local num = index[v]&lt;br /&gt;
			if num then show[num] = true end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.noedit then show[3] = false end&lt;br /&gt;
	&lt;br /&gt;
	local titleText = args[titleArg] or (':' .. mw.getCurrentFrame():getParent():getTitle())&lt;br /&gt;
	local title = mw.title.new(mw.text.trim(titleText), 'Template')&lt;br /&gt;
	if not title then&lt;br /&gt;
		error('Invalid title ' .. titleText)&lt;br /&gt;
	end&lt;br /&gt;
	local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or ''&lt;br /&gt;
	&lt;br /&gt;
	local div = mw.html.create():tag('div')&lt;br /&gt;
	div&lt;br /&gt;
		:addClass('plainlinks')&lt;br /&gt;
		:addClass('hlist')&lt;br /&gt;
		:addClass('navbar')&lt;br /&gt;
		:cssText(args.style)&lt;br /&gt;
&lt;br /&gt;
	if args.mini then div:addClass('mini') end&lt;br /&gt;
&lt;br /&gt;
	if not (args.mini or args.plain) then&lt;br /&gt;
		div&lt;br /&gt;
			:tag('span')&lt;br /&gt;
				:css('word-spacing', 0)&lt;br /&gt;
				:cssText(args.fontstyle)&lt;br /&gt;
				:wikitext(args.text or 'This box:')&lt;br /&gt;
				:wikitext(' ')&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	p.brackets('right', '&amp;amp;#91; ', args, div)&lt;br /&gt;
	&lt;br /&gt;
	ul = div:tag('ul')&lt;br /&gt;
	if show[1] then p.addItem('v', 'view', title.fullText, 'View', args) end&lt;br /&gt;
	if show[2] then p.addItem('t', 'talk', talkpage, 'Discuss', args) end&lt;br /&gt;
	if show[3] then p.addItem('e', 'edit', title:fullUrl('action=edit'), 'Edit', args, true) end&lt;br /&gt;
	if show[4] then p.addItem('h', 'hist', title:fullUrl('action=history'), 'History of', args, true) end&lt;br /&gt;
	if show[5] then&lt;br /&gt;
		local move = mw.title.new ('Special:Movepage')&lt;br /&gt;
		p.addItem('m', 'move', move:fullUrl('target='..title.fullText), 'Move', args, true) end&lt;br /&gt;
	if show[6] then p.addItem('w', 'watch', title:fullUrl('action=watch'), 'Watch', args, true) end&lt;br /&gt;
	&lt;br /&gt;
	p.brackets('left', ' &amp;amp;#93;', args, div)&lt;br /&gt;
	&lt;br /&gt;
	if args.collapsible then&lt;br /&gt;
		div&lt;br /&gt;
			:done()&lt;br /&gt;
		:tag('div')&lt;br /&gt;
			:css('font-size', '114%')&lt;br /&gt;
			:css('margin', args.mini and '0 4em' or '0 7em')&lt;br /&gt;
			:cssText(args.fontstyle)&lt;br /&gt;
			:wikitext(args[1])&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return tostring(div:done())&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.navbar(frame)&lt;br /&gt;
	if not getArgs then&lt;br /&gt;
		getArgs = require('Module:Arguments').getArgs&lt;br /&gt;
	end&lt;br /&gt;
	return p._navbar(getArgs(frame))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=Module:Message_box&amp;diff=1334</id>
		<title>Module:Message box</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=Module:Message_box&amp;diff=1334"/>
		<updated>2019-09-06T09:28:17Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This is a meta-module for producing message box templates, including&lt;br /&gt;
-- {{mbox}}, {{ambox}}, {{imbox}}, {{tmbox}}, {{ombox}}, {{cmbox}} and {{fmbox}}.&lt;br /&gt;
&lt;br /&gt;
-- Load necessary modules.&lt;br /&gt;
require('Module:No globals')&lt;br /&gt;
local getArgs&lt;br /&gt;
local yesno = require('Module:Yesno')&lt;br /&gt;
&lt;br /&gt;
-- Get a language object for formatDate and ucfirst.&lt;br /&gt;
local lang = mw.language.getContentLanguage()&lt;br /&gt;
&lt;br /&gt;
-- Define constants&lt;br /&gt;
local CONFIG_MODULE = 'Module:Message box/configuration'&lt;br /&gt;
local DEMOSPACES = {talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'}&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Helper functions&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function getTitleObject(...)&lt;br /&gt;
	-- Get the title object, passing the function through pcall&lt;br /&gt;
	-- in case we are over the expensive function count limit.&lt;br /&gt;
	local success, title = pcall(mw.title.new, ...)&lt;br /&gt;
	if success then&lt;br /&gt;
		return title&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function union(t1, t2)&lt;br /&gt;
	-- Returns the union of two arrays.&lt;br /&gt;
	local vals = {}&lt;br /&gt;
	for i, v in ipairs(t1) do&lt;br /&gt;
		vals[v] = true&lt;br /&gt;
	end&lt;br /&gt;
	for i, v in ipairs(t2) do&lt;br /&gt;
		vals[v] = true&lt;br /&gt;
	end&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	for k in pairs(vals) do&lt;br /&gt;
		table.insert(ret, k)&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(ret)&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getArgNums(args, prefix)&lt;br /&gt;
	local nums = {}&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		local num = mw.ustring.match(tostring(k), '^' .. prefix .. '([1-9]%d*)$')&lt;br /&gt;
		if num then&lt;br /&gt;
			table.insert(nums, tonumber(num))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(nums)&lt;br /&gt;
	return nums&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Box class definition&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local MessageBox = {}&lt;br /&gt;
MessageBox.__index = MessageBox&lt;br /&gt;
&lt;br /&gt;
function MessageBox.new(boxType, args, cfg)&lt;br /&gt;
	args = args or {}&lt;br /&gt;
	local obj = {}&lt;br /&gt;
&lt;br /&gt;
	-- Set the title object and the namespace.&lt;br /&gt;
	obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle()&lt;br /&gt;
&lt;br /&gt;
	-- Set the config for our box type.&lt;br /&gt;
	obj.cfg = cfg[boxType]&lt;br /&gt;
	if not obj.cfg then&lt;br /&gt;
		local ns = obj.title.namespace&lt;br /&gt;
		-- boxType is &amp;quot;mbox&amp;quot; or invalid input&lt;br /&gt;
		if args.demospace and args.demospace ~= '' then&lt;br /&gt;
			-- implement demospace parameter of mbox&lt;br /&gt;
			local demospace = string.lower(args.demospace)&lt;br /&gt;
			if DEMOSPACES[demospace] then&lt;br /&gt;
				-- use template from DEMOSPACES&lt;br /&gt;
				obj.cfg = cfg[DEMOSPACES[demospace]]&lt;br /&gt;
			elseif string.find( demospace, 'talk' ) then&lt;br /&gt;
				-- demo as a talk page&lt;br /&gt;
				obj.cfg = cfg.tmbox&lt;br /&gt;
			else&lt;br /&gt;
				-- default to ombox&lt;br /&gt;
				obj.cfg = cfg.ombox&lt;br /&gt;
			end&lt;br /&gt;
		elseif ns == 0 then&lt;br /&gt;
			obj.cfg = cfg.ambox -- main namespace&lt;br /&gt;
		elseif ns == 6 then&lt;br /&gt;
			obj.cfg = cfg.imbox -- file namespace&lt;br /&gt;
		elseif ns == 14 then&lt;br /&gt;
			obj.cfg = cfg.cmbox -- category namespace&lt;br /&gt;
		else&lt;br /&gt;
			local nsTable = mw.site.namespaces[ns]&lt;br /&gt;
			if nsTable and nsTable.isTalk then&lt;br /&gt;
				obj.cfg = cfg.tmbox -- any talk namespace&lt;br /&gt;
			else&lt;br /&gt;
				obj.cfg = cfg.ombox -- other namespaces or invalid input&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set the arguments, and remove all blank arguments except for the ones&lt;br /&gt;
	-- listed in cfg.allowBlankParams.&lt;br /&gt;
	do&lt;br /&gt;
		local newArgs = {}&lt;br /&gt;
		for k, v in pairs(args) do&lt;br /&gt;
			if v ~= '' then&lt;br /&gt;
				newArgs[k] = v&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		for i, param in ipairs(obj.cfg.allowBlankParams or {}) do&lt;br /&gt;
			newArgs[param] = args[param]&lt;br /&gt;
		end&lt;br /&gt;
		obj.args = newArgs&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Define internal data structure.&lt;br /&gt;
	obj.categories = {}&lt;br /&gt;
	obj.classes = {}&lt;br /&gt;
	-- For lazy loading of [[Module:Category handler]].&lt;br /&gt;
	obj.hasCategories = false&lt;br /&gt;
&lt;br /&gt;
	return setmetatable(obj, MessageBox)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:addCat(ns, cat, sort)&lt;br /&gt;
	if not cat then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	if sort then&lt;br /&gt;
		cat = string.format('[[Category:%s|%s]]', cat, sort)&lt;br /&gt;
	else&lt;br /&gt;
		cat = string.format('[[Category:%s]]', cat)&lt;br /&gt;
	end&lt;br /&gt;
	self.hasCategories = true&lt;br /&gt;
	self.categories[ns] = self.categories[ns] or {}&lt;br /&gt;
	table.insert(self.categories[ns], cat)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:addClass(class)&lt;br /&gt;
	if not class then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	table.insert(self.classes, class)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:setParameters()&lt;br /&gt;
	local args = self.args&lt;br /&gt;
	local cfg = self.cfg&lt;br /&gt;
&lt;br /&gt;
	-- Get type data.&lt;br /&gt;
	self.type = args.type&lt;br /&gt;
	local typeData = cfg.types[self.type]&lt;br /&gt;
	self.invalidTypeError = cfg.showInvalidTypeError&lt;br /&gt;
		and self.type&lt;br /&gt;
		and not typeData&lt;br /&gt;
	typeData = typeData or cfg.types[cfg.default]&lt;br /&gt;
	self.typeClass = typeData.class&lt;br /&gt;
	self.typeImage = typeData.image&lt;br /&gt;
&lt;br /&gt;
	-- Find if the box has been wrongly substituted.&lt;br /&gt;
	self.isSubstituted = cfg.substCheck and args.subst == 'SUBST'&lt;br /&gt;
&lt;br /&gt;
	-- Find whether we are using a small message box.&lt;br /&gt;
	self.isSmall = cfg.allowSmall and (&lt;br /&gt;
		cfg.smallParam and args.small == cfg.smallParam&lt;br /&gt;
		or not cfg.smallParam and yesno(args.small)&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	-- Add attributes, classes and styles.&lt;br /&gt;
	self.id = args.id&lt;br /&gt;
	self.name = args.name&lt;br /&gt;
	if self.name then&lt;br /&gt;
		self:addClass('box-' .. string.gsub(self.name,' ','_'))&lt;br /&gt;
	end&lt;br /&gt;
	if yesno(args.plainlinks) ~= false then&lt;br /&gt;
		self:addClass('plainlinks')&lt;br /&gt;
	end&lt;br /&gt;
	for _, class in ipairs(cfg.classes or {}) do&lt;br /&gt;
		self:addClass(class)&lt;br /&gt;
	end&lt;br /&gt;
	if self.isSmall then&lt;br /&gt;
		self:addClass(cfg.smallClass or 'mbox-small')&lt;br /&gt;
	end&lt;br /&gt;
	self:addClass(self.typeClass)&lt;br /&gt;
	self:addClass(args.class)&lt;br /&gt;
	self.style = args.style&lt;br /&gt;
	self.attrs = args.attrs&lt;br /&gt;
&lt;br /&gt;
	-- Set text style.&lt;br /&gt;
	self.textstyle = args.textstyle&lt;br /&gt;
&lt;br /&gt;
	-- Find if we are on the template page or not. This functionality is only&lt;br /&gt;
	-- used if useCollapsibleTextFields is set, or if both cfg.templateCategory&lt;br /&gt;
	-- and cfg.templateCategoryRequireName are set.&lt;br /&gt;
	self.useCollapsibleTextFields = cfg.useCollapsibleTextFields&lt;br /&gt;
	if self.useCollapsibleTextFields&lt;br /&gt;
		or cfg.templateCategory&lt;br /&gt;
		and cfg.templateCategoryRequireName&lt;br /&gt;
	then&lt;br /&gt;
		if self.name then&lt;br /&gt;
			local templateName = mw.ustring.match(&lt;br /&gt;
				self.name,&lt;br /&gt;
				'^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$'&lt;br /&gt;
			) or self.name&lt;br /&gt;
			templateName = 'Template:' .. templateName&lt;br /&gt;
			self.templateTitle = getTitleObject(templateName)&lt;br /&gt;
		end&lt;br /&gt;
		self.isTemplatePage = self.templateTitle&lt;br /&gt;
			and mw.title.equals(self.title, self.templateTitle)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Process data for collapsible text fields. At the moment these are only&lt;br /&gt;
	-- used in {{ambox}}.&lt;br /&gt;
	if self.useCollapsibleTextFields then&lt;br /&gt;
		-- Get the self.issue value.&lt;br /&gt;
		if self.isSmall and args.smalltext then&lt;br /&gt;
			self.issue = args.smalltext&lt;br /&gt;
		else&lt;br /&gt;
			local sect&lt;br /&gt;
			if args.sect == '' then&lt;br /&gt;
				sect = 'This ' .. (cfg.sectionDefault or 'page')&lt;br /&gt;
			elseif type(args.sect) == 'string' then&lt;br /&gt;
				sect = 'This ' .. args.sect&lt;br /&gt;
			end&lt;br /&gt;
			local issue = args.issue&lt;br /&gt;
			issue = type(issue) == 'string' and issue ~= '' and issue or nil&lt;br /&gt;
			local text = args.text&lt;br /&gt;
			text = type(text) == 'string' and text or nil&lt;br /&gt;
			local issues = {}&lt;br /&gt;
			table.insert(issues, sect)&lt;br /&gt;
			table.insert(issues, issue)&lt;br /&gt;
			table.insert(issues, text)&lt;br /&gt;
			self.issue = table.concat(issues, ' ')&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Get the self.talk value.&lt;br /&gt;
		local talk = args.talk&lt;br /&gt;
		-- Show talk links on the template page or template subpages if the talk&lt;br /&gt;
		-- parameter is blank.&lt;br /&gt;
		if talk == ''&lt;br /&gt;
			and self.templateTitle&lt;br /&gt;
			and (&lt;br /&gt;
				mw.title.equals(self.templateTitle, self.title)&lt;br /&gt;
				or self.title:isSubpageOf(self.templateTitle)&lt;br /&gt;
			)&lt;br /&gt;
		then&lt;br /&gt;
			talk = '#'&lt;br /&gt;
		elseif talk == '' then&lt;br /&gt;
			talk = nil&lt;br /&gt;
		end&lt;br /&gt;
		if talk then&lt;br /&gt;
			-- If the talk value is a talk page, make a link to that page. Else&lt;br /&gt;
			-- assume that it's a section heading, and make a link to the talk&lt;br /&gt;
			-- page of the current page with that section heading.&lt;br /&gt;
			local talkTitle = getTitleObject(talk)&lt;br /&gt;
			local talkArgIsTalkPage = true&lt;br /&gt;
			if not talkTitle or not talkTitle.isTalkPage then&lt;br /&gt;
				talkArgIsTalkPage = false&lt;br /&gt;
				talkTitle = getTitleObject(&lt;br /&gt;
					self.title.text,&lt;br /&gt;
					mw.site.namespaces[self.title.namespace].talk.id&lt;br /&gt;
				)&lt;br /&gt;
			end&lt;br /&gt;
			if talkTitle and talkTitle.exists then&lt;br /&gt;
				local talkText = 'Relevant discussion may be found on'&lt;br /&gt;
				if talkArgIsTalkPage then&lt;br /&gt;
					talkText = string.format(&lt;br /&gt;
						'%s [[%s|%s]].',&lt;br /&gt;
						talkText,&lt;br /&gt;
						talk,&lt;br /&gt;
						talkTitle.prefixedText&lt;br /&gt;
					)&lt;br /&gt;
				else&lt;br /&gt;
					talkText = string.format(&lt;br /&gt;
						'%s the [[%s#%s|talk page]].',&lt;br /&gt;
						talkText,&lt;br /&gt;
						talkTitle.prefixedText,&lt;br /&gt;
						talk&lt;br /&gt;
					)&lt;br /&gt;
				end&lt;br /&gt;
				self.talk = talkText&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Get other values.&lt;br /&gt;
		self.fix = args.fix ~= '' and args.fix or nil&lt;br /&gt;
		local date&lt;br /&gt;
		if args.date and args.date ~= '' then&lt;br /&gt;
			date = args.date&lt;br /&gt;
		elseif args.date == '' and self.isTemplatePage then&lt;br /&gt;
			date = lang:formatDate('F Y')&lt;br /&gt;
		end&lt;br /&gt;
		if date then&lt;br /&gt;
			self.date = string.format(&amp;quot; &amp;lt;small class='date-container'&amp;gt;''(&amp;lt;span class='date'&amp;gt;%s&amp;lt;/span&amp;gt;)''&amp;lt;/small&amp;gt;&amp;quot;, date)&lt;br /&gt;
		end&lt;br /&gt;
		self.info = args.info&lt;br /&gt;
		if yesno(args.removalnotice) then&lt;br /&gt;
			self.removalNotice = cfg.removalNotice&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set the non-collapsible text field. At the moment this is used by all box&lt;br /&gt;
	-- types other than ambox, and also by ambox when small=yes.&lt;br /&gt;
	if self.isSmall then&lt;br /&gt;
		self.text = args.smalltext or args.text&lt;br /&gt;
	else&lt;br /&gt;
		self.text = args.text&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set the below row.&lt;br /&gt;
	self.below = cfg.below and args.below&lt;br /&gt;
&lt;br /&gt;
	-- General image settings.&lt;br /&gt;
	self.imageCellDiv = not self.isSmall and cfg.imageCellDiv&lt;br /&gt;
	self.imageEmptyCell = cfg.imageEmptyCell&lt;br /&gt;
	if cfg.imageEmptyCellStyle then&lt;br /&gt;
		self.imageEmptyCellStyle = 'border:none;padding:0px;width:1px'&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Left image settings.&lt;br /&gt;
	local imageLeft = self.isSmall and args.smallimage or args.image&lt;br /&gt;
	if cfg.imageCheckBlank and imageLeft ~= 'blank' and imageLeft ~= 'none'&lt;br /&gt;
		or not cfg.imageCheckBlank and imageLeft ~= 'none'&lt;br /&gt;
	then&lt;br /&gt;
		self.imageLeft = imageLeft&lt;br /&gt;
		if not imageLeft then&lt;br /&gt;
			local imageSize = self.isSmall&lt;br /&gt;
				and (cfg.imageSmallSize or '30x30px')&lt;br /&gt;
				or '40x40px'&lt;br /&gt;
			self.imageLeft = string.format('[[File:%s|%s|link=|alt=]]', self.typeImage&lt;br /&gt;
				or 'Imbox notice.png', imageSize)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Right image settings.&lt;br /&gt;
	local imageRight = self.isSmall and args.smallimageright or args.imageright&lt;br /&gt;
	if not (cfg.imageRightNone and imageRight == 'none') then&lt;br /&gt;
		self.imageRight = imageRight&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:setMainspaceCategories()&lt;br /&gt;
	local args = self.args&lt;br /&gt;
	local cfg = self.cfg&lt;br /&gt;
&lt;br /&gt;
	if not cfg.allowMainspaceCategories then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local nums = {}&lt;br /&gt;
	for _, prefix in ipairs{'cat', 'category', 'all'} do&lt;br /&gt;
		args[prefix .. '1'] = args[prefix]&lt;br /&gt;
		nums = union(nums, getArgNums(args, prefix))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- The following is roughly equivalent to the old {{Ambox/category}}.&lt;br /&gt;
	local date = args.date&lt;br /&gt;
	date = type(date) == 'string' and date&lt;br /&gt;
	local preposition = 'from'&lt;br /&gt;
	for _, num in ipairs(nums) do&lt;br /&gt;
		local mainCat = args['cat' .. tostring(num)]&lt;br /&gt;
			or args['category' .. tostring(num)]&lt;br /&gt;
		local allCat = args['all' .. tostring(num)]&lt;br /&gt;
		mainCat = type(mainCat) == 'string' and mainCat&lt;br /&gt;
		allCat = type(allCat) == 'string' and allCat&lt;br /&gt;
		if mainCat and date and date ~= '' then&lt;br /&gt;
			local catTitle = string.format('%s %s %s', mainCat, preposition, date)&lt;br /&gt;
			self:addCat(0, catTitle)&lt;br /&gt;
			catTitle = getTitleObject('Category:' .. catTitle)&lt;br /&gt;
			if not catTitle or not catTitle.exists then&lt;br /&gt;
				self:addCat(0, 'Articles with invalid date parameter in template')&lt;br /&gt;
			end&lt;br /&gt;
		elseif mainCat and (not date or date == '') then&lt;br /&gt;
			self:addCat(0, mainCat)&lt;br /&gt;
		end&lt;br /&gt;
		if allCat then&lt;br /&gt;
			self:addCat(0, allCat)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:setTemplateCategories()&lt;br /&gt;
	local args = self.args&lt;br /&gt;
	local cfg = self.cfg&lt;br /&gt;
&lt;br /&gt;
	-- Add template categories.&lt;br /&gt;
	if cfg.templateCategory then&lt;br /&gt;
		if cfg.templateCategoryRequireName then&lt;br /&gt;
			if self.isTemplatePage then&lt;br /&gt;
				self:addCat(10, cfg.templateCategory)&lt;br /&gt;
			end&lt;br /&gt;
		elseif not self.title.isSubpage then&lt;br /&gt;
			self:addCat(10, cfg.templateCategory)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add template error categories.&lt;br /&gt;
	if cfg.templateErrorCategory then&lt;br /&gt;
		local templateErrorCategory = cfg.templateErrorCategory&lt;br /&gt;
		local templateCat, templateSort&lt;br /&gt;
		if not self.name and not self.title.isSubpage then&lt;br /&gt;
			templateCat = templateErrorCategory&lt;br /&gt;
		elseif self.isTemplatePage then&lt;br /&gt;
			local paramsToCheck = cfg.templateErrorParamsToCheck or {}&lt;br /&gt;
			local count = 0&lt;br /&gt;
			for i, param in ipairs(paramsToCheck) do&lt;br /&gt;
				if not args[param] then&lt;br /&gt;
					count = count + 1&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if count &amp;gt; 0 then&lt;br /&gt;
				templateCat = templateErrorCategory&lt;br /&gt;
				templateSort = tostring(count)&lt;br /&gt;
			end&lt;br /&gt;
			if self.categoryNums and #self.categoryNums &amp;gt; 0 then&lt;br /&gt;
				templateCat = templateErrorCategory&lt;br /&gt;
				templateSort = 'C'&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		self:addCat(10, templateCat, templateSort)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:setAllNamespaceCategories()&lt;br /&gt;
	-- Set categories for all namespaces.&lt;br /&gt;
	if self.invalidTypeError then&lt;br /&gt;
		local allSort = (self.title.namespace == 0 and 'Main:' or '') .. self.title.prefixedText&lt;br /&gt;
		self:addCat('all', 'Wikipedia message box parameter needs fixing', allSort)&lt;br /&gt;
	end&lt;br /&gt;
	if self.isSubstituted then&lt;br /&gt;
		self:addCat('all', 'Pages with incorrectly substituted templates')&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:setCategories()&lt;br /&gt;
	if self.title.namespace == 0 then&lt;br /&gt;
		self:setMainspaceCategories()&lt;br /&gt;
	elseif self.title.namespace == 10 then&lt;br /&gt;
		self:setTemplateCategories()&lt;br /&gt;
	end&lt;br /&gt;
	self:setAllNamespaceCategories()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:renderCategories()&lt;br /&gt;
	if not self.hasCategories then&lt;br /&gt;
		-- No categories added, no need to pass them to Category handler so,&lt;br /&gt;
		-- if it was invoked, it would return the empty string.&lt;br /&gt;
		-- So we shortcut and return the empty string.&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	-- Convert category tables to strings and pass them through&lt;br /&gt;
	-- [[Module:Category handler]].&lt;br /&gt;
	return require('Module:Category handler')._main{&lt;br /&gt;
		main = table.concat(self.categories[0] or {}),&lt;br /&gt;
		template = table.concat(self.categories[10] or {}),&lt;br /&gt;
		all = table.concat(self.categories.all or {}),&lt;br /&gt;
		nocat = self.args.nocat,&lt;br /&gt;
		page = self.args.page&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:export()&lt;br /&gt;
	local root = mw.html.create()&lt;br /&gt;
&lt;br /&gt;
	-- Add the subst check error.&lt;br /&gt;
	if self.isSubstituted and self.name then&lt;br /&gt;
		root:tag('b')&lt;br /&gt;
			:addClass('error')&lt;br /&gt;
			:wikitext(string.format(&lt;br /&gt;
				'Template &amp;lt;code&amp;gt;%s[[Template:%s|%s]]%s&amp;lt;/code&amp;gt; has been incorrectly substituted.',&lt;br /&gt;
				mw.text.nowiki('{{'), self.name, self.name, mw.text.nowiki('}}')&lt;br /&gt;
			))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Create the box table.&lt;br /&gt;
	local boxTable = root:tag('table')&lt;br /&gt;
	boxTable:attr('id', self.id or nil)&lt;br /&gt;
	for i, class in ipairs(self.classes or {}) do&lt;br /&gt;
		boxTable:addClass(class or nil)&lt;br /&gt;
	end&lt;br /&gt;
	boxTable&lt;br /&gt;
		:cssText(self.style or nil)&lt;br /&gt;
		:attr('role', 'presentation')&lt;br /&gt;
&lt;br /&gt;
	if self.attrs then&lt;br /&gt;
		boxTable:attr(self.attrs)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add the left-hand image.&lt;br /&gt;
	local row = boxTable:tag('tr')&lt;br /&gt;
	if self.imageLeft then&lt;br /&gt;
		local imageLeftCell = row:tag('td'):addClass('mbox-image')&lt;br /&gt;
		if self.imageCellDiv then&lt;br /&gt;
			-- If we are using a div, redefine imageLeftCell so that the image&lt;br /&gt;
			-- is inside it. Divs use style=&amp;quot;width: 52px;&amp;quot;, which limits the&lt;br /&gt;
			-- image width to 52px. If any images in a div are wider than that,&lt;br /&gt;
			-- they may overlap with the text or cause other display problems.&lt;br /&gt;
			imageLeftCell = imageLeftCell:tag('div'):css('width', '52px')&lt;br /&gt;
		end&lt;br /&gt;
		imageLeftCell:wikitext(self.imageLeft or nil)&lt;br /&gt;
	elseif self.imageEmptyCell then&lt;br /&gt;
		-- Some message boxes define an empty cell if no image is specified, and&lt;br /&gt;
		-- some don't. The old template code in templates where empty cells are&lt;br /&gt;
		-- specified gives the following hint: &amp;quot;No image. Cell with some width&lt;br /&gt;
		-- or padding necessary for text cell to have 100% width.&amp;quot;&lt;br /&gt;
		row:tag('td')&lt;br /&gt;
			:addClass('mbox-empty-cell')&lt;br /&gt;
			:cssText(self.imageEmptyCellStyle or nil)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add the text.&lt;br /&gt;
	local textCell = row:tag('td'):addClass('mbox-text')&lt;br /&gt;
	if self.useCollapsibleTextFields then&lt;br /&gt;
		-- The message box uses advanced text parameters that allow things to be&lt;br /&gt;
		-- collapsible. At the moment, only ambox uses this.&lt;br /&gt;
		textCell:cssText(self.textstyle or nil)&lt;br /&gt;
		local textCellDiv = textCell:tag('div')&lt;br /&gt;
		textCellDiv&lt;br /&gt;
			:addClass('mbox-text-span')&lt;br /&gt;
			:wikitext(self.issue or nil)&lt;br /&gt;
		if (self.talk or self.fix) and not self.isSmall then&lt;br /&gt;
			textCellDiv:tag('span')&lt;br /&gt;
				:addClass('hide-when-compact')&lt;br /&gt;
				:wikitext(self.talk and (' ' .. self.talk) or nil)&lt;br /&gt;
				:wikitext(self.fix and (' ' .. self.fix) or nil)&lt;br /&gt;
		end&lt;br /&gt;
		textCellDiv:wikitext(self.date and (' ' .. self.date) or nil)&lt;br /&gt;
		if self.info and not self.isSmall then&lt;br /&gt;
			textCellDiv&lt;br /&gt;
				:tag('span')&lt;br /&gt;
				:addClass('hide-when-compact')&lt;br /&gt;
				:wikitext(self.info and (' ' .. self.info) or nil)&lt;br /&gt;
		end&lt;br /&gt;
		if self.removalNotice then&lt;br /&gt;
			textCellDiv:tag('small')&lt;br /&gt;
				:addClass('hide-when-compact')&lt;br /&gt;
				:tag('i')&lt;br /&gt;
					:wikitext(string.format(&amp;quot; (%s)&amp;quot;, self.removalNotice))&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		-- Default text formatting - anything goes.&lt;br /&gt;
		textCell&lt;br /&gt;
			:cssText(self.textstyle or nil)&lt;br /&gt;
			:wikitext(self.text or nil)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add the right-hand image.&lt;br /&gt;
	if self.imageRight then&lt;br /&gt;
		local imageRightCell = row:tag('td'):addClass('mbox-imageright')&lt;br /&gt;
		if self.imageCellDiv then&lt;br /&gt;
			-- If we are using a div, redefine imageRightCell so that the image&lt;br /&gt;
			-- is inside it.&lt;br /&gt;
			imageRightCell = imageRightCell:tag('div'):css('width', '52px')&lt;br /&gt;
		end&lt;br /&gt;
		imageRightCell&lt;br /&gt;
			:wikitext(self.imageRight or nil)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add the below row.&lt;br /&gt;
	if self.below then&lt;br /&gt;
		boxTable:tag('tr')&lt;br /&gt;
			:tag('td')&lt;br /&gt;
				:attr('colspan', self.imageRight and '3' or '2')&lt;br /&gt;
				:addClass('mbox-text')&lt;br /&gt;
				:cssText(self.textstyle or nil)&lt;br /&gt;
				:wikitext(self.below or nil)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add error message for invalid type parameters.&lt;br /&gt;
	if self.invalidTypeError then&lt;br /&gt;
		root:tag('div')&lt;br /&gt;
			:css('text-align', 'center')&lt;br /&gt;
			:wikitext(string.format(&lt;br /&gt;
				'This message box is using an invalid &amp;quot;type=%s&amp;quot; parameter and needs fixing.',&lt;br /&gt;
				self.type or ''&lt;br /&gt;
			))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add categories.&lt;br /&gt;
	root:wikitext(self:renderCategories() or nil)&lt;br /&gt;
&lt;br /&gt;
	return tostring(root)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Exports&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local p, mt = {}, {}&lt;br /&gt;
&lt;br /&gt;
function p._exportClasses()&lt;br /&gt;
	-- For testing.&lt;br /&gt;
	return {&lt;br /&gt;
		MessageBox = MessageBox&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(boxType, args, cfgTables)&lt;br /&gt;
	local box = MessageBox.new(boxType, args, cfgTables or mw.loadData(CONFIG_MODULE))&lt;br /&gt;
	box:setParameters()&lt;br /&gt;
	box:setCategories()&lt;br /&gt;
	return box:export()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function mt.__index(t, k)&lt;br /&gt;
	return function (frame)&lt;br /&gt;
		if not getArgs then&lt;br /&gt;
			getArgs = require('Module:Arguments').getArgs&lt;br /&gt;
		end&lt;br /&gt;
		return t.main(k, getArgs(frame, {trim = false, removeBlanks = false}))&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return setmetatable(p, mt)&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=Module:Math&amp;diff=1332</id>
		<title>Module:Math</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=Module:Math&amp;diff=1332"/>
		<updated>2019-09-06T09:28:16Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--[[&lt;br /&gt;
&lt;br /&gt;
This module provides a number of basic mathematical operations.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local yesno, getArgs -- lazily initialized&lt;br /&gt;
&lt;br /&gt;
local p = {} -- Holds functions to be returned from #invoke, and functions to make available to other Lua modules.&lt;br /&gt;
local wrap = {} -- Holds wrapper functions that process arguments from #invoke. These act as intemediary between functions meant for #invoke and functions meant for Lua.&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Helper functions used to avoid redundant code.&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function err(msg)&lt;br /&gt;
	-- Generates wikitext error messages.&lt;br /&gt;
	return mw.ustring.format('&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;Formatting error: %s&amp;lt;/strong&amp;gt;', msg)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function unpackNumberArgs(args)&lt;br /&gt;
	-- Returns an unpacked list of arguments specified with numerical keys.&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		if type(k) == 'number' then&lt;br /&gt;
			table.insert(ret, v)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return unpack(ret)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeArgArray(...)&lt;br /&gt;
	-- Makes an array of arguments from a list of arguments that might include nils.&lt;br /&gt;
	local args = {...} -- Table of arguments. It might contain nils or non-number values, so we can't use ipairs.&lt;br /&gt;
	local nums = {} -- Stores the numbers of valid numerical arguments.&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		v = p._cleanNumber(v)&lt;br /&gt;
		if v then&lt;br /&gt;
			nums[#nums + 1] = k&lt;br /&gt;
			args[k] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(nums)&lt;br /&gt;
	for i, num in ipairs(nums) do&lt;br /&gt;
		ret[#ret + 1] = args[num]&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function fold(func, ...)&lt;br /&gt;
	-- Use a function on all supplied arguments, and return the result. The function must accept two numbers as parameters,&lt;br /&gt;
	-- and must return a number as an output. This number is then supplied as input to the next function call.&lt;br /&gt;
	local vals = makeArgArray(...)	&lt;br /&gt;
	local count = #vals -- The number of valid arguments&lt;br /&gt;
	if count == 0 then return&lt;br /&gt;
		-- Exit if we have no valid args, otherwise removing the first arg would cause an error.&lt;br /&gt;
		nil, 0&lt;br /&gt;
	end &lt;br /&gt;
	local ret = table.remove(vals, 1)&lt;br /&gt;
	for _, val in ipairs(vals) do&lt;br /&gt;
		ret = func(ret, val)&lt;br /&gt;
	end&lt;br /&gt;
	return ret, count&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Fold arguments by selectively choosing values (func should return when to choose the current &amp;quot;dominant&amp;quot; value).&lt;br /&gt;
]]&lt;br /&gt;
local function binary_fold(func, ...)&lt;br /&gt;
	local value = fold((function(a, b) if func(a, b) then return a else return b end end), ...)&lt;br /&gt;
	return value&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
random&lt;br /&gt;
&lt;br /&gt;
Generate a random number&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke: Math | random }}&lt;br /&gt;
{{#invoke: Math | random | maximum value }}&lt;br /&gt;
{{#invoke: Math | random | minimum value | maximum value }}&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
function wrap.random(args)&lt;br /&gt;
	local first = p._cleanNumber(args[1])&lt;br /&gt;
	local second = p._cleanNumber(args[2])&lt;br /&gt;
	return p._random(first, second)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._random(first, second)&lt;br /&gt;
	math.randomseed(mw.site.stats.edits + mw.site.stats.pages + os.time() + math.floor(os.clock() * 1000000000))&lt;br /&gt;
	-- math.random will throw an error if given an explicit nil parameter, so we need to use if statements to check the params.&lt;br /&gt;
	if first and second then&lt;br /&gt;
		if first &amp;lt;= second then -- math.random doesn't allow the first number to be greater than the second.&lt;br /&gt;
			return math.random(first, second)&lt;br /&gt;
		end&lt;br /&gt;
	elseif first then&lt;br /&gt;
		return math.random(first)&lt;br /&gt;
	else&lt;br /&gt;
		return math.random()&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
order&lt;br /&gt;
&lt;br /&gt;
Determine order of magnitude of a number&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke: Math | order | value }}&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
function wrap.order(args)&lt;br /&gt;
	local input_string = (args[1] or args.x or '0');&lt;br /&gt;
	local input_number = p._cleanNumber(input_string);&lt;br /&gt;
	if input_number == nil then&lt;br /&gt;
		return err('order of magnitude input appears non-numeric')&lt;br /&gt;
	else&lt;br /&gt;
		return p._order(input_number)&lt;br /&gt;
	end    &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._order(x)&lt;br /&gt;
	if x == 0 then return 0 end&lt;br /&gt;
	return math.floor(math.log10(math.abs(x)))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
precision&lt;br /&gt;
&lt;br /&gt;
Detemines the precision of a number using the string representation&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{ #invoke: Math | precision | value }}&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
function wrap.precision(args)&lt;br /&gt;
	local input_string = (args[1] or args.x or '0');&lt;br /&gt;
	local trap_fraction = args.check_fraction;&lt;br /&gt;
	local input_number;&lt;br /&gt;
&lt;br /&gt;
	if not yesno then&lt;br /&gt;
		yesno = require('Module:Yesno')&lt;br /&gt;
	end&lt;br /&gt;
	if yesno(trap_fraction, true) then -- Returns true for all input except nil, false, &amp;quot;no&amp;quot;, &amp;quot;n&amp;quot;, &amp;quot;0&amp;quot; and a few others. See [[Module:Yesno]].&lt;br /&gt;
		local pos = string.find(input_string, '/', 1, true);&lt;br /&gt;
		if pos ~= nil then&lt;br /&gt;
			if string.find(input_string, '/', pos + 1, true) == nil then&lt;br /&gt;
				local denominator = string.sub(input_string, pos+1, -1);&lt;br /&gt;
				local denom_value = tonumber(denominator);&lt;br /&gt;
				if denom_value ~= nil then&lt;br /&gt;
					return math.log10(denom_value);&lt;br /&gt;
				end&lt;br /&gt;
			end                        &lt;br /&gt;
		end&lt;br /&gt;
	end    &lt;br /&gt;
&lt;br /&gt;
	input_number, input_string = p._cleanNumber(input_string);&lt;br /&gt;
	if input_string == nil then&lt;br /&gt;
		return err('precision input appears non-numeric')&lt;br /&gt;
	else&lt;br /&gt;
		return p._precision(input_string)&lt;br /&gt;
	end    &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._precision(x)&lt;br /&gt;
	if type(x) == 'number' then&lt;br /&gt;
		x = tostring(x)&lt;br /&gt;
	end&lt;br /&gt;
	x = string.upper(x)&lt;br /&gt;
&lt;br /&gt;
	local decimal = x:find('%.')&lt;br /&gt;
	local exponent_pos = x:find('E')&lt;br /&gt;
	local result = 0;&lt;br /&gt;
&lt;br /&gt;
	if exponent_pos ~= nil then&lt;br /&gt;
		local exponent = string.sub(x, exponent_pos + 1)&lt;br /&gt;
		x = string.sub(x, 1, exponent_pos - 1)&lt;br /&gt;
		result = result - tonumber(exponent)&lt;br /&gt;
	end    &lt;br /&gt;
&lt;br /&gt;
	if decimal ~= nil then&lt;br /&gt;
		result = result + string.len(x) - decimal&lt;br /&gt;
		return result&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local pos = string.len(x);&lt;br /&gt;
	while x:byte(pos) == string.byte('0') do&lt;br /&gt;
		pos = pos - 1&lt;br /&gt;
		result = result - 1&lt;br /&gt;
		if pos &amp;lt;= 0 then&lt;br /&gt;
			return 0&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
max&lt;br /&gt;
&lt;br /&gt;
Finds the maximum argument&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:Math| max | value1 | value2 | ... }}&lt;br /&gt;
&lt;br /&gt;
Note, any values that do not evaluate to numbers are ignored.&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
function wrap.max(args)&lt;br /&gt;
	return p._max(unpackNumberArgs(args))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._max(...)&lt;br /&gt;
	local max_value = binary_fold((function(a, b) return a &amp;gt; b end), ...)&lt;br /&gt;
	if max_value then&lt;br /&gt;
		return max_value&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
median&lt;br /&gt;
&lt;br /&gt;
Find the median of set of numbers&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:Math | median | number1 | number2 | ...}}&lt;br /&gt;
OR&lt;br /&gt;
{{#invoke:Math | median }}&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
function wrap.median(args)&lt;br /&gt;
	return p._median(unpackNumberArgs(args))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._median(...)&lt;br /&gt;
	local vals = makeArgArray(...)	&lt;br /&gt;
	local count = #vals&lt;br /&gt;
	table.sort(vals)&lt;br /&gt;
	&lt;br /&gt;
	if count == 0 then&lt;br /&gt;
		return 0&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if p._mod(count, 2) == 0 then&lt;br /&gt;
		return (vals[count/2] + vals[count/2+1])/2&lt;br /&gt;
	else&lt;br /&gt;
		return vals[math.ceil(count/2)]&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
min &lt;br /&gt;
&lt;br /&gt;
Finds the minimum argument&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:Math| min | value1 | value2 | ... }}&lt;br /&gt;
OR&lt;br /&gt;
{{#invoke:Math| min }}&lt;br /&gt;
&lt;br /&gt;
When used with no arguments, it takes its input from the parent&lt;br /&gt;
frame.  Note, any values that do not evaluate to numbers are ignored.&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
function wrap.min(args)&lt;br /&gt;
	return p._min(unpackNumberArgs(args))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._min(...)&lt;br /&gt;
	local min_value = binary_fold((function(a, b) return a &amp;lt; b end), ...)&lt;br /&gt;
	if min_value then&lt;br /&gt;
		return min_value&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
sum &lt;br /&gt;
&lt;br /&gt;
Finds the sum&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:Math| sum | value1 | value2 | ... }}&lt;br /&gt;
OR&lt;br /&gt;
{{#invoke:Math| sum }}&lt;br /&gt;
&lt;br /&gt;
Note, any values that do not evaluate to numbers are ignored.&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
function wrap.sum(args)&lt;br /&gt;
	return p._sum(unpackNumberArgs(args))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._sum(...)&lt;br /&gt;
	local sums, count = fold((function(a, b) return a + b end), ...)&lt;br /&gt;
	if not sums then&lt;br /&gt;
		return 0&lt;br /&gt;
	else&lt;br /&gt;
		return sums&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
average &lt;br /&gt;
&lt;br /&gt;
Finds the average&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:Math| average | value1 | value2 | ... }}&lt;br /&gt;
OR&lt;br /&gt;
{{#invoke:Math| average }}&lt;br /&gt;
&lt;br /&gt;
Note, any values that do not evaluate to numbers are ignored.&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
function wrap.average(args)&lt;br /&gt;
	return p._average(unpackNumberArgs(args))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._average(...)&lt;br /&gt;
	local sum, count = fold((function(a, b) return a + b end), ...)&lt;br /&gt;
	if not sum then&lt;br /&gt;
		return 0&lt;br /&gt;
	else&lt;br /&gt;
		return sum / count&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
round&lt;br /&gt;
&lt;br /&gt;
Rounds a number to specified precision&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:Math | round | value | precision }}&lt;br /&gt;
&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
function wrap.round(args)&lt;br /&gt;
	local value = p._cleanNumber(args[1] or args.value or 0)&lt;br /&gt;
	local precision = p._cleanNumber(args[2] or args.precision or 0)&lt;br /&gt;
	if value == nil or precision == nil then&lt;br /&gt;
		return err('round input appears non-numeric')&lt;br /&gt;
	else&lt;br /&gt;
		return p._round(value, precision)&lt;br /&gt;
	end    &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._round(value, precision)&lt;br /&gt;
	local rescale = math.pow(10, precision or 0);&lt;br /&gt;
	return math.floor(value * rescale + 0.5) / rescale;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
log10&lt;br /&gt;
&lt;br /&gt;
returns the log (base 10) of a number&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:Math | log10 | x }}&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
function wrap.log10(args)&lt;br /&gt;
	return math.log10(args[1])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
mod&lt;br /&gt;
&lt;br /&gt;
Implements the modulo operator&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:Math | mod | x | y }}&lt;br /&gt;
&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
function wrap.mod(args)&lt;br /&gt;
	local x = p._cleanNumber(args[1])&lt;br /&gt;
	local y = p._cleanNumber(args[2])&lt;br /&gt;
	if not x then&lt;br /&gt;
		return err('first argument to mod appears non-numeric')&lt;br /&gt;
	elseif not y then&lt;br /&gt;
		return err('second argument to mod appears non-numeric')&lt;br /&gt;
	else&lt;br /&gt;
		return p._mod(x, y)&lt;br /&gt;
	end    &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._mod(x, y)&lt;br /&gt;
	local ret = x % y&lt;br /&gt;
	if not (0 &amp;lt;= ret and ret &amp;lt; y) then&lt;br /&gt;
		ret = 0&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
gcd&lt;br /&gt;
&lt;br /&gt;
Calculates the greatest common divisor of multiple numbers&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:Math | gcd | value 1 | value 2 | value 3 | ... }}&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
function wrap.gcd(args)&lt;br /&gt;
	return p._gcd(unpackNumberArgs(args))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._gcd(...)&lt;br /&gt;
	local function findGcd(a, b)&lt;br /&gt;
		local r = b&lt;br /&gt;
		local oldr = a&lt;br /&gt;
		while r ~= 0 do&lt;br /&gt;
			local quotient = math.floor(oldr / r)&lt;br /&gt;
			oldr, r = r, oldr - quotient * r&lt;br /&gt;
		end&lt;br /&gt;
		if oldr &amp;lt; 0 then&lt;br /&gt;
			oldr = oldr * -1&lt;br /&gt;
		end&lt;br /&gt;
		return oldr&lt;br /&gt;
	end&lt;br /&gt;
	local result, count = fold(findGcd, ...)&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
precision_format&lt;br /&gt;
&lt;br /&gt;
Rounds a number to the specified precision and formats according to rules &lt;br /&gt;
originally used for {{template:Rnd}}.  Output is a string.&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke: Math | precision_format | number | precision }}&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
function wrap.precision_format(args)&lt;br /&gt;
	local value_string = args[1] or 0&lt;br /&gt;
	local precision = args[2] or 0&lt;br /&gt;
	return p._precision_format(value_string, precision)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._precision_format(value_string, precision)&lt;br /&gt;
	-- For access to Mediawiki built-in formatter.&lt;br /&gt;
	local lang = mw.getContentLanguage();&lt;br /&gt;
&lt;br /&gt;
	local value&lt;br /&gt;
	value, value_string = p._cleanNumber(value_string)&lt;br /&gt;
	precision = p._cleanNumber(precision)&lt;br /&gt;
&lt;br /&gt;
	-- Check for non-numeric input&lt;br /&gt;
	if value == nil or precision == nil then&lt;br /&gt;
		return err('invalid input when rounding')&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local current_precision = p._precision(value)&lt;br /&gt;
	local order = p._order(value)&lt;br /&gt;
&lt;br /&gt;
	-- Due to round-off effects it is neccesary to limit the returned precision under&lt;br /&gt;
	-- some circumstances because the terminal digits will be inaccurately reported.&lt;br /&gt;
	if order + precision &amp;gt;= 14 then&lt;br /&gt;
		orig_precision = p._precision(value_string)&lt;br /&gt;
		if order + orig_precision &amp;gt;= 14 then&lt;br /&gt;
			precision = 13 - order;        &lt;br /&gt;
		end        &lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- If rounding off, truncate extra digits&lt;br /&gt;
	if precision &amp;lt; current_precision then&lt;br /&gt;
		value = p._round(value, precision)&lt;br /&gt;
		current_precision = p._precision(value)&lt;br /&gt;
	end    &lt;br /&gt;
&lt;br /&gt;
	local formatted_num = lang:formatNum(math.abs(value))&lt;br /&gt;
	local sign&lt;br /&gt;
&lt;br /&gt;
	-- Use proper unary minus sign rather than ASCII default&lt;br /&gt;
	if value &amp;lt; 0 then&lt;br /&gt;
		sign = '−'&lt;br /&gt;
	else&lt;br /&gt;
		sign = ''&lt;br /&gt;
	end    &lt;br /&gt;
&lt;br /&gt;
	-- Handle cases requiring scientific notation&lt;br /&gt;
	if string.find(formatted_num, 'E', 1, true) ~= nil or math.abs(order) &amp;gt;= 9 then&lt;br /&gt;
		value = value * math.pow(10, -order)&lt;br /&gt;
		current_precision = current_precision + order&lt;br /&gt;
		precision = precision + order&lt;br /&gt;
		formatted_num = lang:formatNum(math.abs(value))&lt;br /&gt;
	else&lt;br /&gt;
		order = 0;        &lt;br /&gt;
	end&lt;br /&gt;
	formatted_num = sign .. formatted_num&lt;br /&gt;
&lt;br /&gt;
	-- Pad with zeros, if needed    &lt;br /&gt;
	if current_precision &amp;lt; precision then&lt;br /&gt;
		local padding&lt;br /&gt;
		if current_precision &amp;lt;= 0 then&lt;br /&gt;
			if precision &amp;gt; 0 then&lt;br /&gt;
				local zero_sep = lang:formatNum(1.1)&lt;br /&gt;
				formatted_num = formatted_num .. zero_sep:sub(2,2)&lt;br /&gt;
&lt;br /&gt;
				padding = precision&lt;br /&gt;
				if padding &amp;gt; 20 then&lt;br /&gt;
					padding = 20&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				formatted_num = formatted_num .. string.rep('0', padding)&lt;br /&gt;
			end            &lt;br /&gt;
		else                   &lt;br /&gt;
			padding = precision - current_precision&lt;br /&gt;
			if padding &amp;gt; 20 then&lt;br /&gt;
				padding = 20&lt;br /&gt;
			end&lt;br /&gt;
			formatted_num = formatted_num .. string.rep('0', padding)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add exponential notation, if necessary.&lt;br /&gt;
	if order ~= 0 then&lt;br /&gt;
		-- Use proper unary minus sign rather than ASCII default&lt;br /&gt;
		if order &amp;lt; 0 then&lt;br /&gt;
			order = '−' .. lang:formatNum(math.abs(order))&lt;br /&gt;
		else&lt;br /&gt;
			order = lang:formatNum(order)&lt;br /&gt;
		end    &lt;br /&gt;
&lt;br /&gt;
		formatted_num = formatted_num .. '&amp;lt;span style=&amp;quot;margin:0 .15em 0 .25em&amp;quot;&amp;gt;×&amp;lt;/span&amp;gt;10&amp;lt;sup&amp;gt;' .. order .. '&amp;lt;/sup&amp;gt;'&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return formatted_num&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Helper function that interprets the input numerically.  If the &lt;br /&gt;
input does not appear to be a number, attempts evaluating it as&lt;br /&gt;
a parser functions expression.&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
function p._cleanNumber(number_string)&lt;br /&gt;
	if type(number_string) == 'number' then&lt;br /&gt;
		-- We were passed a number, so we don't need to do any processing.&lt;br /&gt;
		return number_string, tostring(number_string)&lt;br /&gt;
	elseif type(number_string) ~= 'string' or not number_string:find('%S') then&lt;br /&gt;
		-- We were passed a non-string or a blank string, so exit.&lt;br /&gt;
		return nil, nil;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Attempt basic conversion&lt;br /&gt;
	local number = tonumber(number_string)&lt;br /&gt;
&lt;br /&gt;
	-- If failed, attempt to evaluate input as an expression&lt;br /&gt;
	if number == nil then&lt;br /&gt;
		local success, result = pcall(mw.ext.ParserFunctions.expr, number_string)&lt;br /&gt;
		if success then&lt;br /&gt;
			number = tonumber(result)&lt;br /&gt;
			number_string = tostring(number)&lt;br /&gt;
		else&lt;br /&gt;
			number = nil&lt;br /&gt;
			number_string = nil&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		number_string = number_string:match(&amp;quot;^%s*(.-)%s*$&amp;quot;) -- String is valid but may contain padding, clean it.&lt;br /&gt;
		number_string = number_string:match(&amp;quot;^%+(.*)$&amp;quot;) or number_string -- Trim any leading + signs.&lt;br /&gt;
		if number_string:find('^%-?0[xX]') then&lt;br /&gt;
			-- Number is using 0xnnn notation to indicate base 16; use the number that Lua detected instead.&lt;br /&gt;
			number_string = tostring(number)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return number, number_string&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Wrapper function that does basic argument processing. This ensures that all functions from #invoke can use either the current&lt;br /&gt;
frame or the parent frame, and it also trims whitespace for all arguments and removes blank arguments.&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local mt = { __index = function(t, k)&lt;br /&gt;
	return function(frame)&lt;br /&gt;
		if not getArgs then&lt;br /&gt;
			getArgs = require('Module:Arguments').getArgs&lt;br /&gt;
		end&lt;br /&gt;
		return wrap[k](getArgs(frame))  -- Argument processing is left to Module:Arguments. Whitespace is trimmed and blank arguments are removed.&lt;br /&gt;
	end&lt;br /&gt;
end }&lt;br /&gt;
&lt;br /&gt;
return setmetatable(p, mt)&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=Module:Lua_banner&amp;diff=1330</id>
		<title>Module:Lua banner</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=Module:Lua_banner&amp;diff=1330"/>
		<updated>2019-09-06T09:28:15Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module implements the {{lua}} template.&lt;br /&gt;
local yesno = require('Module:Yesno')&lt;br /&gt;
local mList = require('Module:List')&lt;br /&gt;
local mTableTools = require('Module:TableTools')&lt;br /&gt;
local mMessageBox = require('Module:Message box')&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local origArgs = frame:getParent().args&lt;br /&gt;
	local args = {}&lt;br /&gt;
	for k, v in pairs(origArgs) do&lt;br /&gt;
		v = v:match('^%s*(.-)%s*$')&lt;br /&gt;
		if v ~= '' then&lt;br /&gt;
			args[k] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return p._main(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(args)&lt;br /&gt;
	local modules = mTableTools.compressSparseArray(args)&lt;br /&gt;
	local box = p.renderBox(modules)&lt;br /&gt;
	local trackingCategories = p.renderTrackingCategories(args, modules)&lt;br /&gt;
	return box .. trackingCategories&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.renderBox(modules)&lt;br /&gt;
	local boxArgs = {}&lt;br /&gt;
	if #modules &amp;lt; 1 then&lt;br /&gt;
		boxArgs.text = '&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;Error: no modules specified&amp;lt;/strong&amp;gt;'&lt;br /&gt;
	else&lt;br /&gt;
		local moduleLinks = {}&lt;br /&gt;
		for i, module in ipairs(modules) do&lt;br /&gt;
			moduleLinks[i] = string.format('[[:%s]]', module)&lt;br /&gt;
		end&lt;br /&gt;
		local moduleList = mList.makeList('bulleted', moduleLinks)&lt;br /&gt;
		boxArgs.text = 'This ' .. &lt;br /&gt;
			(mw.title.getCurrentTitle():inNamespaces(828,829) and 'module' or 'template') ..&lt;br /&gt;
			' uses [[Wikipedia:Lua|Lua]]:\n' .. moduleList&lt;br /&gt;
	end&lt;br /&gt;
	boxArgs.type = 'notice'&lt;br /&gt;
	boxArgs.small = true&lt;br /&gt;
	boxArgs.image = '[[File:Lua-logo-nolabel.svg|30px|alt=|link=]]'&lt;br /&gt;
	return mMessageBox.main('mbox', boxArgs)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.renderTrackingCategories(args, modules, titleObj)&lt;br /&gt;
	if yesno(args.nocat) then&lt;br /&gt;
		return ''&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local cats = {}&lt;br /&gt;
	&lt;br /&gt;
	-- Error category&lt;br /&gt;
	if #modules &amp;lt; 1 then&lt;br /&gt;
		cats[#cats + 1] = 'Lua templates with errors'&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Lua templates category&lt;br /&gt;
	titleObj = titleObj or mw.title.getCurrentTitle()&lt;br /&gt;
	local subpageBlacklist = {&lt;br /&gt;
		doc = true,&lt;br /&gt;
		sandbox = true,&lt;br /&gt;
		sandbox2 = true,&lt;br /&gt;
		testcases = true&lt;br /&gt;
	}&lt;br /&gt;
	if titleObj.namespace == 10 &lt;br /&gt;
		and not subpageBlacklist[titleObj.subpageText]&lt;br /&gt;
	then&lt;br /&gt;
		local category = args.category&lt;br /&gt;
		if not category then&lt;br /&gt;
			local categories = {&lt;br /&gt;
				['Module:String'] = 'Lua String-based templates',&lt;br /&gt;
				['Module:Math'] = 'Templates based on the Math Lua module',&lt;br /&gt;
				['Module:BaseConvert'] = 'Templates based on the BaseConvert Lua module',&lt;br /&gt;
				['Module:Citation'] = 'Lua-based citation templates'&lt;br /&gt;
			}&lt;br /&gt;
			categories['Module:Citation/CS1'] = categories['Module:Citation']&lt;br /&gt;
			category = modules[1] and categories[modules[1]]&lt;br /&gt;
			category = category or 'Lua-based templates'&lt;br /&gt;
		end&lt;br /&gt;
		cats[#cats + 1] = category&lt;br /&gt;
		local protLevels = {&lt;br /&gt;
			autoconfirmed = 1,&lt;br /&gt;
			extendedconfirmed = 2,&lt;br /&gt;
			templateeditor = 3,&lt;br /&gt;
			sysop = 4&lt;br /&gt;
		}&lt;br /&gt;
		local currentProt = titleObj.protectionLevels[&amp;quot;edit&amp;quot;][1]&lt;br /&gt;
		if currentProt == nil then currentProt = 0 else currentProt = protLevels[currentProt] end&lt;br /&gt;
		for i, module in ipairs(modules) do&lt;br /&gt;
			local moduleProt = mw.title.new(module).protectionLevels[&amp;quot;edit&amp;quot;][1]&lt;br /&gt;
			if moduleProt == nil then moduleProt = 0 else moduleProt = protLevels[moduleProt] end&lt;br /&gt;
			if moduleProt &amp;lt; currentProt then&lt;br /&gt;
				cats[#cats + 1] = &amp;quot;Templates using under-protected Lua modules&amp;quot;&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i, cat in ipairs(cats) do&lt;br /&gt;
		cats[i] = string.format('[[Category:%s]]', cat)&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(cats)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=Module:Language/name/data&amp;diff=1326</id>
		<title>Module:Language/name/data</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=Module:Language/name/data&amp;diff=1326"/>
		<updated>2019-09-06T09:28:14Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- put tables and their tables together&lt;br /&gt;
local function __coalesce(...)&lt;br /&gt;
    local coalesced = {}&lt;br /&gt;
    for _, langslist in ipairs{...} do&lt;br /&gt;
        for langcode, langnames in pairs(langslist) do&lt;br /&gt;
            for _, langname in pairs(langnames) do&lt;br /&gt;
                if not coalesced[langcode] then&lt;br /&gt;
                    coalesced[langcode] = {}&lt;br /&gt;
                end&lt;br /&gt;
                table.insert(coalesced[langcode], langname)&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
 &lt;br /&gt;
    return coalesced&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- make the keys lowercase&lt;br /&gt;
local function __preprocess(t, first_of_array_in_array)&lt;br /&gt;
    local preprocessed = {}&lt;br /&gt;
    if first_of_array_in_array then&lt;br /&gt;
    	-- keep only the 1st language name for each code, excluding synonyms&lt;br /&gt;
        for k, v in pairs(t) do&lt;br /&gt;
            preprocessed[k:lower()] = {v[1]}&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        for k, v in pairs(t) do&lt;br /&gt;
            preprocessed[k:lower()] = v&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return preprocessed&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- all valid primary language subtags for BCP47 from IANA (most of them from ISO 639-1, -2 and -3 with some exclusions)&lt;br /&gt;
local __iana_languages = __preprocess(require(&amp;quot;Module:Language/data/iana languages&amp;quot;));&lt;br /&gt;
-- ISO 639-3 contains additional 3-letter codes not inserted in the IANA database as they are aliased to 2-letter codes,&lt;br /&gt;
-- but excludes some deleted codes still valid in BCP47 (some of them are aliased)&lt;br /&gt;
local __iso_639_3      = __preprocess(require(&amp;quot;Module:Language/data/ISO 639-3&amp;quot;));&lt;br /&gt;
-- Wikimedia wikis uses some non-standard codes and a subset of IANA codes, plus composite codes&lt;br /&gt;
local __wp_languages   = __preprocess(require(&amp;quot;Module:Language/data/wp languages&amp;quot;), true);&lt;br /&gt;
-- all valid script subtags for BCP47 from IANA (excluding special ISO 15924 codes)&lt;br /&gt;
local iana_scripts     = __preprocess(require(&amp;quot;Module:Language/data/iana scripts&amp;quot;));&lt;br /&gt;
-- all valid region subtags for BCP47 from IANA (derived from ISO 3166-1 excluding special codes, and from 3-digit UN M.49 codes for groups of countries)&lt;br /&gt;
local iana_regions     = __preprocess(require(&amp;quot;Module:Language/data/iana regions&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
-- variant subtags from IANA; table format differs from the other IANA data tables&lt;br /&gt;
local iana_variants = __preprocess(require(&amp;quot;Module:Language/data/iana variants&amp;quot;));&lt;br /&gt;
-- suppressed script subtags from IANA;&lt;br /&gt;
local iana_suppressed_scripts = __preprocess (require(&amp;quot;Module:Language/data/iana suppressed scripts&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
    lang   = __coalesce(__wp_languages, __iana_languages, __iso_639_3),&lt;br /&gt;
    lang_iana = __iana_languages,&lt;br /&gt;
    script = iana_scripts,&lt;br /&gt;
    region = iana_regions,&lt;br /&gt;
    variant = iana_variants,&lt;br /&gt;
    suppressed = iana_suppressed_scripts,&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=Module:List&amp;diff=1328</id>
		<title>Module:List</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=Module:List&amp;diff=1328"/>
		<updated>2019-09-06T09:28:14Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module outputs different kinds of lists. At the moment, bulleted,&lt;br /&gt;
-- unbulleted, horizontal, ordered, and horizontal ordered lists are supported.&lt;br /&gt;
&lt;br /&gt;
local libUtil = require('libraryUtil')&lt;br /&gt;
local checkType = libUtil.checkType&lt;br /&gt;
local mTableTools = require('Module:TableTools')&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local listTypes = {&lt;br /&gt;
	['bulleted'] = true,&lt;br /&gt;
	['unbulleted'] = true,&lt;br /&gt;
	['horizontal'] = true,&lt;br /&gt;
	['ordered'] = true,&lt;br /&gt;
	['horizontal_ordered'] = true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function p.makeListData(listType, args)&lt;br /&gt;
	-- Constructs a data table to be passed to p.renderList.&lt;br /&gt;
	local data = {}&lt;br /&gt;
&lt;br /&gt;
	-- Classes&lt;br /&gt;
	data.classes = {}&lt;br /&gt;
	if listType == 'horizontal' or listType == 'horizontal_ordered' then&lt;br /&gt;
		table.insert(data.classes, 'hlist hlist-separated')&lt;br /&gt;
	elseif listType == 'unbulleted' then&lt;br /&gt;
		table.insert(data.classes, 'plainlist')&lt;br /&gt;
	end&lt;br /&gt;
	table.insert(data.classes, args.class)&lt;br /&gt;
&lt;br /&gt;
	-- Main div style&lt;br /&gt;
	data.style = args.style&lt;br /&gt;
&lt;br /&gt;
	-- Indent for horizontal lists&lt;br /&gt;
	if listType == 'horizontal' or listType == 'horizontal_ordered' then&lt;br /&gt;
		local indent = tonumber(args.indent)&lt;br /&gt;
		indent = indent and indent * 1.6 or 0&lt;br /&gt;
		if indent &amp;gt; 0 then&lt;br /&gt;
			data.marginLeft = indent .. 'em'&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- List style types for ordered lists&lt;br /&gt;
	-- This could be &amp;quot;1, 2, 3&amp;quot;, &amp;quot;a, b, c&amp;quot;, or a number of others. The list style&lt;br /&gt;
	-- type is either set by the &amp;quot;type&amp;quot; attribute or the &amp;quot;list-style-type&amp;quot; CSS&lt;br /&gt;
	-- property.&lt;br /&gt;
	if listType == 'ordered' or listType == 'horizontal_ordered' then &lt;br /&gt;
		data.listStyleType = args.list_style_type or args['list-style-type']&lt;br /&gt;
		data.type = args['type']&lt;br /&gt;
&lt;br /&gt;
		-- Detect invalid type attributes and attempt to convert them to&lt;br /&gt;
		-- list-style-type CSS properties.&lt;br /&gt;
		if data.type &lt;br /&gt;
			and not data.listStyleType&lt;br /&gt;
			and not tostring(data.type):find('^%s*[1AaIi]%s*$')&lt;br /&gt;
		then&lt;br /&gt;
			data.listStyleType = data.type&lt;br /&gt;
			data.type = nil&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- List tag type&lt;br /&gt;
	if listType == 'ordered' or listType == 'horizontal_ordered' then&lt;br /&gt;
		data.listTag = 'ol'&lt;br /&gt;
	else&lt;br /&gt;
		data.listTag = 'ul'&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Start number for ordered lists&lt;br /&gt;
	data.start = args.start&lt;br /&gt;
	if listType == 'horizontal_ordered' then&lt;br /&gt;
		-- Apply fix to get start numbers working with horizontal ordered lists.&lt;br /&gt;
		local startNum = tonumber(data.start)&lt;br /&gt;
		if startNum then&lt;br /&gt;
			data.counterReset = 'listitem ' .. tostring(startNum - 1)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- List style&lt;br /&gt;
	 -- ul_style and ol_style are included for backwards compatibility. No&lt;br /&gt;
	 -- distinction is made for ordered or unordered lists.&lt;br /&gt;
	data.listStyle = args.list_style&lt;br /&gt;
&lt;br /&gt;
	-- List items&lt;br /&gt;
	-- li_style is included for backwards compatibility. item_style was included&lt;br /&gt;
	-- to be easier to understand for non-coders.&lt;br /&gt;
	data.itemStyle = args.item_style or args.li_style&lt;br /&gt;
	data.items = {}&lt;br /&gt;
	for i, num in ipairs(mTableTools.numKeys(args)) do&lt;br /&gt;
		local item = {}&lt;br /&gt;
		item.content = args[num]&lt;br /&gt;
		item.style = args['item' .. tostring(num) .. '_style']&lt;br /&gt;
			or args['item_style' .. tostring(num)]&lt;br /&gt;
		item.value = args['item' .. tostring(num) .. '_value']&lt;br /&gt;
			or args['item_value' .. tostring(num)]&lt;br /&gt;
		table.insert(data.items, item)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return data&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.renderList(data)&lt;br /&gt;
	-- Renders the list HTML.&lt;br /&gt;
	&lt;br /&gt;
	-- Return the blank string if there are no list items.&lt;br /&gt;
	if type(data.items) ~= 'table' or #data.items &amp;lt; 1 then&lt;br /&gt;
		return ''&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Render the main div tag.&lt;br /&gt;
	local root = mw.html.create('div')&lt;br /&gt;
	for i, class in ipairs(data.classes or {}) do&lt;br /&gt;
		root:addClass(class)&lt;br /&gt;
	end&lt;br /&gt;
	root:css{['margin-left'] = data.marginLeft}&lt;br /&gt;
	if data.style then&lt;br /&gt;
		root:cssText(data.style)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Render the list tag.&lt;br /&gt;
	local list = root:tag(data.listTag or 'ul')&lt;br /&gt;
	list&lt;br /&gt;
		:attr{start = data.start, type = data.type}&lt;br /&gt;
		:css{&lt;br /&gt;
			['counter-reset'] = data.counterReset,&lt;br /&gt;
			['list-style-type'] = data.listStyleType&lt;br /&gt;
		}&lt;br /&gt;
	if data.listStyle then&lt;br /&gt;
		list:cssText(data.listStyle)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Render the list items&lt;br /&gt;
	for i, t in ipairs(data.items or {}) do&lt;br /&gt;
		local item = list:tag('li')&lt;br /&gt;
		if data.itemStyle then&lt;br /&gt;
			item:cssText(data.itemStyle)&lt;br /&gt;
		end&lt;br /&gt;
		if t.style then&lt;br /&gt;
			item:cssText(t.style)&lt;br /&gt;
		end&lt;br /&gt;
		item&lt;br /&gt;
			:attr{value = t.value}&lt;br /&gt;
			:wikitext(t.content)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return tostring(root)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.renderTrackingCategories(args)&lt;br /&gt;
	local isDeprecated = false -- Tracks deprecated parameters.&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		k = tostring(k)&lt;br /&gt;
		if k:find('^item_style%d+$') or k:find('^item_value%d+$') then&lt;br /&gt;
			isDeprecated = true&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local ret = ''&lt;br /&gt;
	if isDeprecated then&lt;br /&gt;
		ret = ret .. '[[Category:List templates with deprecated parameters]]'&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.makeList(listType, args)&lt;br /&gt;
	if not listType or not listTypes[listType] then&lt;br /&gt;
		error(string.format(&lt;br /&gt;
			&amp;quot;bad argument #1 to 'makeList' ('%s' is not a valid list type)&amp;quot;,&lt;br /&gt;
			tostring(listType)&lt;br /&gt;
		), 2)&lt;br /&gt;
	end&lt;br /&gt;
	checkType('makeList', 2, args, 'table')&lt;br /&gt;
	local data = p.makeListData(listType, args)&lt;br /&gt;
	local list = p.renderList(data)&lt;br /&gt;
	local trackingCategories = p.renderTrackingCategories(args)&lt;br /&gt;
	return list .. trackingCategories&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
for listType in pairs(listTypes) do&lt;br /&gt;
	p[listType] = function (frame)&lt;br /&gt;
		local mArguments = require('Module:Arguments')&lt;br /&gt;
		local origArgs = mArguments.getArgs(frame)&lt;br /&gt;
		-- Copy all the arguments to a new table, for faster indexing.&lt;br /&gt;
		local args = {}&lt;br /&gt;
		for k, v in pairs(origArgs) do&lt;br /&gt;
			args[k] = v&lt;br /&gt;
		end&lt;br /&gt;
		return p.makeList(listType, args)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=Module:Language/data/wp_languages&amp;diff=1324</id>
		<title>Module:Language/data/wp languages</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=Module:Language/data/wp_languages&amp;diff=1324"/>
		<updated>2019-09-06T09:28:13Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;return 	{	-- wp preferred names													-- IANA language names and notes&lt;br /&gt;
--ISO 639-1 codes&lt;br /&gt;
	[&amp;quot;ab&amp;quot;] = {&amp;quot;Abkhaz&amp;quot;},														-- Abkhazian&lt;br /&gt;
	[&amp;quot;an&amp;quot;] = {&amp;quot;Aragonese&amp;quot;},														-- Aragonese; same, delete?&lt;br /&gt;
	[&amp;quot;av&amp;quot;] = {&amp;quot;Avar&amp;quot;},															-- Avaric&lt;br /&gt;
	[&amp;quot;bh&amp;quot;] = {&amp;quot;Bihari&amp;quot;},														-- Bihari languages; collective&lt;br /&gt;
	[&amp;quot;bo&amp;quot;] = {&amp;quot;Standard Tibetan&amp;quot;},												-- Tibetan&lt;br /&gt;
	[&amp;quot;cu&amp;quot;] = {&amp;quot;Old Church Slavonic&amp;quot;},											-- Church Slavic, Church Slavonic, Old Bulgarian, Old Church Slavonic, Old Slavonic&lt;br /&gt;
	[&amp;quot;de-AT&amp;quot;] = {&amp;quot;Austrian German&amp;quot;},&lt;br /&gt;
	[&amp;quot;el&amp;quot;] = {&amp;quot;Greek&amp;quot;},															-- Modern Greek (1453-)&lt;br /&gt;
	[&amp;quot;en-AU&amp;quot;] = {&amp;quot;Australian English&amp;quot;},&lt;br /&gt;
	[&amp;quot;en-CA&amp;quot;] = {&amp;quot;Canadian English&amp;quot;},&lt;br /&gt;
	[&amp;quot;en-GB&amp;quot;] = {&amp;quot;British English&amp;quot;},&lt;br /&gt;
	[&amp;quot;en-IE&amp;quot;] = {&amp;quot;Irish English&amp;quot;},&lt;br /&gt;
	[&amp;quot;en-NZ&amp;quot;] = {&amp;quot;New Zealand English&amp;quot;},&lt;br /&gt;
	[&amp;quot;en-SA&amp;quot;] = {&amp;quot;South African English&amp;quot;},&lt;br /&gt;
	[&amp;quot;en-US&amp;quot;] = {&amp;quot;American English&amp;quot;},&lt;br /&gt;
	[&amp;quot;ff&amp;quot;] = {&amp;quot;Fula&amp;quot;},															-- Fulah&lt;br /&gt;
	[&amp;quot;fy&amp;quot;] = {&amp;quot;Frisian&amp;quot;},														-- Western Frisian&lt;br /&gt;
	[&amp;quot;ht&amp;quot;] = {&amp;quot;Haitian Creole&amp;quot;},												-- Haitian, Haitian Creole&lt;br /&gt;
	[&amp;quot;hz&amp;quot;] = {&amp;quot;Otjiherero&amp;quot;},													-- Herero&lt;br /&gt;
	[&amp;quot;ia&amp;quot;] = {&amp;quot;Interlingua&amp;quot;},													-- Interlingua (International Auxiliary Language Association)&lt;br /&gt;
	[&amp;quot;ii&amp;quot;] = {&amp;quot;Yi&amp;quot;},															-- Sichuan Yi, Nuosu&lt;br /&gt;
	[&amp;quot;ki&amp;quot;] = {&amp;quot;Gikuyu&amp;quot;},														-- Kikuyu, Gikuyu&lt;br /&gt;
	[&amp;quot;kk&amp;quot;] = {&amp;quot;Kazakh&amp;quot;},														-- Kazakh; same, delete?&lt;br /&gt;
	[&amp;quot;kl&amp;quot;] = {&amp;quot;Greenlandic&amp;quot;},													-- Kalaallisut, Greenlandic&lt;br /&gt;
	[&amp;quot;km&amp;quot;] = {&amp;quot;Khmer&amp;quot;},															-- Central Khmer&lt;br /&gt;
	[&amp;quot;ky&amp;quot;] = {&amp;quot;Kyrgyz&amp;quot;},														-- Kirghiz, Kyrgyz&lt;br /&gt;
	[&amp;quot;lg&amp;quot;] = {&amp;quot;Luganda&amp;quot;},														-- Ganda&lt;br /&gt;
	[&amp;quot;li&amp;quot;] = {&amp;quot;Limburgish&amp;quot;},													-- Limburgan, Limburger, Limburgish&lt;br /&gt;
	[&amp;quot;mi&amp;quot;] = {&amp;quot;Māori&amp;quot;},															-- Maori&lt;br /&gt;
	[&amp;quot;ms&amp;quot;] = {&amp;quot;Malay&amp;quot;},															-- Malay (macrolanguage)&lt;br /&gt;
	[&amp;quot;na&amp;quot;] = {&amp;quot;Nauruan&amp;quot;},														-- Nauru&lt;br /&gt;
	[&amp;quot;nb&amp;quot;] = {&amp;quot;Bokmål&amp;quot;},														-- Norwegian Bokmål&lt;br /&gt;
	[&amp;quot;nd&amp;quot;] = {&amp;quot;Northern Ndebele&amp;quot;},												-- North Ndebele&lt;br /&gt;
	[&amp;quot;ne&amp;quot;] = {&amp;quot;Nepali&amp;quot;},														-- Nepali (macrolanguage)&lt;br /&gt;
	[&amp;quot;nn&amp;quot;] = {&amp;quot;Nynorsk&amp;quot;},														-- Norwegian Nynorsk&lt;br /&gt;
	[&amp;quot;nr&amp;quot;] = {&amp;quot;Southern Ndebele&amp;quot;},												-- South Ndebele&lt;br /&gt;
	[&amp;quot;ny&amp;quot;] = {&amp;quot;Chichewa&amp;quot;},														-- Nyanja, Chewa, Chichewa&lt;br /&gt;
	[&amp;quot;oc&amp;quot;] = {&amp;quot;Occitan&amp;quot;},														-- Occitan (post 1500)&lt;br /&gt;
	[&amp;quot;oj&amp;quot;] = {&amp;quot;Ojibwe&amp;quot;},														-- Ojibwa&lt;br /&gt;
	[&amp;quot;or&amp;quot;] = {&amp;quot;Odia&amp;quot;},															-- Oriya (macrolanguage), Odia (macrolanguage)&lt;br /&gt;
	[&amp;quot;pa&amp;quot;] = {&amp;quot;Punjabi&amp;quot;},														-- Panjabi, Punjabi&lt;br /&gt;
	[&amp;quot;pi&amp;quot;] = {&amp;quot;Pali&amp;quot;},															-- Pali; same, delete?&lt;br /&gt;
	[&amp;quot;rn&amp;quot;] = {&amp;quot;Kirundi&amp;quot;},														-- Rundi&lt;br /&gt;
	[&amp;quot;ro&amp;quot;] = {&amp;quot;Romanian&amp;quot;},														-- Romanian, Moldavian, Moldovan; same as first in IANA list, delete?&lt;br /&gt;
	[&amp;quot;rw&amp;quot;] = {&amp;quot;Kinyarwanda&amp;quot;},													-- Kinyarwanda; same, delete?&lt;br /&gt;
	[&amp;quot;si&amp;quot;] = {&amp;quot;Sinhalese&amp;quot;},														-- Sinhala, Sinhalese&lt;br /&gt;
	[&amp;quot;sl&amp;quot;] = {&amp;quot;Slovene&amp;quot;},														-- Slovenian&lt;br /&gt;
	[&amp;quot;sr-Cyrl&amp;quot;] = {&amp;quot;Serbian Cyrillic&amp;quot;},											-- sr = Serbian; Cyrillic is the alphabet&lt;br /&gt;
	[&amp;quot;ss&amp;quot;] = {&amp;quot;Swazi&amp;quot;},															-- Swati&lt;br /&gt;
	[&amp;quot;st&amp;quot;] = {&amp;quot;Sotho&amp;quot;},															-- Southern Sotho&lt;br /&gt;
	[&amp;quot;sw&amp;quot;] = {&amp;quot;Swahili&amp;quot;},														-- Swahili (macrolanguage)&lt;br /&gt;
	[&amp;quot;to&amp;quot;] = {&amp;quot;Tongan&amp;quot;},														-- Tonga (Tonga Islands)&lt;br /&gt;
	[&amp;quot;za&amp;quot;] = {&amp;quot;Zhuang&amp;quot;},														-- Zhuang, Chuang; ; same as first in IANA list, delete?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- ISO 639-2 codes&lt;br /&gt;
	[&amp;quot;ber&amp;quot;] = {&amp;quot;Berber&amp;quot;},														-- Berber languages&lt;br /&gt;
	[&amp;quot;cel&amp;quot;] = {&amp;quot;Proto-Celtic&amp;quot;},													-- Celtic languages&lt;br /&gt;
	[&amp;quot;gem&amp;quot;] = {&amp;quot;Proto-Germanic&amp;quot;},												-- Germanic languages&lt;br /&gt;
	[&amp;quot;myn&amp;quot;] = {&amp;quot;Mayan&amp;quot;},														-- Mayan languages&lt;br /&gt;
	[&amp;quot;nah&amp;quot;] = {&amp;quot;Nahuatl&amp;quot;},														-- Nahuatl languages&lt;br /&gt;
	[&amp;quot;pra&amp;quot;] = {&amp;quot;Prakrit&amp;quot;},														-- Prakrit languages&lt;br /&gt;
--	[&amp;quot;roa&amp;quot;] = {&amp;quot;Jèrriais&amp;quot;},														-- Romance languages&lt;br /&gt;
	[&amp;quot;sal&amp;quot;] = {&amp;quot;Salish&amp;quot;},														-- Salishan languages&lt;br /&gt;
	[&amp;quot;sla&amp;quot;] = {&amp;quot;Slavic&amp;quot;},														-- Slavic languages&lt;br /&gt;
	[&amp;quot;son&amp;quot;] = {&amp;quot;Songhay&amp;quot;},														-- Songhai languages&lt;br /&gt;
	[&amp;quot;wen&amp;quot;] = {&amp;quot;Sorbian&amp;quot;},														-- Sorbian languages&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- ISO 639-3 codes&lt;br /&gt;
	[&amp;quot;abk&amp;quot;] = {&amp;quot;Abkhaz&amp;quot;},														-- not in IANA; see code ab&lt;br /&gt;
	[&amp;quot;ace&amp;quot;] = {&amp;quot;Acehnese&amp;quot;},														-- Achinese&lt;br /&gt;
	[&amp;quot;aec&amp;quot;] = {&amp;quot;Sa'idi Arabic&amp;quot;},												-- Saidi Arabic&lt;br /&gt;
	[&amp;quot;ain&amp;quot;] = {&amp;quot;Ainu&amp;quot;},															-- Ainu (Japan)&lt;br /&gt;
	[&amp;quot;akl&amp;quot;] = {&amp;quot;Aklan&amp;quot;},														-- Aklanon&lt;br /&gt;
	[&amp;quot;alt&amp;quot;] = {&amp;quot;Altay&amp;quot;},														-- Southern Altai&lt;br /&gt;
	[&amp;quot;ang&amp;quot;] = {&amp;quot;Old English&amp;quot;},													-- Old English (ca. 450-1100)&lt;br /&gt;
	[&amp;quot;apm&amp;quot;] = {&amp;quot;Mescalero-Chiricahua&amp;quot;},											-- Mescalero-Chiricahua Apache&lt;br /&gt;
	[&amp;quot;bal&amp;quot;] = {&amp;quot;Balochi&amp;quot;},														-- Baluchi&lt;br /&gt;
	[&amp;quot;bar&amp;quot;] = {&amp;quot;Austro-Bavarian&amp;quot;},												-- Bavarian&lt;br /&gt;
	[&amp;quot;bcl&amp;quot;] = {&amp;quot;Central Bicolano&amp;quot;},												-- Central Bikol&lt;br /&gt;
	[&amp;quot;bin&amp;quot;] = {&amp;quot;Edo&amp;quot;},															-- Bini, Edo&lt;br /&gt;
	[&amp;quot;bpy&amp;quot;] = {&amp;quot;Bishnupriya Manipuri&amp;quot;},											-- Bishnupriya&lt;br /&gt;
	[&amp;quot;brx&amp;quot;] = {&amp;quot;Bodo&amp;quot;},															-- Bodo (India)&lt;br /&gt;
	[&amp;quot;chg&amp;quot;] = {&amp;quot;Chagatay&amp;quot;},														-- Chagatai&lt;br /&gt;
	[&amp;quot;chm&amp;quot;] = {&amp;quot;Mari&amp;quot;},															-- Mari (Russia)&lt;br /&gt;
	[&amp;quot;ckb&amp;quot;] = {&amp;quot;Sorani Kurdish&amp;quot;},												-- Central Kurdish&lt;br /&gt;
	[&amp;quot;cnu&amp;quot;] = {&amp;quot;Shenwa&amp;quot;},														-- Chenoua&lt;br /&gt;
	[&amp;quot;coc&amp;quot;] = {&amp;quot;Cocopah&amp;quot;},														-- Cocopa&lt;br /&gt;
	[&amp;quot;deu&amp;quot;] = {&amp;quot;early German&amp;quot;},													-- not in IANA; see code de&lt;br /&gt;
	[&amp;quot;diq&amp;quot;] = {&amp;quot;Zazaki&amp;quot;},														-- Dimli (individual language)&lt;br /&gt;
	[&amp;quot;egy&amp;quot;] = {&amp;quot;Egyptian&amp;quot;},														-- Egyptian (Ancient)&lt;br /&gt;
	[&amp;quot;ell&amp;quot;] = {&amp;quot;Modern Greek&amp;quot;},													-- not in IANA; see code el&lt;br /&gt;
	[&amp;quot;enm&amp;quot;] = {&amp;quot;Middle English&amp;quot;},												-- Middle English (1100-1500)&lt;br /&gt;
	[&amp;quot;fit&amp;quot;] = {&amp;quot;Meänkieli&amp;quot;},													-- Tornedalen Finnish&lt;br /&gt;
	[&amp;quot;fkv&amp;quot;] = {&amp;quot;Kven&amp;quot;},															-- Kven Finnish&lt;br /&gt;
	[&amp;quot;frk&amp;quot;] = {&amp;quot;Old Frankish&amp;quot;},													-- Frankish&lt;br /&gt;
	[&amp;quot;frm&amp;quot;] = {&amp;quot;Middle French&amp;quot;},												-- Middle French (ca. 1400-1600)&lt;br /&gt;
	[&amp;quot;fro&amp;quot;] = {&amp;quot;Old French&amp;quot;},													-- Old French (842-ca. 1400)&lt;br /&gt;
	[&amp;quot;fry&amp;quot;] = {&amp;quot;West Frisian&amp;quot;},													-- not in IANA; see code fy&lt;br /&gt;
	[&amp;quot;gez&amp;quot;] = {&amp;quot;Ge'ez&amp;quot;},														-- Geez&lt;br /&gt;
	[&amp;quot;gju&amp;quot;] = {&amp;quot;Gujari &amp;quot;},														-- Gujari; same, delete?&lt;br /&gt;
	[&amp;quot;gmh&amp;quot;] = {&amp;quot;Middle High German&amp;quot;},											-- Middle High German (ca. 1050-1500)&lt;br /&gt;
	[&amp;quot;goh&amp;quot;] = {&amp;quot;Old High German&amp;quot;},												-- Old High German (ca. 750-1050)&lt;br /&gt;
	[&amp;quot;grc&amp;quot;] = {&amp;quot;Ancient Greek&amp;quot;},												-- Ancient Greek (to 1453)&lt;br /&gt;
	[&amp;quot;gsw&amp;quot;] = {&amp;quot;Alemannic German&amp;quot;},												-- Swiss German, Alemannic, Alsatian&lt;br /&gt;
	[&amp;quot;gul&amp;quot;] = {&amp;quot;Gullah&amp;quot;},														-- Sea Island Creole English&lt;br /&gt;
	[&amp;quot;hak&amp;quot;] = {&amp;quot;Hakka&amp;quot;},														-- Hakka Chinese&lt;br /&gt;
	[&amp;quot;hbo&amp;quot;] = {&amp;quot;Biblical Hebrew&amp;quot;},												-- Ancient Hebrew&lt;br /&gt;
	[&amp;quot;hnd&amp;quot;] = {&amp;quot;Hindko&amp;quot;},														-- Southern Hindko&lt;br /&gt;
	[&amp;quot;ikt&amp;quot;] = {&amp;quot;Inuvialuk&amp;quot;},													-- Inuinnaqtun, Western Canadian Inuktitut&lt;br /&gt;
	[&amp;quot;ilo&amp;quot;] = {&amp;quot;Ilokano&amp;quot;},														-- Iloko&lt;br /&gt;
	[&amp;quot;kaa&amp;quot;] = {&amp;quot;Karakalpak&amp;quot;},													-- Kara-Kalpak&lt;br /&gt;
	[&amp;quot;khb&amp;quot;] = {&amp;quot;Tai Lü&amp;quot;},														-- Lü&lt;br /&gt;
	[&amp;quot;kmr&amp;quot;] = {&amp;quot;Kurmanji Kurdish&amp;quot;},												-- Northern Kurdish&lt;br /&gt;
	[&amp;quot;knn&amp;quot;] = {&amp;quot;Konkani&amp;quot;},														-- Konkani (individual language)&lt;br /&gt;
	[&amp;quot;kok&amp;quot;] = {&amp;quot;Konkani&amp;quot;},														-- Konkani (macrolanguage)&lt;br /&gt;
	[&amp;quot;kpo&amp;quot;] = {&amp;quot;Kposo&amp;quot;},														-- Ikposo&lt;br /&gt;
	[&amp;quot;krj&amp;quot;] = {&amp;quot;Kinaray-a&amp;quot;},													-- Kinaray-A&lt;br /&gt;
	[&amp;quot;ksh&amp;quot;] = {&amp;quot;Ripuarian&amp;quot;},													-- Kölsch;  --ksh is the code of Colognian, but ksh.wiki is the Ripuarian Wikipedia&lt;br /&gt;
	[&amp;quot;ktz&amp;quot;] = {&amp;quot;Juǀ'hoan&amp;quot;},														-- Ju/'hoan, Juǀʼhoan, Juǀʼhoansi&lt;br /&gt;
	[&amp;quot;lez&amp;quot;] = {&amp;quot;Lezgian&amp;quot;},														-- Lezghian&lt;br /&gt;
	[&amp;quot;liv&amp;quot;] = {&amp;quot;Livonian&amp;quot;},														-- Liv&lt;br /&gt;
	[&amp;quot;lng&amp;quot;] = {&amp;quot;Lombardic&amp;quot;},													-- Langobardic&lt;br /&gt;
	[&amp;quot;maz&amp;quot;] = {&amp;quot;Mazovian&amp;quot;},														-- Central Mazahua&lt;br /&gt;
	[&amp;quot;mga&amp;quot;] = {&amp;quot;Middle Irish&amp;quot;},													-- Middle Irish (900-1200)&lt;br /&gt;
	[&amp;quot;mhr&amp;quot;] = {&amp;quot;Mari&amp;quot;},															-- Eastern Mari&lt;br /&gt;
	[&amp;quot;mia&amp;quot;] = {&amp;quot;Miami-Illinois&amp;quot;},												-- Miami&lt;br /&gt;
	[&amp;quot;miq&amp;quot;] = {&amp;quot;Miskito&amp;quot;},														-- Mískito&lt;br /&gt;
	[&amp;quot;mix&amp;quot;] = {&amp;quot;Mixtec&amp;quot;},														-- Mixtepec Mixtec&lt;br /&gt;
--	[&amp;quot;mla&amp;quot;] = {&amp;quot;Medieval Latin&amp;quot;},												-- Malo; clearly a misuse of code mla;&lt;br /&gt;
	[&amp;quot;mni&amp;quot;] = {&amp;quot;Meitei&amp;quot;},														-- Manipuri&lt;br /&gt;
	[&amp;quot;mol&amp;quot;] = {&amp;quot;Moldovan&amp;quot;, &amp;quot;ro&amp;quot;},												-- Moldavian, Moldovan (639-3, both retired)&lt;br /&gt;
	[&amp;quot;mrj&amp;quot;] = {&amp;quot;Hill Mari&amp;quot;},													-- Western Mari&lt;br /&gt;
	[&amp;quot;mww&amp;quot;] = {&amp;quot;White Hmong&amp;quot;},													-- Hmong Daw&lt;br /&gt;
	[&amp;quot;mzn&amp;quot;] = {&amp;quot;Mazanderani&amp;quot;},													-- Mazanderani&lt;br /&gt;
	[&amp;quot;nan&amp;quot;] = {&amp;quot;Taiwanese Hokkien&amp;quot;},											-- Min Nan Chinese&lt;br /&gt;
	[&amp;quot;naq&amp;quot;] = {&amp;quot;Khoekhoe&amp;quot;},														-- Khoekhoe, Nama (Namibia); same as first in IANA list, delete?&lt;br /&gt;
--	[&amp;quot;naz&amp;quot;] = {&amp;quot;North Azeri&amp;quot;},													-- Coatepec Nahuatl; clearly a misuse of code naz&lt;br /&gt;
	[&amp;quot;nci&amp;quot;] = {&amp;quot;Classical Nahuatl&amp;quot;},											-- Classical Nahuatl; same, delete?&lt;br /&gt;
	[&amp;quot;nds-nl&amp;quot;] = {&amp;quot;Dutch Low Saxon&amp;quot;},											-- Low German, Low Saxon; as spoken in the Netherlands; see code nsd&lt;br /&gt;
	[&amp;quot;new&amp;quot;] = {&amp;quot;Nepal Bhasa&amp;quot;},													-- Newari, Nepal Bhasa&lt;br /&gt;
--	[&amp;quot;nrm&amp;quot;] = {&amp;quot;Norman&amp;quot;},														-- Narom; clearly a misuse of code nrm&lt;br /&gt;
--	[&amp;quot;nsd&amp;quot;] = {&amp;quot;Dutch Low Saxon&amp;quot;},												-- Southern Nisu; how can this be right? typo related to code nds-nl?&lt;br /&gt;
	[&amp;quot;nso&amp;quot;] = {&amp;quot;Northern Sotho&amp;quot;},												-- Pedi, Northern Sotho, Sepedi&lt;br /&gt;
	[&amp;quot;nwc&amp;quot;] = {&amp;quot;Classical Nepal Bhasa&amp;quot;},										-- Classical Newari, Classical Nepal Bhasa, Old Newari&lt;br /&gt;
	[&amp;quot;oci&amp;quot;] = {&amp;quot;Provençal&amp;quot;},													-- oc&lt;br /&gt;
	[&amp;quot;ood&amp;quot;] = {&amp;quot;O'odham&amp;quot;},														-- Tohono O'odham&lt;br /&gt;
	[&amp;quot;ota&amp;quot;] = {&amp;quot;Ottoman Turkish&amp;quot;},												-- Ottoman Turkish (1500-1928)&lt;br /&gt;
	[&amp;quot;otk&amp;quot;] = {&amp;quot;Old Turkic&amp;quot;},													-- Old Turkish&lt;br /&gt;
	[&amp;quot;pal&amp;quot;] = {&amp;quot;Middle Persian&amp;quot;},												-- Pahlavi&lt;br /&gt;
	[&amp;quot;pam&amp;quot;] = {&amp;quot;Kapampangan&amp;quot;},													-- Pampanga, Kapampangan&lt;br /&gt;
	[&amp;quot;peo&amp;quot;] = {&amp;quot;Old Persian&amp;quot;},													-- Old Persian (ca. 600-400 B.C.)&lt;br /&gt;
	[&amp;quot;phr&amp;quot;] = {&amp;quot;Potwari&amp;quot;},														-- Pahari-Potwari&lt;br /&gt;
	[&amp;quot;pka&amp;quot;] = {&amp;quot;Jain Prakrit&amp;quot;},													-- Ardhamāgadhī Prākrit&lt;br /&gt;
	[&amp;quot;pnb&amp;quot;] = {&amp;quot;Punjabi&amp;quot;},														-- Western Panjabi&lt;br /&gt;
	[&amp;quot;psu&amp;quot;] = {&amp;quot;Shauraseni&amp;quot;},													-- Sauraseni Prākrit&lt;br /&gt;
	[&amp;quot;rap&amp;quot;] = {&amp;quot;Rapa Nui&amp;quot;},														-- Rapanui&lt;br /&gt;
	[&amp;quot;rar&amp;quot;] = {&amp;quot;Cook Islands Māori&amp;quot;},											-- Rarotongan, Cook Islands Maori&lt;br /&gt;
	[&amp;quot;rmu&amp;quot;] = {&amp;quot;Scandoromani&amp;quot;},													-- Tavringer Romani&lt;br /&gt;
	[&amp;quot;rom&amp;quot;] = {&amp;quot;Romani&amp;quot;},														-- Romany&lt;br /&gt;
	[&amp;quot;rup&amp;quot;] = {&amp;quot;Aromanian&amp;quot;},													-- Macedo-Romanian, Aromanian, Arumanian&lt;br /&gt;
	[&amp;quot;rus&amp;quot;] = {&amp;quot;Russian&amp;quot;},														-- not in IANA; see code ru&lt;br /&gt;
	[&amp;quot;ryu&amp;quot;] = {&amp;quot;Okinawan&amp;quot;},														-- Central Okinawan&lt;br /&gt;
--	[&amp;quot;sah&amp;quot;] = {&amp;quot;Sakha&amp;quot;},														-- Yakut; article moved to Yakut with this disucssion: Talk:Yakut_language#Requested_move_21_September_2015&lt;br /&gt;
	[&amp;quot;sdc&amp;quot;] = {&amp;quot;Sassarese&amp;quot;},													-- Sassarese Sardinian&lt;br /&gt;
	[&amp;quot;sdn&amp;quot;] = {&amp;quot;Gallurese&amp;quot;},													-- Gallurese Sardinian&lt;br /&gt;
	[&amp;quot;sga&amp;quot;] = {&amp;quot;Old Irish&amp;quot;},													-- Old Irish (to 900)&lt;br /&gt;
	[&amp;quot;shp&amp;quot;] = {&amp;quot;Shipibo&amp;quot;},														-- Shipibo-Conibo&lt;br /&gt;
	[&amp;quot;skr&amp;quot;] = {&amp;quot;Saraiki&amp;quot;},														-- Saraiki, Seraiki; same as first in IANA list, delete?&lt;br /&gt;
	[&amp;quot;src&amp;quot;] = {&amp;quot;Logudorese&amp;quot;},													-- Logudorese Sardinian&lt;br /&gt;
	[&amp;quot;sro&amp;quot;] = {&amp;quot;Campidanese&amp;quot;},													-- Campidanese Sardinian&lt;br /&gt;
	[&amp;quot;tkl&amp;quot;] = {&amp;quot;Tokelauan&amp;quot;},													-- Tokelau&lt;br /&gt;
	[&amp;quot;tvl&amp;quot;] = {&amp;quot;Tuvaluan&amp;quot;},														-- Tuvalu&lt;br /&gt;
	[&amp;quot;tyv&amp;quot;] = {&amp;quot;Tuvan&amp;quot;},														-- Tuvinian&lt;br /&gt;
	[&amp;quot;vls&amp;quot;] = {&amp;quot;West Flemish&amp;quot;},													-- Vlaams&lt;br /&gt;
	[&amp;quot;war&amp;quot;] = {&amp;quot;Waray&amp;quot;},														-- Waray (Philippines)&lt;br /&gt;
	[&amp;quot;wep&amp;quot;] = {&amp;quot;Westphalian&amp;quot;},													-- Westphalien&lt;br /&gt;
	[&amp;quot;xal&amp;quot;] = {&amp;quot;Oirat&amp;quot;},														-- Kalmyk, Oirat&lt;br /&gt;
	[&amp;quot;xal-RU&amp;quot;] = {&amp;quot;Kalmyk Oirat&amp;quot;},&lt;br /&gt;
	[&amp;quot;xcl&amp;quot;] = {&amp;quot;Old Armenian&amp;quot;},													-- Classical Armenian&lt;br /&gt;
	[&amp;quot;yua&amp;quot;] = {&amp;quot;Yucatec Maya&amp;quot;},													-- Yucateco, Yucatec Maya&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- non-standard codes&lt;br /&gt;
	[&amp;quot;bat-smg&amp;quot;] = {&amp;quot;Samogitian&amp;quot;},												-- bat = Baltic languages (639-2); dialect of Lithuanian has it's own IANA code sgs; bat-smg&lt;br /&gt;
	[&amp;quot;be-x-old &amp;quot;] = {&amp;quot;Belarusian (Taraškievica)&amp;quot;},								-- be = Belarusian; x-old = private use tag; be-x-old.wikipedia.org; space char in index may indicate that this code not used&lt;br /&gt;
	[&amp;quot;cbk-zam&amp;quot;] = {&amp;quot;Chavacano&amp;quot;},												-- cbk = Chavacano; zam = Zamboangueño? zam is not an IANA-registered extlang; cbk-zam.wikipedia.org&lt;br /&gt;
--	[&amp;quot;cg&amp;quot;] = {&amp;quot;Montenegrin&amp;quot;, &amp;quot;sr-ME&amp;quot;},											-- IANA / ISO 639-3 code is cnr&lt;br /&gt;
	[&amp;quot;en-emodeng&amp;quot;] = {&amp;quot;Early Modern English&amp;quot;},									-- emodeng is not an IANA-registered variant&lt;br /&gt;
	[&amp;quot;fiu-vro&amp;quot;] = {&amp;quot;Võro&amp;quot;},														-- fiu = Finno-Ugrian languages (639-2); vro = Võro (639-3); fiu-vro.wikipedia.org&lt;br /&gt;
	[&amp;quot;gkm&amp;quot;] = {&amp;quot;Medieval Greek&amp;quot;, &amp;quot;grc&amp;quot;},&lt;br /&gt;
	[&amp;quot;grc-gre&amp;quot;] = {&amp;quot;Greek&amp;quot;, &amp;quot;grc&amp;quot;},												-- grc = Ancient Greek (to 1453); gre not an IANA-registered code; used by Template:lang-grc-gre&lt;br /&gt;
	[&amp;quot;map-bms&amp;quot;] = {&amp;quot;Banyumasan&amp;quot;},												-- dialect of Javanese; map = Austronesian languages (639-2); bms is an IANA registered code not related to Javanese; map-bms.wikipedia.org&lt;br /&gt;
	[&amp;quot;roa-rup&amp;quot;] = {&amp;quot;Aromanian&amp;quot;},												-- roa = Romance languages (639-2); rup = Macedo-Romanian, Aromanian, Arumanian (639-3); roa-rup.wikipedia.org&lt;br /&gt;
	[&amp;quot;roa-tara&amp;quot;] = {&amp;quot;Tarantino&amp;quot;},												-- roa = Romance languages (639-2); tara is not an IANA registered script; roa-tara.wikipedia.org&lt;br /&gt;
	[&amp;quot;simple&amp;quot;] = {&amp;quot;Simple English&amp;quot;},											-- simple is not an IANA registered variant; simple.wikipedia.org&lt;br /&gt;
	[&amp;quot;zh-classical&amp;quot;] = {&amp;quot;Classical Chinese&amp;quot;},									-- zh = Chinese; classical is not an IANA-registered variant; zh-classical.wikipedia.org&lt;br /&gt;
	[&amp;quot;zh-min-nan&amp;quot;] = {&amp;quot;Min Nan&amp;quot;},												-- zh-min-nan = Minnan, Hokkien, Amoy, Taiwanese, Southern Min, Southern Fujian, Hoklo, Southern Fukien, Ho-lo; granfathered in IANA, nan preferred; zh-min-nan.wikipedia.org&lt;br /&gt;
	[&amp;quot;zh-yue&amp;quot;] = {&amp;quot;Cantonese&amp;quot;}													-- zh-yue = Cantonese; redundant in IANA, yue preferred; zh-yue.wikipedia.org&lt;br /&gt;
	}&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=Module:Language/data/iana_variants&amp;diff=1322</id>
		<title>Module:Language/data/iana variants</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=Module:Language/data/iana_variants&amp;diff=1322"/>
		<updated>2019-09-06T09:28:12Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- File-Date: 2019-04-30&lt;br /&gt;
return {&lt;br /&gt;
	[&amp;quot;1606nict&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Late Middle French (to 1606)&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;frm&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;1694acad&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Early Modern French&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;fr&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;1901&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Traditional German orthography&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;de&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;1959acad&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;\&amp;quot;Academic\&amp;quot; (\&amp;quot;governmental\&amp;quot;) variant of Belarusian as codified in 1959&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;be&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;1994&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Standardized Resian orthography&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;sl-rozaj&amp;quot;, &amp;quot;sl-rozaj-biske&amp;quot;, &amp;quot;sl-rozaj-njiva&amp;quot;, &amp;quot;sl-rozaj-osojs&amp;quot;, &amp;quot;sl-rozaj-solba&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;1996&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;German orthography of 1996&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;de&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;abl1943&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Orthographic formulation of 1943 - Official in Brazil (Formulário Ortográfico de 1943 - Oficial no Brasil)&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;pt-br&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;alalc97&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;ALA-LC Romanization, 1997 edition&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;aluku&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Aluku dialect&amp;quot;, &amp;quot;Boni dialect&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;djk&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;akuapem&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Akuapem Twi&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;tw&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;ao1990&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Portuguese Language Orthographic Agreement of 1990 (Acordo Ortográfico da Língua Portuguesa de 1990)&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;pt&amp;quot;, &amp;quot;gl&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;aranes&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Aranese&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;oc&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;asante&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Asante Twi&amp;quot;, &amp;quot;Ashanti Twi&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;tw&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;auvern&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Auvergnat&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;oc&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;baku1926&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Unified Turkic Latin Alphabet (Historical)&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;az&amp;quot;, &amp;quot;ba&amp;quot;, &amp;quot;crh&amp;quot;, &amp;quot;kk&amp;quot;, &amp;quot;krc&amp;quot;, &amp;quot;ky&amp;quot;, &amp;quot;sah&amp;quot;, &amp;quot;tk&amp;quot;, &amp;quot;tt&amp;quot;, &amp;quot;uz&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;balanka&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;The Balanka dialect of Anii&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;blo&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;barla&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;The Barlavento dialect group of Kabuverdianu&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;kea&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;basiceng&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Basic English&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;en&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;bauddha&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Buddhist Hybrid Sanskrit&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;sa&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;biscayan&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Biscayan dialect of Basque&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;eu&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;biske&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;The San Giorgio dialect of Resian&amp;quot;, &amp;quot;The Bila dialect of Resian&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;sl-rozaj&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;bohoric&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Slovene in Bohorič alphabet&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;sl&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;boont&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Boontling&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;en&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;bornholm&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Bornholmsk&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;da&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;cisaup&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Cisalpine&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;oc&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;colb1945&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Portuguese-Brazilian Orthographic Convention of 1945 (Convenção Ortográfica Luso-Brasileira de 1945)&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;pt&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;cornu&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Cornu-English&amp;quot;, &amp;quot;Cornish English&amp;quot;, &amp;quot;Anglo-Cornish&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;en&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;creiss&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Occitan variants of the Croissant area&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;oc&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;dajnko&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Slovene in Dajnko alphabet&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;sl&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;ekavsk&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Serbian with Ekavian pronunciation&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;sr&amp;quot;, &amp;quot;sr-latn&amp;quot;, &amp;quot;sr-cyrl&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;emodeng&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Early Modern English (1500-1700)&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;en&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;fonipa&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;International Phonetic Alphabet&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;fonkirsh&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Kirshenbaum Phonetic Alphabet&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;fonnapa&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;North American Phonetic Alphabet&amp;quot;, &amp;quot;Americanist Phonetic Notation&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;fonupa&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Uralic Phonetic Alphabet&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;fonxsamp&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;X-SAMPA transcription&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;gascon&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Gascon&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;oc&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;grclass&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Classical Occitan orthography&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;oc&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;grital&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Italian-inspired Occitan orthography&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;oc&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;grmistr&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Mistralian or Mistralian-inspired Occitan orthography&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;oc&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;hepburn&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Hepburn romanization&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;ja-latn&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;hognorsk&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Norwegian in Høgnorsk (High Norwegian) orthography&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;nn&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;hsistemo&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Standard H-system orthographic fallback for spelling Esperanto&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;eo&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;ijekavsk&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Serbian with Ijekavian pronunciation&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;sr&amp;quot;, &amp;quot;sr-latn&amp;quot;, &amp;quot;sr-cyrl&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;itihasa&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Epic Sanskrit&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;sa&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;ivanchov&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Bulgarian in 1899 orthography&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;bg&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;jauer&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Jauer dialect of Romansh&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;rm&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;jyutping&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Jyutping Cantonese Romanization&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;yue&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;kkcor&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Common Cornish orthography of Revived Cornish&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;kw&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;kociewie&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;The Kociewie dialect of Polish&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;pl&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;kscor&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Standard Cornish orthography of Revived Cornish&amp;quot;, &amp;quot;Kernowek Standard&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;kw&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;laukika&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Classical Sanskrit&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;sa&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;lemosin&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Limousin&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;oc&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;lengadoc&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Languedocien&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;oc&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;lipaw&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;The Lipovaz dialect of Resian&amp;quot;, &amp;quot;The Lipovec dialect of Resian&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;sl-rozaj&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;luna1918&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Post-1917 Russian orthography&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;ru&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;metelko&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Slovene in Metelko alphabet&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;sl&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;monoton&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Monotonic Greek&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;el&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;ndyuka&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Ndyuka dialect&amp;quot;, &amp;quot;Aukan dialect&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;djk&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;nedis&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Natisone dialect&amp;quot;, &amp;quot;Nadiza dialect&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;sl&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;newfound&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Newfoundland English&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;en-ca&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;nicard&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Niçard&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;oc&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;njiva&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;The Gniva dialect of Resian&amp;quot;, &amp;quot;The Njiva dialect of Resian&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;sl-rozaj&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;nulik&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Volapük nulik&amp;quot;, &amp;quot;Volapük perevidöl&amp;quot;, &amp;quot;Volapük nulädik&amp;quot;, &amp;quot;de Jong's Volapük&amp;quot;, &amp;quot;New Volapük&amp;quot;, &amp;quot;Revised Volapük&amp;quot;, &amp;quot;Modern Volapük&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;vo&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;osojs&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;The Oseacco dialect of Resian&amp;quot;, &amp;quot;The Osojane dialect of Resian&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;sl-rozaj&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;oxendict&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Oxford English Dictionary spelling&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;en&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;pahawh2&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Pahawh Hmong Second Stage Reduced orthography&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;mww&amp;quot;, &amp;quot;hnj&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;pahawh3&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Pahawh Hmong Third Stage Reduced orthography&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;mww&amp;quot;, &amp;quot;hnj&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;pahawh4&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Pahawh Hmong Final Version orthography&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;mww&amp;quot;, &amp;quot;hnj&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;pamaka&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Pamaka dialect&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;djk&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;petr1708&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Petrine orthography&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;ru&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;pinyin&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Pinyin romanization&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;zh-latn&amp;quot;, &amp;quot;bo-latn&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;polyton&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Polytonic Greek&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;el&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;provenc&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Provençal&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;oc&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;puter&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Puter idiom of Romansh&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;rm&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;rigik&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Volapük rigik&amp;quot;, &amp;quot;Schleyer's Volapük&amp;quot;, &amp;quot;Original Volapük&amp;quot;, &amp;quot;Classic Volapük&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;vo&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;rozaj&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Resian&amp;quot;, &amp;quot;Resianic&amp;quot;, &amp;quot;Rezijan&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;sl&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;rumgr&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Rumantsch Grischun&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;rm&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;scotland&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Scottish Standard English&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;en&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;scouse&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Scouse&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;en&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;simple&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Simplified form&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;solba&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;The Stolvizza dialect of Resian&amp;quot;, &amp;quot;The Solbica dialect of Resian&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;sl-rozaj&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;sotav&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;The Sotavento dialect group of Kabuverdianu&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;kea&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;spanglis&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Spanglish&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;en&amp;quot;, &amp;quot;es&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;surmiran&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Surmiran idiom of Romansh&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;rm&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;sursilv&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Sursilvan idiom of Romansh&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;rm&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;sutsilv&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Sutsilvan idiom of Romansh&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;rm&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;tarask&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Belarusian in Taraskievica orthography&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;be&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;uccor&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Unified Cornish orthography of Revived Cornish&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;kw&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;ucrcor&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Unified Cornish Revised orthography of Revived Cornish&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;kw&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;ulster&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Ulster dialect of Scots&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;sco&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;unifon&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Unifon phonetic alphabet&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;en&amp;quot;, &amp;quot;hup&amp;quot;, &amp;quot;kyh&amp;quot;, &amp;quot;tol&amp;quot;, &amp;quot;yur&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;vaidika&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Vedic Sanskrit&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;sa&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;valencia&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Valencian&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;ca&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;vallader&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Vallader idiom of Romansh&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;rm&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;vivaraup&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Vivaro-Alpine&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;oc&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;wadegile&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Wade-Giles romanization&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;zh-latn&amp;quot;},&lt;br /&gt;
		},&lt;br /&gt;
	[&amp;quot;xsistemo&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;descriptions&amp;quot;] = {&amp;quot;Standard X-system orthographic fallback for spelling Esperanto&amp;quot;},&lt;br /&gt;
		[&amp;quot;prefixes&amp;quot;] = {&amp;quot;eo&amp;quot;},&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=Module:Language/data/iana_suppressed_scripts&amp;diff=1320</id>
		<title>Module:Language/data/iana suppressed scripts</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=Module:Language/data/iana_suppressed_scripts&amp;diff=1320"/>
		<updated>2019-09-06T09:28:11Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- File-Date: 2019-04-30&lt;br /&gt;
return {&lt;br /&gt;
	[&amp;quot;Arab&amp;quot;] = {&amp;quot;ar&amp;quot;, &amp;quot;fa&amp;quot;, &amp;quot;ps&amp;quot;, &amp;quot;ur&amp;quot;},&lt;br /&gt;
	[&amp;quot;Armn&amp;quot;] = {&amp;quot;hy&amp;quot;},&lt;br /&gt;
	[&amp;quot;Beng&amp;quot;] = {&amp;quot;as&amp;quot;, &amp;quot;bn&amp;quot;},&lt;br /&gt;
	[&amp;quot;Blis&amp;quot;] = {&amp;quot;zbl&amp;quot;},&lt;br /&gt;
	[&amp;quot;Cyrl&amp;quot;] = {&amp;quot;ab&amp;quot;, &amp;quot;be&amp;quot;, &amp;quot;bg&amp;quot;, &amp;quot;kk&amp;quot;, &amp;quot;mk&amp;quot;, &amp;quot;ru&amp;quot;, &amp;quot;uk&amp;quot;},&lt;br /&gt;
	[&amp;quot;Deva&amp;quot;] = {&amp;quot;hi&amp;quot;, &amp;quot;mr&amp;quot;, &amp;quot;ne&amp;quot;, &amp;quot;kok&amp;quot;, &amp;quot;mai&amp;quot;},&lt;br /&gt;
	[&amp;quot;Ethi&amp;quot;] = {&amp;quot;am&amp;quot;, &amp;quot;ti&amp;quot;},&lt;br /&gt;
	[&amp;quot;Geor&amp;quot;] = {&amp;quot;ka&amp;quot;},&lt;br /&gt;
	[&amp;quot;Grek&amp;quot;] = {&amp;quot;el&amp;quot;},&lt;br /&gt;
	[&amp;quot;Gujr&amp;quot;] = {&amp;quot;gu&amp;quot;},&lt;br /&gt;
	[&amp;quot;Guru&amp;quot;] = {&amp;quot;pa&amp;quot;},&lt;br /&gt;
	[&amp;quot;Hebr&amp;quot;] = {&amp;quot;he&amp;quot;, &amp;quot;yi&amp;quot;},&lt;br /&gt;
	[&amp;quot;Jpan&amp;quot;] = {&amp;quot;ja&amp;quot;},&lt;br /&gt;
	[&amp;quot;Khmr&amp;quot;] = {&amp;quot;km&amp;quot;},&lt;br /&gt;
	[&amp;quot;Knda&amp;quot;] = {&amp;quot;kn&amp;quot;},&lt;br /&gt;
	[&amp;quot;Kore&amp;quot;] = {&amp;quot;ko&amp;quot;},&lt;br /&gt;
	[&amp;quot;Laoo&amp;quot;] = {&amp;quot;lo&amp;quot;},&lt;br /&gt;
	[&amp;quot;Latn&amp;quot;] = {&amp;quot;af&amp;quot;, &amp;quot;ay&amp;quot;, &amp;quot;bs&amp;quot;, &amp;quot;ca&amp;quot;, &amp;quot;ch&amp;quot;, &amp;quot;cs&amp;quot;, &amp;quot;cy&amp;quot;, &amp;quot;da&amp;quot;, &amp;quot;de&amp;quot;, &amp;quot;en&amp;quot;, &amp;quot;eo&amp;quot;,&lt;br /&gt;
				&amp;quot;es&amp;quot;, &amp;quot;et&amp;quot;, &amp;quot;eu&amp;quot;, &amp;quot;fi&amp;quot;, &amp;quot;fj&amp;quot;, &amp;quot;fo&amp;quot;, &amp;quot;fr&amp;quot;, &amp;quot;fy&amp;quot;, &amp;quot;ga&amp;quot;, &amp;quot;gl&amp;quot;, &amp;quot;gn&amp;quot;,&lt;br /&gt;
				&amp;quot;gv&amp;quot;, &amp;quot;hr&amp;quot;, &amp;quot;ht&amp;quot;, &amp;quot;hu&amp;quot;, &amp;quot;id&amp;quot;, &amp;quot;is&amp;quot;, &amp;quot;it&amp;quot;, &amp;quot;kl&amp;quot;, &amp;quot;la&amp;quot;, &amp;quot;lb&amp;quot;, &amp;quot;ln&amp;quot;,&lt;br /&gt;
				&amp;quot;lt&amp;quot;, &amp;quot;lv&amp;quot;, &amp;quot;mg&amp;quot;, &amp;quot;mh&amp;quot;, &amp;quot;ms&amp;quot;, &amp;quot;mt&amp;quot;, &amp;quot;na&amp;quot;, &amp;quot;nb&amp;quot;, &amp;quot;nd&amp;quot;, &amp;quot;nl&amp;quot;, &amp;quot;nn&amp;quot;,&lt;br /&gt;
				&amp;quot;no&amp;quot;, &amp;quot;nr&amp;quot;, &amp;quot;ny&amp;quot;, &amp;quot;om&amp;quot;, &amp;quot;pl&amp;quot;, &amp;quot;pt&amp;quot;, &amp;quot;qu&amp;quot;, &amp;quot;rm&amp;quot;, &amp;quot;rn&amp;quot;, &amp;quot;ro&amp;quot;, &amp;quot;rw&amp;quot;,&lt;br /&gt;
				&amp;quot;sg&amp;quot;, &amp;quot;sk&amp;quot;, &amp;quot;sl&amp;quot;, &amp;quot;sm&amp;quot;, &amp;quot;so&amp;quot;, &amp;quot;sq&amp;quot;, &amp;quot;ss&amp;quot;, &amp;quot;st&amp;quot;, &amp;quot;sv&amp;quot;, &amp;quot;sw&amp;quot;, &amp;quot;tl&amp;quot;,&lt;br /&gt;
				&amp;quot;tn&amp;quot;, &amp;quot;to&amp;quot;, &amp;quot;tr&amp;quot;, &amp;quot;ts&amp;quot;, &amp;quot;ve&amp;quot;, &amp;quot;vi&amp;quot;, &amp;quot;xh&amp;quot;, &amp;quot;zu&amp;quot;, &amp;quot;dsb&amp;quot;, &amp;quot;frr&amp;quot;, &amp;quot;frs&amp;quot;,&lt;br /&gt;
				&amp;quot;gsw&amp;quot;, &amp;quot;hsb&amp;quot;, &amp;quot;men&amp;quot;, &amp;quot;nds&amp;quot;, &amp;quot;niu&amp;quot;, &amp;quot;nso&amp;quot;, &amp;quot;tem&amp;quot;, &amp;quot;tkl&amp;quot;, &amp;quot;tmh&amp;quot;, &amp;quot;tpi&amp;quot;, &amp;quot;tvl&amp;quot;},&lt;br /&gt;
	[&amp;quot;Mlym&amp;quot;] = {&amp;quot;ml&amp;quot;},&lt;br /&gt;
	[&amp;quot;Mymr&amp;quot;] = {&amp;quot;my&amp;quot;},&lt;br /&gt;
	[&amp;quot;Nkoo&amp;quot;] = {&amp;quot;nqo&amp;quot;},&lt;br /&gt;
	[&amp;quot;Orya&amp;quot;] = {&amp;quot;or&amp;quot;},&lt;br /&gt;
	[&amp;quot;Sinh&amp;quot;] = {&amp;quot;si&amp;quot;},&lt;br /&gt;
	[&amp;quot;Taml&amp;quot;] = {&amp;quot;ta&amp;quot;},&lt;br /&gt;
	[&amp;quot;Telu&amp;quot;] = {&amp;quot;te&amp;quot;},&lt;br /&gt;
	[&amp;quot;Thaa&amp;quot;] = {&amp;quot;dv&amp;quot;},&lt;br /&gt;
	[&amp;quot;Thai&amp;quot;] = {&amp;quot;th&amp;quot;},&lt;br /&gt;
	[&amp;quot;Tibt&amp;quot;] = {&amp;quot;dz&amp;quot;}&lt;br /&gt;
	}&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=FreeWiki:Impressum&amp;diff=764</id>
		<title>FreeWiki:Impressum</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=FreeWiki:Impressum&amp;diff=764"/>
		<updated>2019-04-08T12:18:22Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Jörg Wichmann&lt;br /&gt;
&lt;br /&gt;
(Fagus publishing house)&lt;br /&gt;
&lt;br /&gt;
Eigen 81, D-51503 Rösrath&lt;br /&gt;
&lt;br /&gt;
Phone:&amp;amp;nbsp;02205-912563 (no fax)&lt;br /&gt;
&lt;br /&gt;
Email: jw@provings.info&lt;br /&gt;
&lt;br /&gt;
Sales tax identification number according to § 27 a sales tax law: DE 204/5035/1527&lt;br /&gt;
&lt;br /&gt;
Responsible for content according to § 6 MDStV: Jörg Wichmann&lt;br /&gt;
&lt;br /&gt;
Technology/Implementation: tops.net, Bonn&lt;br /&gt;
&lt;br /&gt;
Disclaimer: Despite careful content control, we assume no liability for the content of external links. The operators of the linked pages are solely responsible for their content. We assume no liability for the correctness of the content of the statements within the framework of the systematics, naming of substances, references to literature, etc..&lt;br /&gt;
&lt;br /&gt;
For data [https://www.freewiki.eu/en/index.php?title=FreeWiki:Privacy_policy protection], see [https://www.freewiki.eu/en/index.php?title=FreeWiki:Privacy_policy here].&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=FreeWiki:Impressum&amp;diff=763</id>
		<title>FreeWiki:Impressum</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=FreeWiki:Impressum&amp;diff=763"/>
		<updated>2019-04-08T12:17:43Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Jörg Wichmann&lt;br /&gt;
&lt;br /&gt;
(Fagus publishing house)&lt;br /&gt;
&lt;br /&gt;
Eigen 81, D-51503 Rösrath&lt;br /&gt;
&lt;br /&gt;
Phone:&amp;amp;nbsp;02205-912563 (no fax)&lt;br /&gt;
&lt;br /&gt;
Email: jw@provings.info&lt;br /&gt;
&lt;br /&gt;
Sales tax identification number according to § 27 a sales tax law: DE 204/5035/1527&lt;br /&gt;
&lt;br /&gt;
Responsible for content according to § 6 MDStV: Jörg Wichmann&lt;br /&gt;
&lt;br /&gt;
Technology/Implementation: tops.net, Bonn&lt;br /&gt;
&lt;br /&gt;
Disclaimer: Despite careful content control, we assume no liability for the content of external links. The operators of the linked pages are solely responsible for their content. We assume no liability for the correctness of the content of the statements within the framework of the systematics, naming of substances, references to literature, etc..&lt;br /&gt;
&lt;br /&gt;
For data [https://www.freewiki.eu/en/index.php?title=FreeWiki:PrivacyPolicy protection], see here.&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=FreeWiki:Impressum&amp;diff=762</id>
		<title>FreeWiki:Impressum</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=FreeWiki:Impressum&amp;diff=762"/>
		<updated>2019-04-08T12:14:01Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: Created page with &amp;quot; Jörg Wichmann  (Fagus publishing house)  Eigen 81, D-51503 Rösrath  Phone:&amp;amp;nbsp;02205-912563 (no fax)  Email: jw@provings.info  Sales tax identification number according to...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Jörg Wichmann&lt;br /&gt;
&lt;br /&gt;
(Fagus publishing house)&lt;br /&gt;
&lt;br /&gt;
Eigen 81, D-51503 Rösrath&lt;br /&gt;
&lt;br /&gt;
Phone:&amp;amp;nbsp;02205-912563 (no fax)&lt;br /&gt;
&lt;br /&gt;
Email: jw@provings.info&lt;br /&gt;
&lt;br /&gt;
Sales tax identification number according to § 27 a sales tax law: DE 204/5035/1527&lt;br /&gt;
&lt;br /&gt;
Responsible for content according to § 6 MDStV: Jörg Wichmann&lt;br /&gt;
&lt;br /&gt;
Technology/Implementation: tops.net, Bonn&lt;br /&gt;
&lt;br /&gt;
Disclaimer: Despite careful content control, we assume no liability for the content of external links. The operators of the linked pages are solely responsible for their content. We assume no liability for the correctness of the content of the statements within the framework of the systematics, naming of substances, references to literature, etc..&lt;br /&gt;
&lt;br /&gt;
For data protection, see here.&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=MediaWiki:Cookiewarning-ok-label&amp;diff=292</id>
		<title>MediaWiki:Cookiewarning-ok-label</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=MediaWiki:Cookiewarning-ok-label&amp;diff=292"/>
		<updated>2018-07-18T15:27:29Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: Created page with &amp;quot; Agree&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Agree&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=Welcome_to_FreeWiki&amp;diff=258</id>
		<title>Welcome to FreeWiki</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=Welcome_to_FreeWiki&amp;diff=258"/>
		<updated>2018-07-17T08:54:22Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== FreeWiki Introduction ==&lt;br /&gt;
&lt;br /&gt;
'''Modifying the sovereignty over information and interpretation in controversial subjects.'''&lt;br /&gt;
&lt;br /&gt;
outline of a new project&lt;br /&gt;
&lt;br /&gt;
Wikipedia is a wonderful endeavour to collect all human knowledge in one place and make it universally accessible in many languages. Never before has the knowledge of humanity been freely accessible for so many people all over the world. Nevertheless nothing is perfect, and neither is Wikipedia. When we leave the sphere of simple facts and look at controversial subjects – be it in politics, in medicine or in philosophy – we find many articles that are clearly biased. Here Wikipedia is not being used to inform the reader about unmistakable facts, but to transport opinions of certain groups in the disguise of information. This should obviously not be the purpose of a platform like Wikipedia, but it happens here and there. Experience of many people has shown that this cannot be changed at the moment, because those who run Wikipedia and who have the last word on the content of the articles are enforcing such bias for reasons we can only speculate about. As far as I could find out, such controversial subjects that are covered in a clearly biased way include different branches of alternative medicine, political views that are diverging from a mainstream understanding, even biographies of persons that are seen as exponents of the aforementioned issues. As Wikipedia is not just a website among many but as it carries the sovereignty over information and interpretation for many millions of people, this bias is a severe problem. And the more so, the less people tend to use other sources than the internet. Since Wikipedia is as it is, the only way to deal with this growing problem is to install an alternative that offers the possibility to publish dissenting and diverging views of such controversial subjects, without questioning the authority of the great web-encyclopaedia in those realms where it is brilliant.&lt;br /&gt;
&lt;br /&gt;
This is the idea of &amp;lt;FreeWiki.eu&amp;gt;, a wiki based website that works very similar to Wikipedia and is open to all those who see their issue misrepresented in Wikipedia. FreeWiki will follow the same strict rules regarding sources, quotation, ethical values (non-discriminating, non-racist, no insults or offences, etc.), and others as Wikipedia. FreeWiki shall become multi-lingual in the long run. It will start with English and German articles, but is open to any translations. FreeWiki would be under creative commons licence and donation based. FreeWiki would be more strictly bound to monitoring and approval of changes by a group of editors to avoid being overrun by the same groups that now enforce the bias of Wikipedia.&lt;br /&gt;
&lt;br /&gt;
You are invited to participate in this project and introduce your fields of knowledge in form of articles. Any kind of proposals, ideas, criticism and additions are very welcome. Interested? Write to Joerg Wichmann, jw@provings.info&lt;br /&gt;
&lt;br /&gt;
[[:de:Willkommen_bei_FreeWiki|Deutsch]]&lt;br /&gt;
&lt;br /&gt;
[[File:Joergklein.jpg|200px|thumb|left|Alternativer Text]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== Contents ==&lt;br /&gt;
&lt;br /&gt;
[[Desiderata_-_desired_contributions|Desiderata - desired contributions]]&lt;br /&gt;
&lt;br /&gt;
[[Contents|Contents]]&lt;br /&gt;
&lt;br /&gt;
[[Processing_aids|Processing aids]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; You will also find help to handle this wiki in the&amp;amp;nbsp; [https://www.mediawiki.org/wiki/Help:Contents user manual].&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=Welcome_to_FreeWiki&amp;diff=257</id>
		<title>Welcome to FreeWiki</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=Welcome_to_FreeWiki&amp;diff=257"/>
		<updated>2018-07-17T08:29:06Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== FreeWiki Introduction ==&lt;br /&gt;
&lt;br /&gt;
'''Modifying the sovereignty over information and interpretation in controversial subjects.'''&lt;br /&gt;
&lt;br /&gt;
outline of a new project&lt;br /&gt;
&lt;br /&gt;
Wikipedia is a wonderful endeavour to collect all human knowledge in one place and make it universally accessible in many languages. Never before has the knowledge of humanity been freely accessible for so many people all over the world. Nevertheless nothing is perfect, and neither is Wikipedia. When we leave the sphere of simple facts and look at controversial subjects – be it in politics, in medicine or in philosophy – we find many articles that are clearly biased. Here Wikipedia is not being used to inform the reader about unmistakable facts, but to transport opinions of certain groups in the disguise of information. This should obviously not be the purpose of a platform like Wikipedia, but it happens here and there. Experience of many people has shown that this cannot be changed at the moment, because those who run Wikipedia and who have the last word on the content of the articles are enforcing such bias for reasons we can only speculate about. As far as I could find out, such controversial subjects that are covered in a clearly biased way include different branches of alternative medicine, political views that are diverging from a mainstream understanding, even biographies of persons that are seen as exponents of the aforementioned issues. As Wikipedia is not just a website among many but as it carries the sovereignty over information and interpretation for many millions of people, this bias is a severe problem. And the more so, the less people tend to use other sources than the internet. Since Wikipedia is as it is, the only way to deal with this growing problem is to install an alternative that offers the possibility to publish dissenting and diverging views of such controversial subjects, without questioning the authority of the great web-encyclopaedia in those realms where it is brilliant.&lt;br /&gt;
&lt;br /&gt;
This is the idea of &amp;lt;FreeWiki.eu&amp;gt;, a wiki based website that works very similar to Wikipedia and is open to all those who see their issue misrepresented in Wikipedia. FreeWiki will follow the same strict rules regarding sources, quotation, ethical values (non-discriminating, non-racist, no insults or offences, etc.), and others as Wikipedia. FreeWiki shall become multi-lingual in the long run. It will start with English and German articles, but is open to any translations. FreeWiki would be under creative commons licence and donation based. FreeWiki would be more strictly bound to monitoring and approval of changes by a group of editors to avoid being overrun by the same groups that now enforce the bias of Wikipedia.&lt;br /&gt;
&lt;br /&gt;
You are invited to participate in this project and introduce your fields of knowledge in form of articles. Any kind of proposals, ideas, criticism and additions are very welcome. Interested? Write to Joerg Wichmann, jw@provings.info&lt;br /&gt;
&lt;br /&gt;
[[:de:Willkommen_bei_FreeWiki|Deutsch]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Joergklein.jpg|200px|thumb|left|Alternativer Text]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== Contents ==&lt;br /&gt;
&lt;br /&gt;
[[Desiderata_-_desired_contributions|Desiderata - desired contributions]]&lt;br /&gt;
&lt;br /&gt;
[[Contents|Contents]]&lt;br /&gt;
&lt;br /&gt;
[[Processing_aids|Processing aids]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; You will also find help to handle this wiki in the&amp;amp;nbsp; [https://www.mediawiki.org/wiki/Help:Contents user manual].&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=Welcome_to_FreeWiki&amp;diff=256</id>
		<title>Welcome to FreeWiki</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=Welcome_to_FreeWiki&amp;diff=256"/>
		<updated>2018-07-17T08:26:54Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== FreeWiki Introduction ==&lt;br /&gt;
&lt;br /&gt;
'''Modifying the sovereignty over information and interpretation in controversial subjects.'''&lt;br /&gt;
&lt;br /&gt;
outline of a new project&lt;br /&gt;
&lt;br /&gt;
Wikipedia is a wonderful endeavour to collect all human knowledge in one place and make it universally accessible in many languages. Never before has the knowledge of humanity been freely accessible for so many people all over the world. Nevertheless nothing is perfect, and neither is Wikipedia. When we leave the sphere of simple facts and look at controversial subjects – be it in politics, in medicine or in philosophy – we find many articles that are clearly biased. Here Wikipedia is not being used to inform the reader about unmistakable facts, but to transport opinions of certain groups in the disguise of information. This should obviously not be the purpose of a platform like Wikipedia, but it happens here and there. Experience of many people has shown that this cannot be changed at the moment, because those who run Wikipedia and who have the last word on the content of the articles are enforcing such bias for reasons we can only speculate about. As far as I could find out, such controversial subjects that are covered in a clearly biased way include different branches of alternative medicine, political views that are diverging from a mainstream understanding, even biographies of persons that are seen as exponents of the aforementioned issues. As Wikipedia is not just a website among many but as it carries the sovereignty over information and interpretation for many millions of people, this bias is a severe problem. And the more so, the less people tend to use other sources than the internet. Since Wikipedia is as it is, the only way to deal with this growing problem is to install an alternative that offers the possibility to publish dissenting and diverging views of such controversial subjects, without questioning the authority of the great web-encyclopaedia in those realms where it is brilliant.&lt;br /&gt;
&lt;br /&gt;
This is the idea of &amp;lt;FreeWiki.eu&amp;gt;, a wiki based website that works very similar to Wikipedia and is open to all those who see their issue misrepresented in Wikipedia. FreeWiki will follow the same strict rules regarding sources, quotation, ethical values (non-discriminating, non-racist, no insults or offences, etc.), and others as Wikipedia. FreeWiki shall become multi-lingual in the long run. It will start with English and German articles, but is open to any translations. FreeWiki would be under creative commons licence and donation based. FreeWiki would be more strictly bound to monitoring and approval of changes by a group of editors to avoid being overrun by the same groups that now enforce the bias of Wikipedia.&lt;br /&gt;
&lt;br /&gt;
You are invited to participate in this project and introduce your fields of knowledge in form of articles. Any kind of proposals, ideas, criticism and additions are very welcome. Interested? Write to Joerg Wichmann, jw@provings.info&lt;br /&gt;
&lt;br /&gt;
[[:de:Willkommen_bei_FreeWiki|Deutsch]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Fussball-ball001 1024x768.jpg|200px|thumb|left|Alternativer Text]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== Contents ==&lt;br /&gt;
&lt;br /&gt;
[[Desiderata_-_desired_contributions|Desiderata - desired contributions]]&lt;br /&gt;
&lt;br /&gt;
[[Contents|Contents]]&lt;br /&gt;
&lt;br /&gt;
[[Processing_aids|Processing aids]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; You will also find help to handle this wiki in the&amp;amp;nbsp; [https://www.mediawiki.org/wiki/Help:Contents user manual].&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=Welcome_to_FreeWiki&amp;diff=255</id>
		<title>Welcome to FreeWiki</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=Welcome_to_FreeWiki&amp;diff=255"/>
		<updated>2018-07-17T08:24:01Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== FreeWiki Introduction ==&lt;br /&gt;
&lt;br /&gt;
'''Modifying the sovereignty over information and interpretation in controversial subjects.'''&lt;br /&gt;
&lt;br /&gt;
outline of a new project&lt;br /&gt;
&lt;br /&gt;
Wikipedia is a wonderful endeavour to collect all human knowledge in one place and make it universally accessible in many languages. Never before has the knowledge of humanity been freely accessible for so many people all over the world. Nevertheless nothing is perfect, and neither is Wikipedia. When we leave the sphere of simple facts and look at controversial subjects – be it in politics, in medicine or in philosophy – we find many articles that are clearly biased. Here Wikipedia is not being used to inform the reader about unmistakable facts, but to transport opinions of certain groups in the disguise of information. This should obviously not be the purpose of a platform like Wikipedia, but it happens here and there. Experience of many people has shown that this cannot be changed at the moment, because those who run Wikipedia and who have the last word on the content of the articles are enforcing such bias for reasons we can only speculate about. As far as I could find out, such controversial subjects that are covered in a clearly biased way include different branches of alternative medicine, political views that are diverging from a mainstream understanding, even biographies of persons that are seen as exponents of the aforementioned issues. As Wikipedia is not just a website among many but as it carries the sovereignty over information and interpretation for many millions of people, this bias is a severe problem. And the more so, the less people tend to use other sources than the internet. Since Wikipedia is as it is, the only way to deal with this growing problem is to install an alternative that offers the possibility to publish dissenting and diverging views of such controversial subjects, without questioning the authority of the great web-encyclopaedia in those realms where it is brilliant.&lt;br /&gt;
&lt;br /&gt;
This is the idea of &amp;lt;FreeWiki.eu&amp;gt;, a wiki based website that works very similar to Wikipedia and is open to all those who see their issue misrepresented in Wikipedia. FreeWiki will follow the same strict rules regarding sources, quotation, ethical values (non-discriminating, non-racist, no insults or offences, etc.), and others as Wikipedia. FreeWiki shall become multi-lingual in the long run. It will start with English and German articles, but is open to any translations. FreeWiki would be under creative commons licence and donation based. FreeWiki would be more strictly bound to monitoring and approval of changes by a group of editors to avoid being overrun by the same groups that now enforce the bias of Wikipedia.&lt;br /&gt;
&lt;br /&gt;
You are invited to participate in this project and introduce your fields of knowledge in form of articles. Any kind of proposals, ideas, criticism and additions are very welcome. Interested? Write to Joerg Wichmann, jw@provings.info&lt;br /&gt;
&lt;br /&gt;
[[:de:Willkommen_bei_FreeWiki|Deutsch]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Datei.png|200px|thumb|left|Alternativer Text]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== Contents ==&lt;br /&gt;
&lt;br /&gt;
[[Desiderata_-_desired_contributions|Desiderata - desired contributions]]&lt;br /&gt;
&lt;br /&gt;
[[Contents|Contents]]&lt;br /&gt;
&lt;br /&gt;
[[Processing_aids|Processing aids]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; You will also find help to handle this wiki in the&amp;amp;nbsp; [https://www.mediawiki.org/wiki/Help:Contents user manual].&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=Samuel_Hahnemann&amp;diff=207</id>
		<title>Samuel Hahnemann</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=Samuel_Hahnemann&amp;diff=207"/>
		<updated>2018-07-11T12:57:49Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Samuel Hahnemann is the founder of [[Homeopathy]].&lt;br /&gt;
&lt;br /&gt;
This is an empty page. Please enter your text:&lt;br /&gt;
&lt;br /&gt;
[[File:330px-Hahnemann Memorial at Scott Circle.jpg|330px|link=https://upload.wikimedia.org/wikipedia/commons/thumb/7/7d/Hahnemann_Memorial_at_Scott_Circle.jpg/330px-Hahnemann_Memorial_at_Scott_Circle.jpg|thumb|right|Samuel Hahnemann]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:330px-Hahnemann Memorial at Scott Circle.jpg|link=https://upload.wikimedia.org/wikipedia/commons/thumb/7/7d/Hahnemann_Memorial_at_Scott_Circle.jpg/330px-Hahnemann_Memorial_at_Scott_Circle.jpg|thumb|right|Samuel Hahnemann]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[:de:Samuel Hahnemann|German Page]]&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=Samuel_Hahnemann&amp;diff=206</id>
		<title>Samuel Hahnemann</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=Samuel_Hahnemann&amp;diff=206"/>
		<updated>2018-07-11T12:51:45Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Samuel Hahnemann is the founder of [[Homeopathy]].&lt;br /&gt;
&lt;br /&gt;
This is an empty page. Please enter your text:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:330px-Hahnemann Memorial at Scott Circle.jpg|330px|link=https://upload.wikimedia.org/wikipedia/commons/thumb/7/7d/Hahnemann_Memorial_at_Scott_Circle.jpg/330px-Hahnemann_Memorial_at_Scott_Circle.jpg|thumb|right|Samuel Hahnemann]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:330px-Hahnemann Memorial at Scott Circle.jpg|link=https://upload.wikimedia.org/wikipedia/commons/thumb/7/7d/Hahnemann_Memorial_at_Scott_Circle.jpg/330px-Hahnemann_Memorial_at_Scott_Circle.jpg|thumb|right|Samuel Hahnemann]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[:de:Samuel Hahnemann|German Page]]&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=Samuel_Hahnemann&amp;diff=205</id>
		<title>Samuel Hahnemann</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=Samuel_Hahnemann&amp;diff=205"/>
		<updated>2018-07-11T12:51:08Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Samuel Hahnemann is the founder of [[Homeopathy]].&lt;br /&gt;
&lt;br /&gt;
This is an empty page. Please enter your text:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:330px-Hahnemann Memorial at Scott Circle.jpg|330px|link=https://upload.wikimedia.org/wikipedia/commons/thumb/7/7d/Hahnemann_Memorial_at_Scott_Circle.jpg/330px-Hahnemann_Memorial_at_Scott_Circle.jpg|thumb|right|Samuel Hahnemann]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:330px-Hahnemann Memorial at Scott Circle.jpg|link=https://upload.wikimedia.org/wikipedia/commons/thumb/7/7d/Hahnemann_Memorial_at_Scott_Circle.jpg/330px-Hahnemann_Memorial_at_Scott_Circle.jpg|thumb|right|Samuel Hahnemann]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[:de:Samuel Hahnemann]]&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=Samuel_Hahnemann&amp;diff=204</id>
		<title>Samuel Hahnemann</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=Samuel_Hahnemann&amp;diff=204"/>
		<updated>2018-07-11T12:49:53Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Samuel Hahnemann is the founder of [[Homeopathy]].&lt;br /&gt;
&lt;br /&gt;
This is an empty page. Please enter your text:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:330px-Hahnemann Memorial at Scott Circle.jpg|330px|link=https://upload.wikimedia.org/wikipedia/commons/thumb/7/7d/Hahnemann_Memorial_at_Scott_Circle.jpg/330px-Hahnemann_Memorial_at_Scott_Circle.jpg|thumb|right|Samuel Hahnemann]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:330px-Hahnemann Memorial at Scott Circle.jpg|link=https://upload.wikimedia.org/wikipedia/commons/thumb/7/7d/Hahnemann_Memorial_at_Scott_Circle.jpg/330px-Hahnemann_Memorial_at_Scott_Circle.jpg|thumb|right|Samuel Hahnemann]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[de:Samuel Hahnemann]]&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=Samuel_Hahnemann&amp;diff=203</id>
		<title>Samuel Hahnemann</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=Samuel_Hahnemann&amp;diff=203"/>
		<updated>2018-07-11T12:43:21Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Samuel Hahnemann is the founder of [[Homeopathy]].&lt;br /&gt;
&lt;br /&gt;
This is an empty page. Please enter your text:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:330px-Hahnemann Memorial at Scott Circle.jpg|330px|link=https://upload.wikimedia.org/wikipedia/commons/thumb/7/7d/Hahnemann_Memorial_at_Scott_Circle.jpg/330px-Hahnemann_Memorial_at_Scott_Circle.jpg|thumb|right|Samuel Hahnemann]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:330px-Hahnemann Memorial at Scott Circle.jpg|link=https://upload.wikimedia.org/wikipedia/commons/thumb/7/7d/Hahnemann_Memorial_at_Scott_Circle.jpg/330px-Hahnemann_Memorial_at_Scott_Circle.jpg|thumb|right|Samuel Hahnemann]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[de:Samuel Hahnemann]]&lt;br /&gt;
&lt;br /&gt;
[[File:330px-Hahnemann Memorial at Scott Circle.jpg|thumb|Samuel Hahnemann]]&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=Processing_aids&amp;diff=8</id>
		<title>Processing aids</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=Processing_aids&amp;diff=8"/>
		<updated>2018-05-08T12:01:47Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: Die Seite wurde neu angelegt: „Dies ist die dritte Seite“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dies ist die dritte Seite&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
	<entry>
		<id>https://www.freewiki.eu/en/index.php?title=Desiderata_-_desired_contributions&amp;diff=5</id>
		<title>Desiderata - desired contributions</title>
		<link rel="alternate" type="text/html" href="https://www.freewiki.eu/en/index.php?title=Desiderata_-_desired_contributions&amp;diff=5"/>
		<updated>2018-05-07T14:17:46Z</updated>

		<summary type="html">&lt;p&gt;Holgerd: Die Seite wurde neu angelegt: „Diese Text gehört zu Punkt 2 (Ebene 0)“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Text gehört zu Punkt 2 (Ebene 0)&lt;/div&gt;</summary>
		<author><name>Holgerd</name></author>
		
	</entry>
</feed>