<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://nbittrpgwiki.pynappo.xyz/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pynappo</id>
	<title>NBITTRPG Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://nbittrpgwiki.pynappo.xyz/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pynappo"/>
	<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/Special:Contributions/Pynappo"/>
	<updated>2026-09-24T11:15:12Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=Template:DDDQuote&amp;diff=2720</id>
		<title>Template:DDDQuote</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=Template:DDDQuote&amp;diff=2720"/>
		<updated>2026-02-01T07:15:31Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ddd-quote-bg&amp;quot; style=&amp;quot;display: grid; grid-template-rows: 1fr 4fr; width: 50%; min-width: 540px; font-family: Rosario; color: #fffcf4;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; display: flex; align-items: center; justify-content: center; text-align: center; font-style: italic;&amp;quot;&amp;gt;{{{name|}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; display: flex; align-items: center; justify-content: center; text-align: center; font-size: 1.5em;&amp;quot;&amp;gt;{{{quote|}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
{{DDDQuote&lt;br /&gt;
|name=First Name Last Name&lt;br /&gt;
|quote=This is a very long quote to test out the template. If it gets any longer, it won&#039;t fit.}}&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=Template:DDDQuote&amp;diff=2718</id>
		<title>Template:DDDQuote</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=Template:DDDQuote&amp;diff=2718"/>
		<updated>2026-02-01T07:10:38Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ddd-quote-bg&amp;quot; style=&amp;quot;display: grid; grid-template-rows: 1fr 4fr; width: 50%; min-width: 540px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; display: flex; align-items: center; justify-content: center; text-align: center; color: #fffcf4; font-style: italic;&amp;quot;&amp;gt;{{{name|}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; display: flex; align-items: center; justify-content: center; text-align: center; font-family: Rosario; color: #fffcf4; font-size: 1.5em;&amp;quot;&amp;gt;&lt;br /&gt;
{{{quote|}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{DDDQuote&lt;br /&gt;
|name=First Name Last Name&lt;br /&gt;
|quote=This is a very long quote to test out the template. If it gets any longer, it won&#039;t fit.}}&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=Template:DDDQuote&amp;diff=2717</id>
		<title>Template:DDDQuote</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=Template:DDDQuote&amp;diff=2717"/>
		<updated>2026-02-01T07:10:05Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ddd-quote-bg&amp;quot; style=&amp;quot;display: grid; grid-template-rows: 1fr 4fr; width: 50%; min-width: 540px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; display: flex; align-items: center; justify-content: center; color: #fffcf4; font-style: italic;&amp;quot;&amp;gt;{{{name|}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; display: flex; align-items: center; justify-content: center; font-family: Rosario; color: #fffcf4; font-size: 1.5em;&amp;quot;&amp;gt;&lt;br /&gt;
{{{quote|}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{DDDQuote&lt;br /&gt;
|name=First Name Last Name&lt;br /&gt;
|quote=This is a very long quote to test out the template. If it gets any longer, it won&#039;t fit.}}&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=Template:DDDQuote&amp;diff=2716</id>
		<title>Template:DDDQuote</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=Template:DDDQuote&amp;diff=2716"/>
		<updated>2026-02-01T07:09:31Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ddd-quote-bg&amp;quot; style=&amp;quot;display: grid; grid-template-rows: 1fr 4fr; width: 50%; min-width: 540px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; display: flex; align-items: center; justify-content: center; color: #fffcf4; position: relative; top: -0.55em; font-style: italic;&amp;quot;&amp;gt;{{{name|}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-family: Rosario; color: #fffcf4; font-size: 1.5em; text-align: center; position: relative; top: 0.45em;&amp;quot;&amp;gt;&lt;br /&gt;
{{{quote|}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{DDDQuote&lt;br /&gt;
|name=First Name Last Name&lt;br /&gt;
|quote=This is a very long quote to test out the template. If it gets any longer, it won&#039;t fit.}}&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=Template:DDDQuote&amp;diff=2715</id>
		<title>Template:DDDQuote</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=Template:DDDQuote&amp;diff=2715"/>
		<updated>2026-02-01T07:08:03Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ddd-quote-bg&amp;quot; style=&amp;quot;display: grid; grid-template-rows: 1fr 2fr; width: 50%; min-width: 540px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center;color: #fffcf4; position: relative; top: -0.55em; font-style: italic;&amp;quot;&amp;gt;{{{name|}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-family: Rosario; color: #fffcf4; font-size: 1.5em; text-align: center; position: relative; top: 0.45em;&amp;quot;&amp;gt;&lt;br /&gt;
{{{quote|}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{DDDQuote&lt;br /&gt;
|name=First Name Last Name&lt;br /&gt;
|quote=This is a very long quote to test out the template. If it gets any longer, it won&#039;t fit.}}&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=Template:DDDQuote&amp;diff=2714</id>
		<title>Template:DDDQuote</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=Template:DDDQuote&amp;diff=2714"/>
		<updated>2026-02-01T07:07:12Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ddd-quote-bg&amp;quot; style=&amp;quot;display: grid; grid-template-rows: 1fr 2fr&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center;color: #fffcf4; position: relative; top: -0.55em; font-style: italic;&amp;quot;&amp;gt;{{{name|}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-family: Rosario; color: #fffcf4; font-size: 1.5em; text-align: center; position: relative; top: 0.45em;&amp;quot;&amp;gt;&lt;br /&gt;
{{{quote|}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{DDDQuote&lt;br /&gt;
|name=First Name Last Name&lt;br /&gt;
|quote=This is a very long quote to test out the template. If it gets any longer, it won&#039;t fit.}}&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=MediaWiki:Common.css&amp;diff=2711</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=MediaWiki:Common.css&amp;diff=2711"/>
		<updated>2026-02-01T06:29:25Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/********* [[Template:Spoiler]] *********/&lt;br /&gt;
.spoiler {&lt;br /&gt;
  background-color: transparent;&lt;br /&gt;
  transition: all 0.3s;&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
  overflow:auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.spoiler &amp;gt; * {&lt;br /&gt;
  transition: all 0.3s;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.spoiler.hide {&lt;br /&gt;
  pointer-events: auto;&lt;br /&gt;
  background-color: rgba(0, 0, 0, 1); /* fallback */&lt;br /&gt;
  background-color: color-mix(in srgb, rgba(0, 0, 0, 1) 80%, transparent);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.spoiler.hide &amp;gt; * {&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
  opacity: 0;&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
/* If there&#039;s no js, hide then show on hover */&lt;br /&gt;
.spoiler.hover,&lt;br /&gt;
.spoiler.no-js {&lt;br /&gt;
  background-color: var(--main-background-color); /* fallback */&lt;br /&gt;
  background-color: color-mix(in srgb, var(--main-background-color) 80%, transparent);&lt;br /&gt;
}&lt;br /&gt;
.spoiler.hover &amp;gt; *,&lt;br /&gt;
.spoiler.no-js &amp;gt; * {&lt;br /&gt;
  opacity: 0;&lt;br /&gt;
}&lt;br /&gt;
.spoiler.hover:hover,&lt;br /&gt;
.spoiler.no-js:hover {&lt;br /&gt;
  background-color: transparent;&lt;br /&gt;
}&lt;br /&gt;
.spoiler.hover:hover,&lt;br /&gt;
.spoiler.no-js:hover &amp;gt; * {&lt;br /&gt;
  opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/** [[Template: DDDQuote]] **/&lt;br /&gt;
.ddd-quote-bg {&lt;br /&gt;
	background-image: url(&amp;quot;https://nbittrpgwiki.pynappo.xyz/images/8/8c/DDDTextbox.png&amp;quot;);&lt;br /&gt;
	background-size: contain;&lt;br /&gt;
    background-repeat: no-repeat;&lt;br /&gt;
    aspect-ratio: 1080 / 280;&lt;br /&gt;
}&lt;br /&gt;
.ddd-quote-bg2 {&lt;br /&gt;
	background-image: url(&amp;quot;https://nbittrpgwiki.pynappo.xyz/images/9/98/DDDTextbox2.png&amp;quot;);&lt;br /&gt;
	background-size: contain;&lt;br /&gt;
    background-repeat: no-repeat;&lt;br /&gt;
	aspect-ratio: 1080 / 280;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=Template:DDDQuote&amp;diff=2710</id>
		<title>Template:DDDQuote</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=Template:DDDQuote&amp;diff=2710"/>
		<updated>2026-02-01T06:28:42Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;ddd-quote-bg&amp;quot; style=&amp;quot;display: flex; flex-wrap: wrap; align-content:center; justify-content:center; width: 50%&amp;quot;&amp;gt;&lt;br /&gt;
test quote&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=MediaWiki:Common.css&amp;diff=2709</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=MediaWiki:Common.css&amp;diff=2709"/>
		<updated>2026-02-01T06:27:57Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/********* [[Template:Spoiler]] *********/&lt;br /&gt;
.spoiler {&lt;br /&gt;
  background-color: transparent;&lt;br /&gt;
  transition: all 0.3s;&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
  overflow:auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.spoiler &amp;gt; * {&lt;br /&gt;
  transition: all 0.3s;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.spoiler.hide {&lt;br /&gt;
  pointer-events: auto;&lt;br /&gt;
  background-color: rgba(0, 0, 0, 1); /* fallback */&lt;br /&gt;
  background-color: color-mix(in srgb, rgba(0, 0, 0, 1) 80%, transparent);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.spoiler.hide &amp;gt; * {&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
  opacity: 0;&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
/* If there&#039;s no js, hide then show on hover */&lt;br /&gt;
.spoiler.hover,&lt;br /&gt;
.spoiler.no-js {&lt;br /&gt;
  background-color: var(--main-background-color); /* fallback */&lt;br /&gt;
  background-color: color-mix(in srgb, var(--main-background-color) 80%, transparent);&lt;br /&gt;
}&lt;br /&gt;
.spoiler.hover &amp;gt; *,&lt;br /&gt;
.spoiler.no-js &amp;gt; * {&lt;br /&gt;
  opacity: 0;&lt;br /&gt;
}&lt;br /&gt;
.spoiler.hover:hover,&lt;br /&gt;
.spoiler.no-js:hover {&lt;br /&gt;
  background-color: transparent;&lt;br /&gt;
}&lt;br /&gt;
.spoiler.hover:hover,&lt;br /&gt;
.spoiler.no-js:hover &amp;gt; * {&lt;br /&gt;
  opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/** [[Template: DDDQuote]] **/&lt;br /&gt;
.ddd-quote-bg {&lt;br /&gt;
	background-image: url(&amp;quot;https://nbittrpgwiki.pynappo.xyz/images/8/8c/DDDTextbox.png&amp;quot;);&lt;br /&gt;
    aspect-ratio: 1080 / 280;&lt;br /&gt;
}&lt;br /&gt;
.ddd-quote-bg2 {&lt;br /&gt;
	background-image: url(&amp;quot;https://nbittrpgwiki.pynappo.xyz/images/9/98/DDDTextbox2.png&amp;quot;);&lt;br /&gt;
	aspect-ratio: 1080 / 280;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=Template:DDDQuote&amp;diff=2706</id>
		<title>Template:DDDQuote</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=Template:DDDQuote&amp;diff=2706"/>
		<updated>2026-02-01T06:05:16Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;ddd-quote-bg&amp;quot; style=&amp;quot;display: flex; flex-wrap: wrap;align-content:center;justify-content:center;width: 50%&amp;quot;&amp;gt;&lt;br /&gt;
test quote&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=MediaWiki:Common.css&amp;diff=2705</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=MediaWiki:Common.css&amp;diff=2705"/>
		<updated>2026-02-01T06:05:04Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/********* [[Template:Spoiler]] *********/&lt;br /&gt;
.spoiler {&lt;br /&gt;
  background-color: transparent;&lt;br /&gt;
  transition: all 0.3s;&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
  overflow:auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.spoiler &amp;gt; * {&lt;br /&gt;
  transition: all 0.3s;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.spoiler.hide {&lt;br /&gt;
  pointer-events: auto;&lt;br /&gt;
  background-color: rgba(0, 0, 0, 1); /* fallback */&lt;br /&gt;
  background-color: color-mix(in srgb, rgba(0, 0, 0, 1) 80%, transparent);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.spoiler.hide &amp;gt; * {&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
  opacity: 0;&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
/* If there&#039;s no js, hide then show on hover */&lt;br /&gt;
.spoiler.hover,&lt;br /&gt;
.spoiler.no-js {&lt;br /&gt;
  background-color: var(--main-background-color); /* fallback */&lt;br /&gt;
  background-color: color-mix(in srgb, var(--main-background-color) 80%, transparent);&lt;br /&gt;
}&lt;br /&gt;
.spoiler.hover &amp;gt; *,&lt;br /&gt;
.spoiler.no-js &amp;gt; * {&lt;br /&gt;
  opacity: 0;&lt;br /&gt;
}&lt;br /&gt;
.spoiler.hover:hover,&lt;br /&gt;
.spoiler.no-js:hover {&lt;br /&gt;
  background-color: transparent;&lt;br /&gt;
}&lt;br /&gt;
.spoiler.hover:hover,&lt;br /&gt;
.spoiler.no-js:hover &amp;gt; * {&lt;br /&gt;
  opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/** [[Template: DDDQuote]] **/&lt;br /&gt;
.ddd-quote-bg {&lt;br /&gt;
	background-image: url(&amp;quot;https://nbittrpgwiki.pynappo.xyz/images/8/8c/DDDTextbox.png&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
.ddd-quote-bg2 {&lt;br /&gt;
	background-image: url(&amp;quot;https://nbittrpgwiki.pynappo.xyz/images/9/98/DDDTextbox2.png&amp;quot;);&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=File:DDDTextbox2.png&amp;diff=2701</id>
		<title>File:DDDTextbox2.png</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=File:DDDTextbox2.png&amp;diff=2701"/>
		<updated>2026-02-01T05:57:32Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=Main_Page&amp;diff=1667</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=Main_Page&amp;diff=1667"/>
		<updated>2025-05-21T08:55:28Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;templatestyles src=&amp;quot;Div col/styles.css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-direction: row; gap: 1em&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{MainPageMain}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{MainPageSide}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:{{SITENAME}}]]&lt;br /&gt;
__NOTOC__ __NOEDITSECTION__ __NOINDEX__ __NONEWSECTIONLINK__ __NOTITLE__&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=Main_Page&amp;diff=1666</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=Main_Page&amp;diff=1666"/>
		<updated>2025-05-21T08:54:22Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;templatestyles src=&amp;quot;Div col/styles.css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{MainPageMain}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{MainPageSide}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:{{SITENAME}}]]&lt;br /&gt;
__NOTOC__ __NOEDITSECTION__ __NOINDEX__ __NONEWSECTIONLINK__ __NOTITLE__&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=Main_Page&amp;diff=1665</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=Main_Page&amp;diff=1665"/>
		<updated>2025-05-21T08:53:57Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;templatestyles src=&amp;quot;Div col/styles.css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{MainPageMain}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{MainPageSide}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Line}}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;width: 30%&amp;quot;|{{Featured}}&lt;br /&gt;
|style=&amp;quot;width: 70%&amp;quot;|{{Statistics}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
[[Category:{{SITENAME}}]]&lt;br /&gt;
__NOTOC__ __NOEDITSECTION__ __NOINDEX__ __NONEWSECTIONLINK__ __NOTITLE__&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=Main_Page&amp;diff=1662</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=Main_Page&amp;diff=1662"/>
		<updated>2025-05-21T08:47:10Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;templatestyles src=&amp;quot;Div col/styles.css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{MainPageMain}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{MainPageSide}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Category:{{SITENAME}}]]&lt;br /&gt;
__NOTOC__ __NOEDITSECTION__ __NOINDEX__ __NONEWSECTIONLINK__ __NOTITLE__&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=Main_Page&amp;diff=1661</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=Main_Page&amp;diff=1661"/>
		<updated>2025-05-21T08:29:28Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;flex-direction: row; display: flex&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{MainPageMain}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{MainPageSide}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Category:{{SITENAME}}]]&lt;br /&gt;
__NOTOC__ __NOEDITSECTION__ __NOINDEX__ __NONEWSECTIONLINK__ __NOTITLE__&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=Main_Page&amp;diff=1660</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=Main_Page&amp;diff=1660"/>
		<updated>2025-05-21T08:26:10Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;flex-direction: row; display: flex&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{MainPageMain}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{MainPageSide}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Category:{{SITENAME}}]]&lt;br /&gt;
__NOTOC__ __NOEDITSECTION__ __NOINDEX__ __NONEWSECTIONLINK__ __NOTITLE__&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=Main_Page&amp;diff=1659</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=Main_Page&amp;diff=1659"/>
		<updated>2025-05-21T08:08:10Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MainPageMain}}&lt;br /&gt;
{{MainPageSide}}&lt;br /&gt;
[[Category:{{SITENAME}}]]&lt;br /&gt;
__NOTOC__ __NOEDITSECTION__ __NOINDEX__ __NONEWSECTIONLINK__ __NOTITLE__&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=MediaWiki:Common.js&amp;diff=1496</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=MediaWiki:Common.js&amp;diff=1496"/>
		<updated>2025-04-06T06:25:15Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* [[Template:Spoiler]] https://support.wiki.gg/wiki/Template:Spoiler */&lt;br /&gt;
$(function () {&lt;br /&gt;
	$(&#039;.spoiler.click&#039;)&lt;br /&gt;
	.off(&#039;click&#039;) // in case this code is loaded twice&lt;br /&gt;
	.addClass( &#039;hide&#039; )&lt;br /&gt;
	.removeClass( &#039;no-js&#039; )&lt;br /&gt;
	.on(&#039;click&#039;, function(e){&lt;br /&gt;
		$(this).toggleClass(&#039;hide&#039;);&lt;br /&gt;
	}).find(&#039;a&#039;).on(&#039;click&#039;, function(e){&lt;br /&gt;
		e.stopPropagation();&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
});&lt;br /&gt;
/* End Template:Spoiler */&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Name:        WhatLinksHere&lt;br /&gt;
 * Version:     v1.1&lt;br /&gt;
 * Author:      KockaAdmiralac &amp;lt;wikia@kocka.tech&amp;gt;&lt;br /&gt;
 * Description: Adds a link to Special:WhatLinksHere below the edit dropdown&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
    var $list = $(&#039;.page-header__contribution-buttons .wds-list, .page-header__actions .wds-list, .UserProfileActionButton .WikiaMenuElement&#039;);&lt;br /&gt;
&lt;br /&gt;
    if (!$list.length || window.WhatLinksHereLoaded) {&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
    window.WhatLinksHereLoaded = true;&lt;br /&gt;
&lt;br /&gt;
    var config = mw.config.get([&lt;br /&gt;
        &#039;wgPageName&#039;,&lt;br /&gt;
        &#039;wgUserLanguage&#039;&lt;br /&gt;
    ]);&lt;br /&gt;
&lt;br /&gt;
    mw.hook(&#039;dev.fetch&#039;).add(function(fetch) {&lt;br /&gt;
        $.when(&lt;br /&gt;
            fetch(&#039;whatlinkshere&#039;),&lt;br /&gt;
            mw.loader.using(&#039;mediawiki.util&#039;)&lt;br /&gt;
        ).then(function(text) {&lt;br /&gt;
            var url = mw.util.getUrl(&#039;Special:WhatLinksHere/&#039; + config.wgPageName);&lt;br /&gt;
            $list.append(&lt;br /&gt;
                $(&#039;&amp;lt;li&amp;gt;&#039;, {&lt;br /&gt;
                    id: &#039;ca-whatlinkshere&#039;&lt;br /&gt;
                }).append(&lt;br /&gt;
                    $(&#039;&amp;lt;a&amp;gt;&#039;, {&lt;br /&gt;
                        href: url,&lt;br /&gt;
                        text: text&lt;br /&gt;
                    })&lt;br /&gt;
                )&lt;br /&gt;
            );&lt;br /&gt;
            if (mw.util.getParamValue(&#039;redirect&#039;) === &#039;no&#039;) {&lt;br /&gt;
                $(&#039;.redirectText&#039;).append(&lt;br /&gt;
                    $(&#039;&amp;lt;br&amp;gt;&#039;),&lt;br /&gt;
                    $(&#039;&amp;lt;span&amp;gt;&#039;, {&lt;br /&gt;
                        id: &#039;redirectWLH&#039;&lt;br /&gt;
                    }).append(&lt;br /&gt;
                        &#039;→ &#039;,&lt;br /&gt;
                        $(&#039;&amp;lt;a&amp;gt;&#039;, {&lt;br /&gt;
                            &#039;class&#039;: &#039;redirectWLH-link&#039;,&lt;br /&gt;
                            href: url,&lt;br /&gt;
                            text: text&lt;br /&gt;
                        })&lt;br /&gt;
                    )&lt;br /&gt;
                );&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
    importArticle({&lt;br /&gt;
        type: &#039;script&#039;,&lt;br /&gt;
        article: &#039;u:dev:MediaWiki:Fetch.js&#039;&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
// __NOWYSIWYG__&lt;br /&gt;
/**&lt;br /&gt;
 * TabberEX&lt;br /&gt;
 *&lt;br /&gt;
 * @version 2.3&lt;br /&gt;
 *&lt;br /&gt;
 * @author Jono99 &amp;lt;https://phigros.fandom.com/wiki/User:Jono99&amp;gt;&lt;br /&gt;
 *&lt;br /&gt;
 * documentation and examples at:&lt;br /&gt;
 * &amp;lt;https://dev.fandom.com/wiki/TabberEX&amp;gt;&lt;br /&gt;
 */&lt;br /&gt;
 &lt;br /&gt;
 (function (window, $, mw) {&lt;br /&gt;
	// Function called by tabs to switch tabs&lt;br /&gt;
	window.tabberex_switchTab = function(tabber_id, tab)&lt;br /&gt;
	{&lt;br /&gt;
		tabberex_hideAllTabs(tabber_id);&lt;br /&gt;
		tabberex_showTab(tabber_id, tab);&lt;br /&gt;
	};&lt;br /&gt;
 &lt;br /&gt;
	// Inject CSS&lt;br /&gt;
	(function() {&lt;br /&gt;
		var tabberex_css = document.createElement(&amp;quot;style&amp;quot;);&lt;br /&gt;
		tabberex_css.innerHTML = &amp;quot;/* CSS owned by FANDOM */\n.oo-ui-tabOptionWidget{display:inline-block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;vertical-align:bottom;align-items:center;color:color-mix(in srgb, var(--text-color) 75%, transparent);display:inline-flex;font-size:14px;font-weight:500;height:40px;letter-spacing:.5px;margin:0;padding:0 11px;-webkit-transition:var(--content-background-color) .3s,color .3s,var(--banner-color) .3s;-moz-transition:var(--content-background-color) .3s,color .3s,var(--banner-color) .3s;transition:var(--content-background-color) .3s,color .3s,var(--banner-color) .3s}.oo-ui-tabSelectWidget:not(.oo-ui-tabSelectWidget-framed) .oo-ui-tabOptionWidget{-webkit-transition:color .3s,box-shadow .3s;-moz-transition:color .3s,box-shadow .3s;transition:color .3s,box-shadow .3s;border-bottom:1px solid var(--banner-color)}.oo-ui-tabSelectWidget:not(.oo-ui-tabSelectWidget-framed) .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected{box-shadow:inset 0 -2px 0 0 var(--link-color);color:var(--link-color)}&amp;quot;;&lt;br /&gt;
		document.head.appendChild(tabberex_css);&lt;br /&gt;
	})();&lt;br /&gt;
		&lt;br /&gt;
	window.tabberex_showTab = function(tabber_id, i)&lt;br /&gt;
	{&lt;br /&gt;
		var base_selector = &amp;quot;[data-tabber-id=\&amp;quot;&amp;quot; + tabber_id + &amp;quot;\&amp;quot;]&amp;quot;;&lt;br /&gt;
		$(&amp;quot;.tabberex-head&amp;quot; + base_selector).children(&amp;quot;:nth-child(&amp;quot; + i + &amp;quot;)&amp;quot;)&lt;br /&gt;
		.addClass(&amp;quot;oo-ui-optionWidget-selected&amp;quot;)&lt;br /&gt;
		.css(&amp;quot;cursor&amp;quot;, &amp;quot;default&amp;quot;);&lt;br /&gt;
				&lt;br /&gt;
		$($(&amp;quot;.tabberex-body&amp;quot; + base_selector).children(&amp;quot;:nth-child(&amp;quot; + i + &amp;quot;)&amp;quot;).get()).each(function () {&lt;br /&gt;
            var display_value = $(this).attr(&amp;quot;data-tab-display&amp;quot;);&lt;br /&gt;
            if (display_value === undefined) display_value = &amp;quot;block&amp;quot;;&lt;br /&gt;
            $(this).css(&amp;quot;display&amp;quot;, display_value);&lt;br /&gt;
        });&lt;br /&gt;
	};&lt;br /&gt;
	 &lt;br /&gt;
	window.tabberex_hideTab = function(tabber_id, i)&lt;br /&gt;
	{&lt;br /&gt;
		var base_selector = &amp;quot;[data-tabber-id=\&amp;quot;&amp;quot; + tabber_id + &amp;quot;\&amp;quot;]&amp;quot;;&lt;br /&gt;
		$(&amp;quot;.tabberex-head&amp;quot; + base_selector).children(&amp;quot;:nth-child(&amp;quot; + i + &amp;quot;)&amp;quot;)&lt;br /&gt;
		.removeClass(&amp;quot;oo-ui-optionWidget-selected&amp;quot;)&lt;br /&gt;
		.css(&amp;quot;cursor&amp;quot;, &amp;quot;pointer&amp;quot;);&lt;br /&gt;
				&lt;br /&gt;
		$(&amp;quot;.tabberex-body&amp;quot; + base_selector).children(&amp;quot;:nth-child(&amp;quot; + i + &amp;quot;)&amp;quot;).css(&amp;quot;display&amp;quot;, &amp;quot;none&amp;quot;);&lt;br /&gt;
	};&lt;br /&gt;
			&lt;br /&gt;
	window.tabberex_hideAllTabs = function(tabber_id)&lt;br /&gt;
	{&lt;br /&gt;
		var base_selector = &amp;quot;[data-tabber-id=\&amp;quot;&amp;quot; + tabber_id + &amp;quot;\&amp;quot;]&amp;quot;;&lt;br /&gt;
		$(&amp;quot;.tabberex-head&amp;quot; + base_selector).children()&lt;br /&gt;
		.removeClass(&amp;quot;oo-ui-optionWidget-selected&amp;quot;)&lt;br /&gt;
		.css(&amp;quot;cursor&amp;quot;, &amp;quot;pointer&amp;quot;);&lt;br /&gt;
				&lt;br /&gt;
		$(&amp;quot;.tabberex-body&amp;quot; + base_selector).children().css(&amp;quot;display&amp;quot;, &amp;quot;none&amp;quot;);&lt;br /&gt;
	};&lt;br /&gt;
	&lt;br /&gt;
	var tabberex_buildTabHead = function(host_div, tabber_id, tab_headers, tab_ex_headers, tab_locations)&lt;br /&gt;
	{&lt;br /&gt;
		var tabber_head = host_div;&lt;br /&gt;
		tabber_head.innerHTML = &amp;quot;&amp;quot;;&lt;br /&gt;
		$(tabber_head).addClass(&amp;quot;tabberex-head oo-ui-widget oo-ui-widget-enabled oo-ui-selectWidget oo-ui-selectWidget-unpressed oo-ui-selectWidget-depressed oo-ui-tabSelectWidget&amp;quot;)&lt;br /&gt;
		.attr(&amp;quot;data-tabber-id&amp;quot;, tabber_id);&lt;br /&gt;
		for (var i = 0; i &amp;lt; tab_headers.length; i++)&lt;br /&gt;
		{&lt;br /&gt;
			console.log(&amp;quot;Building tab &amp;quot; + tabber_id + &amp;quot; &amp;quot; + String(i));&lt;br /&gt;
			var tab = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			$(tab).addClass(&amp;quot;oo-ui-widget oo-ui-widget-enabled oo-ui-labelElement oo-ui-optionWidget oo-ui-tabOptionWidget&amp;quot;)&lt;br /&gt;
			.css(&amp;quot;cursor&amp;quot;, &amp;quot;pointer&amp;quot;);&lt;br /&gt;
			if (tab_locations[i] === undefined)&lt;br /&gt;
				$(tab).attr(&amp;quot;onclick&amp;quot;, &amp;quot;tabberex_switchTab(\&amp;quot;&amp;quot; + mw.html.escape(tabber_id) + &amp;quot;\&amp;quot;, &amp;quot; + (i + 1) + &amp;quot;)&amp;quot;);&lt;br /&gt;
			else&lt;br /&gt;
				$(tab).attr(&amp;quot;onclick&amp;quot;, &amp;quot;location = \&amp;quot;&amp;quot; + mw.html.escape(tab_locations[i]) + &amp;quot;\&amp;quot;&amp;quot;);&lt;br /&gt;
			var tab_span = document.createElement(&amp;quot;span&amp;quot;);&lt;br /&gt;
			$(tab_span).addClass(&amp;quot;oo-ui-labelElement-label&amp;quot;);&lt;br /&gt;
			if (tab_ex_headers[i] === undefined)&lt;br /&gt;
				$(tab_span).text(tab_headers[i]);&lt;br /&gt;
			else&lt;br /&gt;
			{&lt;br /&gt;
				console.log(&amp;quot;EX Header present&amp;quot;);&lt;br /&gt;
				for (var attr in tab_ex_headers[i][1])&lt;br /&gt;
					tab_span.setAttribute(attr, tab_ex_headers[i][1][attr]);&lt;br /&gt;
				$(tab_span).html(tab_ex_headers[i][0]);&lt;br /&gt;
			}&lt;br /&gt;
			tab.appendChild(tab_span);&lt;br /&gt;
			tabber_head.appendChild(tab);&lt;br /&gt;
			console.log(&amp;quot;Successfully built tab&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		return tabber_head.outerHTML;&lt;br /&gt;
	};&lt;br /&gt;
	&lt;br /&gt;
	var process_tabber_head_tab = function(tab_element, i)&lt;br /&gt;
	{&lt;br /&gt;
		// Get header&lt;br /&gt;
		var header = $(tab_element).attr(&amp;quot;data-tab-header&amp;quot;);&lt;br /&gt;
		if (header === undefined) header = i + 1;&lt;br /&gt;
		&lt;br /&gt;
		// Get ex header&lt;br /&gt;
		var ex_header;&lt;br /&gt;
		function get_ex_header(_) {&lt;br /&gt;
			console.log(&#039;EX Header found&#039;);&lt;br /&gt;
			var attributes = {};&lt;br /&gt;
			var attrs = this.getAttributeNames();&lt;br /&gt;
			for (var i in attrs)&lt;br /&gt;
				attributes[attrs[i]] = this.getAttribute(attrs[i]);&lt;br /&gt;
			ex_header = [$(this).html(), attributes];&lt;br /&gt;
			$(this).remove();&lt;br /&gt;
		}&lt;br /&gt;
		$(tab_element).children(&amp;quot;p&amp;quot;).children(&amp;quot;span.tabberex-tab-header&amp;quot;).each(get_ex_header);&lt;br /&gt;
		$(tab_element).children(&amp;quot;span.tabberex-tab-header&amp;quot;).each(get_ex_header);&lt;br /&gt;
		&lt;br /&gt;
		// Get default&lt;br /&gt;
		var is_default = false;&lt;br /&gt;
		if ($(tab_element).hasClass(&amp;quot;tabberex-tab-default&amp;quot;))&lt;br /&gt;
			is_default = true;&lt;br /&gt;
		&lt;br /&gt;
		// Get tab location&lt;br /&gt;
		var tab_location = $(this).attr(&amp;quot;data-tab-location&amp;quot;);&lt;br /&gt;
		&lt;br /&gt;
		return {&amp;quot;header&amp;quot;: header, &amp;quot;ex_header&amp;quot;: ex_header, &amp;quot;default&amp;quot;: is_default, &amp;quot;location&amp;quot;: tab_location};&lt;br /&gt;
	};&lt;br /&gt;
	&lt;br /&gt;
	var process_tabbers = function()&lt;br /&gt;
	{&lt;br /&gt;
		console.log(&#039;TabberEX started&#039;);&lt;br /&gt;
		var tabber_i = 0;&lt;br /&gt;
		var default_tabs = {};&lt;br /&gt;
		var tabber_ids = [];&lt;br /&gt;
		// The tabs are iterated through backwards to properly handle tabbers that are nested within other tabbers&lt;br /&gt;
		$($(&amp;quot;.tabberex-head&amp;quot;).get().reverse()).each(function() {&lt;br /&gt;
			var tab_headers = [];&lt;br /&gt;
			var tab_ex_headers = [];&lt;br /&gt;
			var tab_locations = [];&lt;br /&gt;
			var default_tab = 0;&lt;br /&gt;
				&lt;br /&gt;
			var tabber_id = $(this).attr(&amp;quot;data-tabber-id&amp;quot;);&lt;br /&gt;
			if (tabber_id === undefined) tabber_id = String(tabber_i);&lt;br /&gt;
				&lt;br /&gt;
			$(this).children(&amp;quot;.tabberex-tab&amp;quot;).each(function(i) {&lt;br /&gt;
				console.log(&#039;Processing head tab &#039; + tabber_id + &#039; &#039; + String(i));&lt;br /&gt;
				var tab_details = process_tabber_head_tab(this, i);&lt;br /&gt;
				console.log(&#039;Processing complete&#039;);&lt;br /&gt;
				tab_headers[i] = tab_details.header;&lt;br /&gt;
				tab_ex_headers[i] = tab_details.ex_header;&lt;br /&gt;
				if (tab_details.default)&lt;br /&gt;
					default_tab = i;&lt;br /&gt;
				tab_locations[i] = tab_details.location;&lt;br /&gt;
				$(this).detach();&lt;br /&gt;
			});&lt;br /&gt;
			&lt;br /&gt;
			// Insert tabs into DOM&lt;br /&gt;
			tabberex_buildTabHead(this, tabber_id, tab_headers, tab_ex_headers, tab_locations);&lt;br /&gt;
			if (default_tabs[tabber_id] === undefined)&lt;br /&gt;
				default_tabs[tabber_id] = default_tab;&lt;br /&gt;
			tabber_ids.push(tabber_id);&lt;br /&gt;
			tabber_i++;&lt;br /&gt;
		});&lt;br /&gt;
		&lt;br /&gt;
		$($(&amp;quot;.tabberex-body&amp;quot;).get().reverse()).each(function() {&lt;br /&gt;
			$(this).children().css(&amp;quot;display&amp;quot;, &amp;quot;none&amp;quot;);&lt;br /&gt;
		});&lt;br /&gt;
		&lt;br /&gt;
		$($(&amp;quot;.tabberex&amp;quot;).get().reverse()).each(function() {&lt;br /&gt;
			var tab_headers = [];&lt;br /&gt;
			var tab_ex_headers = [];&lt;br /&gt;
			var tab_locations = [];&lt;br /&gt;
			var default_tab = 0;&lt;br /&gt;
			var tab_contents = [];&lt;br /&gt;
			&lt;br /&gt;
			var tabber_id = $(this).attr(&amp;quot;data-tabber-id&amp;quot;);&lt;br /&gt;
			if (tabber_id === undefined) tabber_id = String(tabber_i);&lt;br /&gt;
            $(this).attr(&amp;quot;data-tabber-id&amp;quot;, tabber_id);&lt;br /&gt;
&lt;br /&gt;
            var tabber_head = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
            $(tabber_head).addClass(&amp;quot;tabberex-head&amp;quot;).attr(&amp;quot;data-tabber-id&amp;quot;, tabber_id);&lt;br /&gt;
            $(this).removeClass(&amp;quot;tabberex&amp;quot;).addClass(&amp;quot;tabberex-body&amp;quot;);&lt;br /&gt;
			&lt;br /&gt;
			$(this).children(&amp;quot;.tabberex-tab&amp;quot;).each(function(i) {&lt;br /&gt;
				console.log(&#039;Processing head tab &#039; + tabber_id + &#039; &#039; + String(i));&lt;br /&gt;
				var tab_details = process_tabber_head_tab(this, i);&lt;br /&gt;
				console.log(&#039;Processing complete&#039;);&lt;br /&gt;
				tab_headers[i] = tab_details.header;&lt;br /&gt;
				tab_ex_headers[i] = tab_details.ex_header;&lt;br /&gt;
				if (tab_details.default)&lt;br /&gt;
					default_tab = i;&lt;br /&gt;
				tab_locations[i] = tab_details.location;&lt;br /&gt;
				&lt;br /&gt;
				// Get tab content&lt;br /&gt;
				$(this).css(&amp;quot;display&amp;quot;, &amp;quot;none&amp;quot;);&lt;br /&gt;
				tab_contents[i] = $(this);&lt;br /&gt;
			});&lt;br /&gt;
&lt;br /&gt;
            tabberex_buildTabHead(tabber_head, tabber_id, tab_headers, tab_ex_headers, tab_locations);&lt;br /&gt;
			if (default_tabs[tabber_id] === undefined)&lt;br /&gt;
				default_tabs[tabber_id] = default_tab;&lt;br /&gt;
            $(tabber_head).insertBefore(this);&lt;br /&gt;
			tabber_ids.push(tabber_id);&lt;br /&gt;
			tabber_i++;&lt;br /&gt;
		});&lt;br /&gt;
		&lt;br /&gt;
		// Select default tabs&lt;br /&gt;
		for (var i in tabber_ids)&lt;br /&gt;
		{&lt;br /&gt;
			tabberex_showTab(tabber_ids[i], default_tabs[tabber_ids[i]] + 1);&lt;br /&gt;
		}&lt;br /&gt;
	};&lt;br /&gt;
 &lt;br /&gt;
	mw.hook(&amp;quot;wikipage.content&amp;quot;).add(process_tabbers);&lt;br /&gt;
}(this, jQuery, mediaWiki));&lt;br /&gt;
/*&lt;br /&gt;
 * @title           SoundcloudPlayer.js&lt;br /&gt;
 * @version         1.1.2&lt;br /&gt;
 * @description     Add support for soundcloud players&lt;br /&gt;
 * @author          Himmalerin&lt;br /&gt;
 * @license         CC-BY-SA-3.0&lt;br /&gt;
 */&lt;br /&gt;
(function () {&lt;br /&gt;
	// Build the iframe&lt;br /&gt;
	const scPlayer = function (data) {&lt;br /&gt;
		const widget = document.createElement(&#039;iframe&#039;);&lt;br /&gt;
&lt;br /&gt;
		widget.classList.add(&#039;soundcloud-player&#039;);&lt;br /&gt;
&lt;br /&gt;
		widget.src =&lt;br /&gt;
			&#039;https://w.soundcloud.com/player/?show_artwork=false&amp;amp;url=&#039; +&lt;br /&gt;
			encodeURI(data.src);&lt;br /&gt;
&lt;br /&gt;
		// If data-color is set add the value to the iframe&lt;br /&gt;
		if (data.color) widget.src += &#039;&amp;amp;color=&#039; + encodeURIComponent(data.color);&lt;br /&gt;
		// If data-width/height are set add that value to the iframe&lt;br /&gt;
		if (data.width) widget.width = data.width;&lt;br /&gt;
		if (data.height) widget.height = data.height;&lt;br /&gt;
&lt;br /&gt;
		return widget;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	const scParseTags = function ($content) {&lt;br /&gt;
		// Get all instances of the soundcloud class&lt;br /&gt;
		const scTags = $content.find(&#039;.soundcloud&#039;);&lt;br /&gt;
&lt;br /&gt;
		// For each instance of the soundcloud class run scPlayer&lt;br /&gt;
		for (var i = 0; i &amp;lt; scTags.length; i++) {&lt;br /&gt;
			scTags[i].replaceWith(scPlayer(scTags[i].dataset));&lt;br /&gt;
		}&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	mw.hook(&#039;wikipage.content&#039;).add(function ($content) {&lt;br /&gt;
		scParseTags($content);&lt;br /&gt;
	});&lt;br /&gt;
})();&lt;br /&gt;
/*&lt;br /&gt;
https://dev.fandom.com/wiki/MediaWiki:CopyText/code.js&lt;br /&gt;
 */&lt;br /&gt;
(function () {&lt;br /&gt;
    if (window.CopyTextLoaded) {&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
    window.CopyTextLoaded = true;&lt;br /&gt;
    mw.hook(&#039;dev.i18n&#039;).add(function (i18n) {&lt;br /&gt;
        i18n.loadMessages(&#039;CopyText&#039;).done(function (i18n) {&lt;br /&gt;
            function showSuccess() {&lt;br /&gt;
                if (window.BannerNotification) {&lt;br /&gt;
                    new BannerNotification(i18n.msg(&#039;success&#039;).escape(), &#039;confirm&#039;, null, 5000).show();&lt;br /&gt;
                } else {&lt;br /&gt;
                    mw.notify(i18n.msg(&#039;success&#039;).plain());&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            $(&#039;body&#039;).on(&#039;click&#039;, &#039;.copy-to-clipboard-button&#039;, function(e){&lt;br /&gt;
                var text = $(this).data(&#039;text&#039;),&lt;br /&gt;
                $input = $(&#039;&amp;lt;textarea&amp;gt;&#039;, { type: &#039;text&#039; })&lt;br /&gt;
                    .val($(&#039;.copy-to-clipboard-text&#039;).filter(function() {&lt;br /&gt;
                        return $(this).data(&#039;text&#039;) == text;&lt;br /&gt;
                    }).first().text())&lt;br /&gt;
                    .appendTo(&#039;body&#039;)&lt;br /&gt;
                    .select();&lt;br /&gt;
                var success = document.execCommand(&#039;Copy&#039;);&lt;br /&gt;
                $input.remove();&lt;br /&gt;
                if (success) {&lt;br /&gt;
                    showSuccess();&lt;br /&gt;
                } else {&lt;br /&gt;
                    if (window.navigator &amp;amp;&amp;amp; navigator.clipboard &amp;amp;&amp;amp; navigator.clipboard.writeText) {&lt;br /&gt;
                        navigator.clipboard.writeText(text).then(function() {&lt;br /&gt;
                            showSuccess();&lt;br /&gt;
                        });&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
    importArticle({&lt;br /&gt;
        type: &#039;script&#039;,&lt;br /&gt;
        article: &#039;u:dev:MediaWiki:I18n-js/code.js&#039;&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
/**&lt;br /&gt;
 * SpoilerAlert&lt;br /&gt;
 * documentation at: https://dev.fandom.com/wiki/SpoilerAlert&lt;br /&gt;
 * © Peter Coester, 2012&lt;br /&gt;
 */&lt;br /&gt;
/* jshint curly:false */&lt;br /&gt;
(function ($, mw) {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    var config = mw.config.get([&lt;br /&gt;
        &#039;wgArticleId&#039;,&lt;br /&gt;
        &#039;wgNamespaceNumber&#039;,&lt;br /&gt;
        &#039;wgScriptPath&#039;,&lt;br /&gt;
        &#039;wgServer&#039;&lt;br /&gt;
    ]), $element = $(&#039;#SpoilerAlert&#039;);&lt;br /&gt;
    if (&lt;br /&gt;
        config.wgNamespaceNumber === -1 ||&lt;br /&gt;
        config.wgArticleId === 0 ||&lt;br /&gt;
        $element.length !== 1&lt;br /&gt;
    ) {&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
    var SpoilerAlert = {&lt;br /&gt;
        config: $.extend({&lt;br /&gt;
            fadeDelay: 1600&lt;br /&gt;
        }, window.SpoilerAlertJS),&lt;br /&gt;
        toLoad: 3,&lt;br /&gt;
        preload: function() {&lt;br /&gt;
            if (--this.toLoad === 0) {&lt;br /&gt;
                window.dev.i18n.loadMessages(&#039;SpoilerAlert&#039;)&lt;br /&gt;
                    .then(this.init.bind(this));&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        init: function(i18n) {&lt;br /&gt;
            this.ids = JSON.parse(window.localStorage.getItem(&#039;SpoilerAlert&#039;)) || [];&lt;br /&gt;
            [&#039;yes&#039;, &#039;no&#039;, &#039;question&#039;].forEach(function(msg) {&lt;br /&gt;
                if (!this.config[msg]) {&lt;br /&gt;
                    this.config[msg] = i18n.msg(msg).plain();&lt;br /&gt;
                }&lt;br /&gt;
            }, this);&lt;br /&gt;
            if (this.valid()) {&lt;br /&gt;
                this.insertUI();&lt;br /&gt;
            }&lt;br /&gt;
            this.insertResetButton(i18n);&lt;br /&gt;
        },&lt;br /&gt;
        valid: function() {&lt;br /&gt;
            return $element.height() &amp;lt; $(&#039;#mw-content-text&#039;).height() / 2 &amp;amp;&amp;amp;&lt;br /&gt;
                   this.ids.indexOf(config.wgArticleId) === -1;&lt;br /&gt;
        },&lt;br /&gt;
        insertUI: function() {&lt;br /&gt;
            var pos = $element.position();&lt;br /&gt;
            $(&#039;#mw-content-text&#039;).append(&lt;br /&gt;
                window.dev.ui({&lt;br /&gt;
                    type: &#039;div&#039;,&lt;br /&gt;
                    attr: {&lt;br /&gt;
                        id: &#039;SpoilerAlertCover&#039;&lt;br /&gt;
                    },&lt;br /&gt;
                    style: {&lt;br /&gt;
                        width: $element.width() + &#039;px&#039;,&lt;br /&gt;
                        height: $element.height() + &#039;px&#039;,&lt;br /&gt;
                        top: pos.top + &#039;px&#039;,&lt;br /&gt;
                        left: pos.left + &#039;px&#039;&lt;br /&gt;
                    },&lt;br /&gt;
                    children: [&lt;br /&gt;
                        {&lt;br /&gt;
                            type: &#039;p&#039;,&lt;br /&gt;
                            attr: {&lt;br /&gt;
                                id: &#039;SpoilerAlertText&#039;&lt;br /&gt;
                            },&lt;br /&gt;
                            text: this.config.question&lt;br /&gt;
                        },&lt;br /&gt;
                        {&lt;br /&gt;
                            type: &#039;span&#039;,&lt;br /&gt;
                            attr: {&lt;br /&gt;
                                id: &#039;SpoilerAlertYes&#039;,&lt;br /&gt;
                                &#039;class&#039;: &#039;wds-button&#039;&lt;br /&gt;
                            },&lt;br /&gt;
                            events: {&lt;br /&gt;
                                click: this.yes.bind(this)&lt;br /&gt;
                            },&lt;br /&gt;
                            text: this.config.yes&lt;br /&gt;
                        },&lt;br /&gt;
                        {&lt;br /&gt;
                            type: &#039;span&#039;,&lt;br /&gt;
                            attr: {&lt;br /&gt;
                                id: &#039;SpoilerAlertNo&#039;,&lt;br /&gt;
                                &#039;class&#039;: &#039;wds-button&#039;&lt;br /&gt;
                            },&lt;br /&gt;
                            events: {&lt;br /&gt;
                                click: this.no.bind(this)&lt;br /&gt;
                            },&lt;br /&gt;
                            text: this.config.no&lt;br /&gt;
                        }&lt;br /&gt;
                    ]&lt;br /&gt;
                })&lt;br /&gt;
            );&lt;br /&gt;
        },&lt;br /&gt;
        insertResetButton: function(i18n) {&lt;br /&gt;
            window.dev.placement.loader.util({&lt;br /&gt;
                content: {&lt;br /&gt;
                    type: &#039;li&#039;,&lt;br /&gt;
                    children: [&lt;br /&gt;
                        {&lt;br /&gt;
                            type: &#039;a&#039;,&lt;br /&gt;
                            attr: {&lt;br /&gt;
                                href: &#039;#&#039;&lt;br /&gt;
                            },&lt;br /&gt;
                            text: i18n.msg(&#039;reset&#039;).plain(),&lt;br /&gt;
                            events: {&lt;br /&gt;
                                click: this.reset&lt;br /&gt;
                            }&lt;br /&gt;
                        }&lt;br /&gt;
                    ]&lt;br /&gt;
                },&lt;br /&gt;
                element: &#039;tools&#039;,&lt;br /&gt;
                script: &#039;SpoilerAlert&#039;,&lt;br /&gt;
                type: &#039;append&#039;&lt;br /&gt;
            });&lt;br /&gt;
        },&lt;br /&gt;
        yes: function() {&lt;br /&gt;
            this.fadeOut(&#039;#SpoilerAlertCover&#039;);&lt;br /&gt;
            this.ids.push(config.wgArticleId);&lt;br /&gt;
            window.localStorage.setItem(&#039;SpoilerAlert&#039;, JSON.stringify(this.ids));&lt;br /&gt;
        },&lt;br /&gt;
        no: function() {&lt;br /&gt;
            this.fadeOut(&#039;#SpoilerAlertText, #SpoilerAlertYes, #SpoilerAlertNo&#039;);&lt;br /&gt;
            if (this.config.back) {&lt;br /&gt;
                if (window.history &amp;amp;&amp;amp; window.history.length &amp;gt; 1) {&lt;br /&gt;
                    window.history.back();&lt;br /&gt;
                } else {&lt;br /&gt;
                    location.href = config.wgServer + config.wgScriptPath;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        fadeOut: function(el) {&lt;br /&gt;
            $(el).fadeOut(this.config.fadeDelay, function() {&lt;br /&gt;
                $(this).remove();&lt;br /&gt;
            });&lt;br /&gt;
        },&lt;br /&gt;
        reset: function(event) {&lt;br /&gt;
            event.preventDefault();&lt;br /&gt;
            window.localStorage.setItem(&#039;SpoilerAlert&#039;, JSON.stringify([]));&lt;br /&gt;
            window.location.reload();&lt;br /&gt;
        }&lt;br /&gt;
    };&lt;br /&gt;
    if (!window.dev || !window.dev.ui || !window.dev.i18n || !window.dev.placement) {&lt;br /&gt;
        importArticles({&lt;br /&gt;
            type: &#039;script&#039;,&lt;br /&gt;
            articles: [&lt;br /&gt;
                &#039;u:dev:MediaWiki:I18n-js/code.js&#039;,&lt;br /&gt;
                &#039;u:dev:MediaWiki:Placement.js&#039;,&lt;br /&gt;
                &#039;u:dev:MediaWiki:UI-js/code.js&#039;&lt;br /&gt;
            ]&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
    importArticle({&lt;br /&gt;
        type: &#039;style&#039;,&lt;br /&gt;
        article: &#039;u:dev:MediaWiki:SpoilerAlert.css&#039;&lt;br /&gt;
    });&lt;br /&gt;
    mw.hook(&#039;dev.ui&#039;).add(SpoilerAlert.preload.bind(SpoilerAlert));&lt;br /&gt;
    mw.hook(&#039;dev.i18n&#039;).add(SpoilerAlert.preload.bind(SpoilerAlert));&lt;br /&gt;
    mw.hook(&#039;dev.placement&#039;).add(SpoilerAlert.preload.bind(SpoilerAlert));&lt;br /&gt;
})(window.jQuery, window.mediaWiki);&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=Template:Spoiler&amp;diff=1495</id>
		<title>Template:Spoiler</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=Template:Spoiler&amp;diff=1495"/>
		<updated>2025-04-06T06:24:31Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{#vardefine:element|{{#if:{{{block|}}}|div|span}}}}&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&amp;lt;{{#var:element}} class=&amp;quot;spoiler no-js {{#if:{{{hover|}}}|hover|click}} {{{class|}}}&amp;quot; id=&amp;quot;{{{id|}}}&amp;quot; style=&amp;quot;{{{css|{{{style|}}}}}}&amp;quot;&amp;gt;&amp;lt;{{#var:element}}&amp;gt;{{{1|}}}&amp;lt;/{{#var:element}}&amp;gt;&amp;lt;/{{#var:element}}&amp;gt;&amp;lt;!-- &lt;br /&gt;
--&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
&lt;br /&gt;
Base code written for Terraria Wiki: https://terraria.wiki.gg/wiki/Template:Spoiler&lt;br /&gt;
&lt;br /&gt;
NOTE: This template needs a JavaScript function in MediaWiki:Common.js or MediaWiki:Vector.js to work, as well as styling in MediaWiki:Common.css or MediaWiki:Vector.css for the related classes&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=User:Pynappo&amp;diff=1494</id>
		<title>User:Pynappo</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=User:Pynappo&amp;diff=1494"/>
		<updated>2025-04-06T06:20:15Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi {{spoiler|David}}&lt;br /&gt;
&lt;br /&gt;
Hi {{spoiler|hover=y|David}}&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=MediaWiki:Common.css&amp;diff=1493</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=MediaWiki:Common.css&amp;diff=1493"/>
		<updated>2025-04-06T06:18:59Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/********* [[Template:Spoiler]] *********/&lt;br /&gt;
.spoiler {&lt;br /&gt;
  background-color: transparent;&lt;br /&gt;
  transition: all 0.3s;&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
  overflow:auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.spoiler &amp;gt; * {&lt;br /&gt;
  transition: all 0.3s;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.spoiler.hide {&lt;br /&gt;
  pointer-events: auto;&lt;br /&gt;
  background-color: var(--main-background-color); /* fallback */&lt;br /&gt;
  background-color: color-mix(in srgb, var(--main-background-color) 80%, transparent);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.spoiler.hide &amp;gt; * {&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
  opacity: 0;&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
/* If there&#039;s no js, hide then show on hover */&lt;br /&gt;
.spoiler.hover,&lt;br /&gt;
.spoiler.no-js {&lt;br /&gt;
  background-color: var(--main-background-color); /* fallback */&lt;br /&gt;
  background-color: color-mix(in srgb, var(--main-background-color) 80%, transparent);&lt;br /&gt;
}&lt;br /&gt;
.spoiler.hover &amp;gt; *,&lt;br /&gt;
.spoiler.no-js &amp;gt; * {&lt;br /&gt;
  opacity: 0;&lt;br /&gt;
}&lt;br /&gt;
.spoiler.hover:hover,&lt;br /&gt;
.spoiler.no-js:hover {&lt;br /&gt;
  background-color: transparent;&lt;br /&gt;
}&lt;br /&gt;
.spoiler.hover:hover,&lt;br /&gt;
.spoiler.no-js:hover &amp;gt; * {&lt;br /&gt;
  opacity: 1;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=MediaWiki:Common.css&amp;diff=1492</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=MediaWiki:Common.css&amp;diff=1492"/>
		<updated>2025-04-06T06:18:17Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: add hover support&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/********* [[Template:Spoiler]] *********/&lt;br /&gt;
.spoiler {&lt;br /&gt;
  background-color: transparent;&lt;br /&gt;
  transition: all 0.3s;&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
  overflow:auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.spoiler &amp;gt; * {&lt;br /&gt;
  transition: all 0.3s;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.spoiler.hide {&lt;br /&gt;
  pointer-events: auto;&lt;br /&gt;
  background-color: var(--main-background-color); /* fallback */&lt;br /&gt;
  background-color: color-mix(in srgb, var(--main-background-color) 80%, transparent);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.spoiler.hide &amp;gt; * {&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
  opacity: 0;&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
/* If there&#039;s no js, hide then show on hover */&lt;br /&gt;
.spoiler.hover,&lt;br /&gt;
.spoiler.no-js {&lt;br /&gt;
  background-color: var(--main-background-color); /* fallback */&lt;br /&gt;
  background-color: color-mix(in srgb, var(--main-background-color) 80%, transparent);&lt;br /&gt;
}&lt;br /&gt;
.spoiler.hover,&lt;br /&gt;
.spoiler.no-js &amp;gt; * {&lt;br /&gt;
  opacity: 0;&lt;br /&gt;
}&lt;br /&gt;
.spoiler.hover,&lt;br /&gt;
.spoiler.no-js:hover {&lt;br /&gt;
  background-color: transparent;&lt;br /&gt;
}&lt;br /&gt;
.spoiler.hover,&lt;br /&gt;
.spoiler.no-js:hover &amp;gt; * {&lt;br /&gt;
  opacity: 1;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=Template:Spoiler&amp;diff=1491</id>
		<title>Template:Spoiler</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=Template:Spoiler&amp;diff=1491"/>
		<updated>2025-04-06T06:15:41Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{#vardefine:element|{{#if:{{{block|}}}|div|span}}}}&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&amp;lt;{{#var:element}} class=&amp;quot;spoiler no-js {{#if:{{{hover|}}}|hover}} {{{class|}}}&amp;quot; id=&amp;quot;{{{id|}}}&amp;quot; style=&amp;quot;{{{css|{{{style|}}}}}}&amp;quot;&amp;gt;&amp;lt;{{#var:element}}&amp;gt;{{{1|}}}&amp;lt;/{{#var:element}}&amp;gt;&amp;lt;/{{#var:element}}&amp;gt;&amp;lt;!-- &lt;br /&gt;
--&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
&lt;br /&gt;
Base code written for Terraria Wiki: https://terraria.wiki.gg/wiki/Template:Spoiler&lt;br /&gt;
&lt;br /&gt;
NOTE: This template needs a JavaScript function in MediaWiki:Common.js or MediaWiki:Vector.js to work, as well as styling in MediaWiki:Common.css or MediaWiki:Vector.css for the related classes&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=MediaWiki:Common.css&amp;diff=1490</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=MediaWiki:Common.css&amp;diff=1490"/>
		<updated>2025-04-06T05:58:39Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/********* [[Template:Spoiler]] *********/&lt;br /&gt;
.spoiler {&lt;br /&gt;
  background-color: transparent;&lt;br /&gt;
  transition: all 0.3s;&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
  overflow:auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.spoiler &amp;gt; * {&lt;br /&gt;
  transition: all 0.3s;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.spoiler.hide {&lt;br /&gt;
  pointer-events: auto;&lt;br /&gt;
  background-color: var(--main-background-color); /* fallback */&lt;br /&gt;
  background-color: color-mix(in srgb, var(--main-background-color) 80%, transparent);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.spoiler.hide &amp;gt; * {&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
  opacity: 0;&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
/* If there&#039;s no js, hide then show on hover */&lt;br /&gt;
.spoiler.no-js {&lt;br /&gt;
  background-color: var(--main-background-color); /* fallback */&lt;br /&gt;
  background-color: color-mix(in srgb, var(--main-background-color) 80%, transparent);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.spoiler.no-js &amp;gt; * {&lt;br /&gt;
  opacity: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.spoiler.no-js:hover {&lt;br /&gt;
  background-color: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.spoiler.no-js:hover &amp;gt; * {&lt;br /&gt;
  opacity: 1;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=MediaWiki:Common.js&amp;diff=1489</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=MediaWiki:Common.js&amp;diff=1489"/>
		<updated>2025-04-06T05:56:14Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* [[Template:Spoiler]] https://support.wiki.gg/wiki/Template:Spoiler */&lt;br /&gt;
$(function () {&lt;br /&gt;
	$(&#039;.spoiler&#039;)&lt;br /&gt;
	.off(&#039;click&#039;) // in case this code is loaded twice&lt;br /&gt;
	.addClass( &#039;hide&#039; )&lt;br /&gt;
	.removeClass( &#039;no-js&#039; )&lt;br /&gt;
	.on(&#039;click&#039;, function(e){&lt;br /&gt;
		$(this).toggleClass(&#039;hide&#039;);&lt;br /&gt;
	}).find(&#039;a&#039;).on(&#039;click&#039;, function(e){&lt;br /&gt;
		e.stopPropagation();&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
});&lt;br /&gt;
/* End Template:Spoiler */&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Name:        WhatLinksHere&lt;br /&gt;
 * Version:     v1.1&lt;br /&gt;
 * Author:      KockaAdmiralac &amp;lt;wikia@kocka.tech&amp;gt;&lt;br /&gt;
 * Description: Adds a link to Special:WhatLinksHere below the edit dropdown&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
    var $list = $(&#039;.page-header__contribution-buttons .wds-list, .page-header__actions .wds-list, .UserProfileActionButton .WikiaMenuElement&#039;);&lt;br /&gt;
&lt;br /&gt;
    if (!$list.length || window.WhatLinksHereLoaded) {&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
    window.WhatLinksHereLoaded = true;&lt;br /&gt;
&lt;br /&gt;
    var config = mw.config.get([&lt;br /&gt;
        &#039;wgPageName&#039;,&lt;br /&gt;
        &#039;wgUserLanguage&#039;&lt;br /&gt;
    ]);&lt;br /&gt;
&lt;br /&gt;
    mw.hook(&#039;dev.fetch&#039;).add(function(fetch) {&lt;br /&gt;
        $.when(&lt;br /&gt;
            fetch(&#039;whatlinkshere&#039;),&lt;br /&gt;
            mw.loader.using(&#039;mediawiki.util&#039;)&lt;br /&gt;
        ).then(function(text) {&lt;br /&gt;
            var url = mw.util.getUrl(&#039;Special:WhatLinksHere/&#039; + config.wgPageName);&lt;br /&gt;
            $list.append(&lt;br /&gt;
                $(&#039;&amp;lt;li&amp;gt;&#039;, {&lt;br /&gt;
                    id: &#039;ca-whatlinkshere&#039;&lt;br /&gt;
                }).append(&lt;br /&gt;
                    $(&#039;&amp;lt;a&amp;gt;&#039;, {&lt;br /&gt;
                        href: url,&lt;br /&gt;
                        text: text&lt;br /&gt;
                    })&lt;br /&gt;
                )&lt;br /&gt;
            );&lt;br /&gt;
            if (mw.util.getParamValue(&#039;redirect&#039;) === &#039;no&#039;) {&lt;br /&gt;
                $(&#039;.redirectText&#039;).append(&lt;br /&gt;
                    $(&#039;&amp;lt;br&amp;gt;&#039;),&lt;br /&gt;
                    $(&#039;&amp;lt;span&amp;gt;&#039;, {&lt;br /&gt;
                        id: &#039;redirectWLH&#039;&lt;br /&gt;
                    }).append(&lt;br /&gt;
                        &#039;→ &#039;,&lt;br /&gt;
                        $(&#039;&amp;lt;a&amp;gt;&#039;, {&lt;br /&gt;
                            &#039;class&#039;: &#039;redirectWLH-link&#039;,&lt;br /&gt;
                            href: url,&lt;br /&gt;
                            text: text&lt;br /&gt;
                        })&lt;br /&gt;
                    )&lt;br /&gt;
                );&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
    importArticle({&lt;br /&gt;
        type: &#039;script&#039;,&lt;br /&gt;
        article: &#039;u:dev:MediaWiki:Fetch.js&#039;&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
// __NOWYSIWYG__&lt;br /&gt;
/**&lt;br /&gt;
 * TabberEX&lt;br /&gt;
 *&lt;br /&gt;
 * @version 2.3&lt;br /&gt;
 *&lt;br /&gt;
 * @author Jono99 &amp;lt;https://phigros.fandom.com/wiki/User:Jono99&amp;gt;&lt;br /&gt;
 *&lt;br /&gt;
 * documentation and examples at:&lt;br /&gt;
 * &amp;lt;https://dev.fandom.com/wiki/TabberEX&amp;gt;&lt;br /&gt;
 */&lt;br /&gt;
 &lt;br /&gt;
 (function (window, $, mw) {&lt;br /&gt;
	// Function called by tabs to switch tabs&lt;br /&gt;
	window.tabberex_switchTab = function(tabber_id, tab)&lt;br /&gt;
	{&lt;br /&gt;
		tabberex_hideAllTabs(tabber_id);&lt;br /&gt;
		tabberex_showTab(tabber_id, tab);&lt;br /&gt;
	};&lt;br /&gt;
 &lt;br /&gt;
	// Inject CSS&lt;br /&gt;
	(function() {&lt;br /&gt;
		var tabberex_css = document.createElement(&amp;quot;style&amp;quot;);&lt;br /&gt;
		tabberex_css.innerHTML = &amp;quot;/* CSS owned by FANDOM */\n.oo-ui-tabOptionWidget{display:inline-block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;vertical-align:bottom;align-items:center;color:color-mix(in srgb, var(--text-color) 75%, transparent);display:inline-flex;font-size:14px;font-weight:500;height:40px;letter-spacing:.5px;margin:0;padding:0 11px;-webkit-transition:var(--content-background-color) .3s,color .3s,var(--banner-color) .3s;-moz-transition:var(--content-background-color) .3s,color .3s,var(--banner-color) .3s;transition:var(--content-background-color) .3s,color .3s,var(--banner-color) .3s}.oo-ui-tabSelectWidget:not(.oo-ui-tabSelectWidget-framed) .oo-ui-tabOptionWidget{-webkit-transition:color .3s,box-shadow .3s;-moz-transition:color .3s,box-shadow .3s;transition:color .3s,box-shadow .3s;border-bottom:1px solid var(--banner-color)}.oo-ui-tabSelectWidget:not(.oo-ui-tabSelectWidget-framed) .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected{box-shadow:inset 0 -2px 0 0 var(--link-color);color:var(--link-color)}&amp;quot;;&lt;br /&gt;
		document.head.appendChild(tabberex_css);&lt;br /&gt;
	})();&lt;br /&gt;
		&lt;br /&gt;
	window.tabberex_showTab = function(tabber_id, i)&lt;br /&gt;
	{&lt;br /&gt;
		var base_selector = &amp;quot;[data-tabber-id=\&amp;quot;&amp;quot; + tabber_id + &amp;quot;\&amp;quot;]&amp;quot;;&lt;br /&gt;
		$(&amp;quot;.tabberex-head&amp;quot; + base_selector).children(&amp;quot;:nth-child(&amp;quot; + i + &amp;quot;)&amp;quot;)&lt;br /&gt;
		.addClass(&amp;quot;oo-ui-optionWidget-selected&amp;quot;)&lt;br /&gt;
		.css(&amp;quot;cursor&amp;quot;, &amp;quot;default&amp;quot;);&lt;br /&gt;
				&lt;br /&gt;
		$($(&amp;quot;.tabberex-body&amp;quot; + base_selector).children(&amp;quot;:nth-child(&amp;quot; + i + &amp;quot;)&amp;quot;).get()).each(function () {&lt;br /&gt;
            var display_value = $(this).attr(&amp;quot;data-tab-display&amp;quot;);&lt;br /&gt;
            if (display_value === undefined) display_value = &amp;quot;block&amp;quot;;&lt;br /&gt;
            $(this).css(&amp;quot;display&amp;quot;, display_value);&lt;br /&gt;
        });&lt;br /&gt;
	};&lt;br /&gt;
	 &lt;br /&gt;
	window.tabberex_hideTab = function(tabber_id, i)&lt;br /&gt;
	{&lt;br /&gt;
		var base_selector = &amp;quot;[data-tabber-id=\&amp;quot;&amp;quot; + tabber_id + &amp;quot;\&amp;quot;]&amp;quot;;&lt;br /&gt;
		$(&amp;quot;.tabberex-head&amp;quot; + base_selector).children(&amp;quot;:nth-child(&amp;quot; + i + &amp;quot;)&amp;quot;)&lt;br /&gt;
		.removeClass(&amp;quot;oo-ui-optionWidget-selected&amp;quot;)&lt;br /&gt;
		.css(&amp;quot;cursor&amp;quot;, &amp;quot;pointer&amp;quot;);&lt;br /&gt;
				&lt;br /&gt;
		$(&amp;quot;.tabberex-body&amp;quot; + base_selector).children(&amp;quot;:nth-child(&amp;quot; + i + &amp;quot;)&amp;quot;).css(&amp;quot;display&amp;quot;, &amp;quot;none&amp;quot;);&lt;br /&gt;
	};&lt;br /&gt;
			&lt;br /&gt;
	window.tabberex_hideAllTabs = function(tabber_id)&lt;br /&gt;
	{&lt;br /&gt;
		var base_selector = &amp;quot;[data-tabber-id=\&amp;quot;&amp;quot; + tabber_id + &amp;quot;\&amp;quot;]&amp;quot;;&lt;br /&gt;
		$(&amp;quot;.tabberex-head&amp;quot; + base_selector).children()&lt;br /&gt;
		.removeClass(&amp;quot;oo-ui-optionWidget-selected&amp;quot;)&lt;br /&gt;
		.css(&amp;quot;cursor&amp;quot;, &amp;quot;pointer&amp;quot;);&lt;br /&gt;
				&lt;br /&gt;
		$(&amp;quot;.tabberex-body&amp;quot; + base_selector).children().css(&amp;quot;display&amp;quot;, &amp;quot;none&amp;quot;);&lt;br /&gt;
	};&lt;br /&gt;
	&lt;br /&gt;
	var tabberex_buildTabHead = function(host_div, tabber_id, tab_headers, tab_ex_headers, tab_locations)&lt;br /&gt;
	{&lt;br /&gt;
		var tabber_head = host_div;&lt;br /&gt;
		tabber_head.innerHTML = &amp;quot;&amp;quot;;&lt;br /&gt;
		$(tabber_head).addClass(&amp;quot;tabberex-head oo-ui-widget oo-ui-widget-enabled oo-ui-selectWidget oo-ui-selectWidget-unpressed oo-ui-selectWidget-depressed oo-ui-tabSelectWidget&amp;quot;)&lt;br /&gt;
		.attr(&amp;quot;data-tabber-id&amp;quot;, tabber_id);&lt;br /&gt;
		for (var i = 0; i &amp;lt; tab_headers.length; i++)&lt;br /&gt;
		{&lt;br /&gt;
			console.log(&amp;quot;Building tab &amp;quot; + tabber_id + &amp;quot; &amp;quot; + String(i));&lt;br /&gt;
			var tab = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			$(tab).addClass(&amp;quot;oo-ui-widget oo-ui-widget-enabled oo-ui-labelElement oo-ui-optionWidget oo-ui-tabOptionWidget&amp;quot;)&lt;br /&gt;
			.css(&amp;quot;cursor&amp;quot;, &amp;quot;pointer&amp;quot;);&lt;br /&gt;
			if (tab_locations[i] === undefined)&lt;br /&gt;
				$(tab).attr(&amp;quot;onclick&amp;quot;, &amp;quot;tabberex_switchTab(\&amp;quot;&amp;quot; + mw.html.escape(tabber_id) + &amp;quot;\&amp;quot;, &amp;quot; + (i + 1) + &amp;quot;)&amp;quot;);&lt;br /&gt;
			else&lt;br /&gt;
				$(tab).attr(&amp;quot;onclick&amp;quot;, &amp;quot;location = \&amp;quot;&amp;quot; + mw.html.escape(tab_locations[i]) + &amp;quot;\&amp;quot;&amp;quot;);&lt;br /&gt;
			var tab_span = document.createElement(&amp;quot;span&amp;quot;);&lt;br /&gt;
			$(tab_span).addClass(&amp;quot;oo-ui-labelElement-label&amp;quot;);&lt;br /&gt;
			if (tab_ex_headers[i] === undefined)&lt;br /&gt;
				$(tab_span).text(tab_headers[i]);&lt;br /&gt;
			else&lt;br /&gt;
			{&lt;br /&gt;
				console.log(&amp;quot;EX Header present&amp;quot;);&lt;br /&gt;
				for (var attr in tab_ex_headers[i][1])&lt;br /&gt;
					tab_span.setAttribute(attr, tab_ex_headers[i][1][attr]);&lt;br /&gt;
				$(tab_span).html(tab_ex_headers[i][0]);&lt;br /&gt;
			}&lt;br /&gt;
			tab.appendChild(tab_span);&lt;br /&gt;
			tabber_head.appendChild(tab);&lt;br /&gt;
			console.log(&amp;quot;Successfully built tab&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		return tabber_head.outerHTML;&lt;br /&gt;
	};&lt;br /&gt;
	&lt;br /&gt;
	var process_tabber_head_tab = function(tab_element, i)&lt;br /&gt;
	{&lt;br /&gt;
		// Get header&lt;br /&gt;
		var header = $(tab_element).attr(&amp;quot;data-tab-header&amp;quot;);&lt;br /&gt;
		if (header === undefined) header = i + 1;&lt;br /&gt;
		&lt;br /&gt;
		// Get ex header&lt;br /&gt;
		var ex_header;&lt;br /&gt;
		function get_ex_header(_) {&lt;br /&gt;
			console.log(&#039;EX Header found&#039;);&lt;br /&gt;
			var attributes = {};&lt;br /&gt;
			var attrs = this.getAttributeNames();&lt;br /&gt;
			for (var i in attrs)&lt;br /&gt;
				attributes[attrs[i]] = this.getAttribute(attrs[i]);&lt;br /&gt;
			ex_header = [$(this).html(), attributes];&lt;br /&gt;
			$(this).remove();&lt;br /&gt;
		}&lt;br /&gt;
		$(tab_element).children(&amp;quot;p&amp;quot;).children(&amp;quot;span.tabberex-tab-header&amp;quot;).each(get_ex_header);&lt;br /&gt;
		$(tab_element).children(&amp;quot;span.tabberex-tab-header&amp;quot;).each(get_ex_header);&lt;br /&gt;
		&lt;br /&gt;
		// Get default&lt;br /&gt;
		var is_default = false;&lt;br /&gt;
		if ($(tab_element).hasClass(&amp;quot;tabberex-tab-default&amp;quot;))&lt;br /&gt;
			is_default = true;&lt;br /&gt;
		&lt;br /&gt;
		// Get tab location&lt;br /&gt;
		var tab_location = $(this).attr(&amp;quot;data-tab-location&amp;quot;);&lt;br /&gt;
		&lt;br /&gt;
		return {&amp;quot;header&amp;quot;: header, &amp;quot;ex_header&amp;quot;: ex_header, &amp;quot;default&amp;quot;: is_default, &amp;quot;location&amp;quot;: tab_location};&lt;br /&gt;
	};&lt;br /&gt;
	&lt;br /&gt;
	var process_tabbers = function()&lt;br /&gt;
	{&lt;br /&gt;
		console.log(&#039;TabberEX started&#039;);&lt;br /&gt;
		var tabber_i = 0;&lt;br /&gt;
		var default_tabs = {};&lt;br /&gt;
		var tabber_ids = [];&lt;br /&gt;
		// The tabs are iterated through backwards to properly handle tabbers that are nested within other tabbers&lt;br /&gt;
		$($(&amp;quot;.tabberex-head&amp;quot;).get().reverse()).each(function() {&lt;br /&gt;
			var tab_headers = [];&lt;br /&gt;
			var tab_ex_headers = [];&lt;br /&gt;
			var tab_locations = [];&lt;br /&gt;
			var default_tab = 0;&lt;br /&gt;
				&lt;br /&gt;
			var tabber_id = $(this).attr(&amp;quot;data-tabber-id&amp;quot;);&lt;br /&gt;
			if (tabber_id === undefined) tabber_id = String(tabber_i);&lt;br /&gt;
				&lt;br /&gt;
			$(this).children(&amp;quot;.tabberex-tab&amp;quot;).each(function(i) {&lt;br /&gt;
				console.log(&#039;Processing head tab &#039; + tabber_id + &#039; &#039; + String(i));&lt;br /&gt;
				var tab_details = process_tabber_head_tab(this, i);&lt;br /&gt;
				console.log(&#039;Processing complete&#039;);&lt;br /&gt;
				tab_headers[i] = tab_details.header;&lt;br /&gt;
				tab_ex_headers[i] = tab_details.ex_header;&lt;br /&gt;
				if (tab_details.default)&lt;br /&gt;
					default_tab = i;&lt;br /&gt;
				tab_locations[i] = tab_details.location;&lt;br /&gt;
				$(this).detach();&lt;br /&gt;
			});&lt;br /&gt;
			&lt;br /&gt;
			// Insert tabs into DOM&lt;br /&gt;
			tabberex_buildTabHead(this, tabber_id, tab_headers, tab_ex_headers, tab_locations);&lt;br /&gt;
			if (default_tabs[tabber_id] === undefined)&lt;br /&gt;
				default_tabs[tabber_id] = default_tab;&lt;br /&gt;
			tabber_ids.push(tabber_id);&lt;br /&gt;
			tabber_i++;&lt;br /&gt;
		});&lt;br /&gt;
		&lt;br /&gt;
		$($(&amp;quot;.tabberex-body&amp;quot;).get().reverse()).each(function() {&lt;br /&gt;
			$(this).children().css(&amp;quot;display&amp;quot;, &amp;quot;none&amp;quot;);&lt;br /&gt;
		});&lt;br /&gt;
		&lt;br /&gt;
		$($(&amp;quot;.tabberex&amp;quot;).get().reverse()).each(function() {&lt;br /&gt;
			var tab_headers = [];&lt;br /&gt;
			var tab_ex_headers = [];&lt;br /&gt;
			var tab_locations = [];&lt;br /&gt;
			var default_tab = 0;&lt;br /&gt;
			var tab_contents = [];&lt;br /&gt;
			&lt;br /&gt;
			var tabber_id = $(this).attr(&amp;quot;data-tabber-id&amp;quot;);&lt;br /&gt;
			if (tabber_id === undefined) tabber_id = String(tabber_i);&lt;br /&gt;
            $(this).attr(&amp;quot;data-tabber-id&amp;quot;, tabber_id);&lt;br /&gt;
&lt;br /&gt;
            var tabber_head = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
            $(tabber_head).addClass(&amp;quot;tabberex-head&amp;quot;).attr(&amp;quot;data-tabber-id&amp;quot;, tabber_id);&lt;br /&gt;
            $(this).removeClass(&amp;quot;tabberex&amp;quot;).addClass(&amp;quot;tabberex-body&amp;quot;);&lt;br /&gt;
			&lt;br /&gt;
			$(this).children(&amp;quot;.tabberex-tab&amp;quot;).each(function(i) {&lt;br /&gt;
				console.log(&#039;Processing head tab &#039; + tabber_id + &#039; &#039; + String(i));&lt;br /&gt;
				var tab_details = process_tabber_head_tab(this, i);&lt;br /&gt;
				console.log(&#039;Processing complete&#039;);&lt;br /&gt;
				tab_headers[i] = tab_details.header;&lt;br /&gt;
				tab_ex_headers[i] = tab_details.ex_header;&lt;br /&gt;
				if (tab_details.default)&lt;br /&gt;
					default_tab = i;&lt;br /&gt;
				tab_locations[i] = tab_details.location;&lt;br /&gt;
				&lt;br /&gt;
				// Get tab content&lt;br /&gt;
				$(this).css(&amp;quot;display&amp;quot;, &amp;quot;none&amp;quot;);&lt;br /&gt;
				tab_contents[i] = $(this);&lt;br /&gt;
			});&lt;br /&gt;
&lt;br /&gt;
            tabberex_buildTabHead(tabber_head, tabber_id, tab_headers, tab_ex_headers, tab_locations);&lt;br /&gt;
			if (default_tabs[tabber_id] === undefined)&lt;br /&gt;
				default_tabs[tabber_id] = default_tab;&lt;br /&gt;
            $(tabber_head).insertBefore(this);&lt;br /&gt;
			tabber_ids.push(tabber_id);&lt;br /&gt;
			tabber_i++;&lt;br /&gt;
		});&lt;br /&gt;
		&lt;br /&gt;
		// Select default tabs&lt;br /&gt;
		for (var i in tabber_ids)&lt;br /&gt;
		{&lt;br /&gt;
			tabberex_showTab(tabber_ids[i], default_tabs[tabber_ids[i]] + 1);&lt;br /&gt;
		}&lt;br /&gt;
	};&lt;br /&gt;
 &lt;br /&gt;
	mw.hook(&amp;quot;wikipage.content&amp;quot;).add(process_tabbers);&lt;br /&gt;
}(this, jQuery, mediaWiki));&lt;br /&gt;
/*&lt;br /&gt;
 * @title           SoundcloudPlayer.js&lt;br /&gt;
 * @version         1.1.2&lt;br /&gt;
 * @description     Add support for soundcloud players&lt;br /&gt;
 * @author          Himmalerin&lt;br /&gt;
 * @license         CC-BY-SA-3.0&lt;br /&gt;
 */&lt;br /&gt;
(function () {&lt;br /&gt;
	// Build the iframe&lt;br /&gt;
	const scPlayer = function (data) {&lt;br /&gt;
		const widget = document.createElement(&#039;iframe&#039;);&lt;br /&gt;
&lt;br /&gt;
		widget.classList.add(&#039;soundcloud-player&#039;);&lt;br /&gt;
&lt;br /&gt;
		widget.src =&lt;br /&gt;
			&#039;https://w.soundcloud.com/player/?show_artwork=false&amp;amp;url=&#039; +&lt;br /&gt;
			encodeURI(data.src);&lt;br /&gt;
&lt;br /&gt;
		// If data-color is set add the value to the iframe&lt;br /&gt;
		if (data.color) widget.src += &#039;&amp;amp;color=&#039; + encodeURIComponent(data.color);&lt;br /&gt;
		// If data-width/height are set add that value to the iframe&lt;br /&gt;
		if (data.width) widget.width = data.width;&lt;br /&gt;
		if (data.height) widget.height = data.height;&lt;br /&gt;
&lt;br /&gt;
		return widget;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	const scParseTags = function ($content) {&lt;br /&gt;
		// Get all instances of the soundcloud class&lt;br /&gt;
		const scTags = $content.find(&#039;.soundcloud&#039;);&lt;br /&gt;
&lt;br /&gt;
		// For each instance of the soundcloud class run scPlayer&lt;br /&gt;
		for (var i = 0; i &amp;lt; scTags.length; i++) {&lt;br /&gt;
			scTags[i].replaceWith(scPlayer(scTags[i].dataset));&lt;br /&gt;
		}&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	mw.hook(&#039;wikipage.content&#039;).add(function ($content) {&lt;br /&gt;
		scParseTags($content);&lt;br /&gt;
	});&lt;br /&gt;
})();&lt;br /&gt;
/*&lt;br /&gt;
https://dev.fandom.com/wiki/MediaWiki:CopyText/code.js&lt;br /&gt;
 */&lt;br /&gt;
(function () {&lt;br /&gt;
    if (window.CopyTextLoaded) {&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
    window.CopyTextLoaded = true;&lt;br /&gt;
    mw.hook(&#039;dev.i18n&#039;).add(function (i18n) {&lt;br /&gt;
        i18n.loadMessages(&#039;CopyText&#039;).done(function (i18n) {&lt;br /&gt;
            function showSuccess() {&lt;br /&gt;
                if (window.BannerNotification) {&lt;br /&gt;
                    new BannerNotification(i18n.msg(&#039;success&#039;).escape(), &#039;confirm&#039;, null, 5000).show();&lt;br /&gt;
                } else {&lt;br /&gt;
                    mw.notify(i18n.msg(&#039;success&#039;).plain());&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            $(&#039;body&#039;).on(&#039;click&#039;, &#039;.copy-to-clipboard-button&#039;, function(e){&lt;br /&gt;
                var text = $(this).data(&#039;text&#039;),&lt;br /&gt;
                $input = $(&#039;&amp;lt;textarea&amp;gt;&#039;, { type: &#039;text&#039; })&lt;br /&gt;
                    .val($(&#039;.copy-to-clipboard-text&#039;).filter(function() {&lt;br /&gt;
                        return $(this).data(&#039;text&#039;) == text;&lt;br /&gt;
                    }).first().text())&lt;br /&gt;
                    .appendTo(&#039;body&#039;)&lt;br /&gt;
                    .select();&lt;br /&gt;
                var success = document.execCommand(&#039;Copy&#039;);&lt;br /&gt;
                $input.remove();&lt;br /&gt;
                if (success) {&lt;br /&gt;
                    showSuccess();&lt;br /&gt;
                } else {&lt;br /&gt;
                    if (window.navigator &amp;amp;&amp;amp; navigator.clipboard &amp;amp;&amp;amp; navigator.clipboard.writeText) {&lt;br /&gt;
                        navigator.clipboard.writeText(text).then(function() {&lt;br /&gt;
                            showSuccess();&lt;br /&gt;
                        });&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
    importArticle({&lt;br /&gt;
        type: &#039;script&#039;,&lt;br /&gt;
        article: &#039;u:dev:MediaWiki:I18n-js/code.js&#039;&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
/**&lt;br /&gt;
 * SpoilerAlert&lt;br /&gt;
 * documentation at: https://dev.fandom.com/wiki/SpoilerAlert&lt;br /&gt;
 * © Peter Coester, 2012&lt;br /&gt;
 */&lt;br /&gt;
/* jshint curly:false */&lt;br /&gt;
(function ($, mw) {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    var config = mw.config.get([&lt;br /&gt;
        &#039;wgArticleId&#039;,&lt;br /&gt;
        &#039;wgNamespaceNumber&#039;,&lt;br /&gt;
        &#039;wgScriptPath&#039;,&lt;br /&gt;
        &#039;wgServer&#039;&lt;br /&gt;
    ]), $element = $(&#039;#SpoilerAlert&#039;);&lt;br /&gt;
    if (&lt;br /&gt;
        config.wgNamespaceNumber === -1 ||&lt;br /&gt;
        config.wgArticleId === 0 ||&lt;br /&gt;
        $element.length !== 1&lt;br /&gt;
    ) {&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
    var SpoilerAlert = {&lt;br /&gt;
        config: $.extend({&lt;br /&gt;
            fadeDelay: 1600&lt;br /&gt;
        }, window.SpoilerAlertJS),&lt;br /&gt;
        toLoad: 3,&lt;br /&gt;
        preload: function() {&lt;br /&gt;
            if (--this.toLoad === 0) {&lt;br /&gt;
                window.dev.i18n.loadMessages(&#039;SpoilerAlert&#039;)&lt;br /&gt;
                    .then(this.init.bind(this));&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        init: function(i18n) {&lt;br /&gt;
            this.ids = JSON.parse(window.localStorage.getItem(&#039;SpoilerAlert&#039;)) || [];&lt;br /&gt;
            [&#039;yes&#039;, &#039;no&#039;, &#039;question&#039;].forEach(function(msg) {&lt;br /&gt;
                if (!this.config[msg]) {&lt;br /&gt;
                    this.config[msg] = i18n.msg(msg).plain();&lt;br /&gt;
                }&lt;br /&gt;
            }, this);&lt;br /&gt;
            if (this.valid()) {&lt;br /&gt;
                this.insertUI();&lt;br /&gt;
            }&lt;br /&gt;
            this.insertResetButton(i18n);&lt;br /&gt;
        },&lt;br /&gt;
        valid: function() {&lt;br /&gt;
            return $element.height() &amp;lt; $(&#039;#mw-content-text&#039;).height() / 2 &amp;amp;&amp;amp;&lt;br /&gt;
                   this.ids.indexOf(config.wgArticleId) === -1;&lt;br /&gt;
        },&lt;br /&gt;
        insertUI: function() {&lt;br /&gt;
            var pos = $element.position();&lt;br /&gt;
            $(&#039;#mw-content-text&#039;).append(&lt;br /&gt;
                window.dev.ui({&lt;br /&gt;
                    type: &#039;div&#039;,&lt;br /&gt;
                    attr: {&lt;br /&gt;
                        id: &#039;SpoilerAlertCover&#039;&lt;br /&gt;
                    },&lt;br /&gt;
                    style: {&lt;br /&gt;
                        width: $element.width() + &#039;px&#039;,&lt;br /&gt;
                        height: $element.height() + &#039;px&#039;,&lt;br /&gt;
                        top: pos.top + &#039;px&#039;,&lt;br /&gt;
                        left: pos.left + &#039;px&#039;&lt;br /&gt;
                    },&lt;br /&gt;
                    children: [&lt;br /&gt;
                        {&lt;br /&gt;
                            type: &#039;p&#039;,&lt;br /&gt;
                            attr: {&lt;br /&gt;
                                id: &#039;SpoilerAlertText&#039;&lt;br /&gt;
                            },&lt;br /&gt;
                            text: this.config.question&lt;br /&gt;
                        },&lt;br /&gt;
                        {&lt;br /&gt;
                            type: &#039;span&#039;,&lt;br /&gt;
                            attr: {&lt;br /&gt;
                                id: &#039;SpoilerAlertYes&#039;,&lt;br /&gt;
                                &#039;class&#039;: &#039;wds-button&#039;&lt;br /&gt;
                            },&lt;br /&gt;
                            events: {&lt;br /&gt;
                                click: this.yes.bind(this)&lt;br /&gt;
                            },&lt;br /&gt;
                            text: this.config.yes&lt;br /&gt;
                        },&lt;br /&gt;
                        {&lt;br /&gt;
                            type: &#039;span&#039;,&lt;br /&gt;
                            attr: {&lt;br /&gt;
                                id: &#039;SpoilerAlertNo&#039;,&lt;br /&gt;
                                &#039;class&#039;: &#039;wds-button&#039;&lt;br /&gt;
                            },&lt;br /&gt;
                            events: {&lt;br /&gt;
                                click: this.no.bind(this)&lt;br /&gt;
                            },&lt;br /&gt;
                            text: this.config.no&lt;br /&gt;
                        }&lt;br /&gt;
                    ]&lt;br /&gt;
                })&lt;br /&gt;
            );&lt;br /&gt;
        },&lt;br /&gt;
        insertResetButton: function(i18n) {&lt;br /&gt;
            window.dev.placement.loader.util({&lt;br /&gt;
                content: {&lt;br /&gt;
                    type: &#039;li&#039;,&lt;br /&gt;
                    children: [&lt;br /&gt;
                        {&lt;br /&gt;
                            type: &#039;a&#039;,&lt;br /&gt;
                            attr: {&lt;br /&gt;
                                href: &#039;#&#039;&lt;br /&gt;
                            },&lt;br /&gt;
                            text: i18n.msg(&#039;reset&#039;).plain(),&lt;br /&gt;
                            events: {&lt;br /&gt;
                                click: this.reset&lt;br /&gt;
                            }&lt;br /&gt;
                        }&lt;br /&gt;
                    ]&lt;br /&gt;
                },&lt;br /&gt;
                element: &#039;tools&#039;,&lt;br /&gt;
                script: &#039;SpoilerAlert&#039;,&lt;br /&gt;
                type: &#039;append&#039;&lt;br /&gt;
            });&lt;br /&gt;
        },&lt;br /&gt;
        yes: function() {&lt;br /&gt;
            this.fadeOut(&#039;#SpoilerAlertCover&#039;);&lt;br /&gt;
            this.ids.push(config.wgArticleId);&lt;br /&gt;
            window.localStorage.setItem(&#039;SpoilerAlert&#039;, JSON.stringify(this.ids));&lt;br /&gt;
        },&lt;br /&gt;
        no: function() {&lt;br /&gt;
            this.fadeOut(&#039;#SpoilerAlertText, #SpoilerAlertYes, #SpoilerAlertNo&#039;);&lt;br /&gt;
            if (this.config.back) {&lt;br /&gt;
                if (window.history &amp;amp;&amp;amp; window.history.length &amp;gt; 1) {&lt;br /&gt;
                    window.history.back();&lt;br /&gt;
                } else {&lt;br /&gt;
                    location.href = config.wgServer + config.wgScriptPath;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        fadeOut: function(el) {&lt;br /&gt;
            $(el).fadeOut(this.config.fadeDelay, function() {&lt;br /&gt;
                $(this).remove();&lt;br /&gt;
            });&lt;br /&gt;
        },&lt;br /&gt;
        reset: function(event) {&lt;br /&gt;
            event.preventDefault();&lt;br /&gt;
            window.localStorage.setItem(&#039;SpoilerAlert&#039;, JSON.stringify([]));&lt;br /&gt;
            window.location.reload();&lt;br /&gt;
        }&lt;br /&gt;
    };&lt;br /&gt;
    if (!window.dev || !window.dev.ui || !window.dev.i18n || !window.dev.placement) {&lt;br /&gt;
        importArticles({&lt;br /&gt;
            type: &#039;script&#039;,&lt;br /&gt;
            articles: [&lt;br /&gt;
                &#039;u:dev:MediaWiki:I18n-js/code.js&#039;,&lt;br /&gt;
                &#039;u:dev:MediaWiki:Placement.js&#039;,&lt;br /&gt;
                &#039;u:dev:MediaWiki:UI-js/code.js&#039;&lt;br /&gt;
            ]&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
    importArticle({&lt;br /&gt;
        type: &#039;style&#039;,&lt;br /&gt;
        article: &#039;u:dev:MediaWiki:SpoilerAlert.css&#039;&lt;br /&gt;
    });&lt;br /&gt;
    mw.hook(&#039;dev.ui&#039;).add(SpoilerAlert.preload.bind(SpoilerAlert));&lt;br /&gt;
    mw.hook(&#039;dev.i18n&#039;).add(SpoilerAlert.preload.bind(SpoilerAlert));&lt;br /&gt;
    mw.hook(&#039;dev.placement&#039;).add(SpoilerAlert.preload.bind(SpoilerAlert));&lt;br /&gt;
})(window.jQuery, window.mediaWiki);&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=Template:Spoiler&amp;diff=1488</id>
		<title>Template:Spoiler</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=Template:Spoiler&amp;diff=1488"/>
		<updated>2025-04-06T05:55:20Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{#vardefine:element|{{#if:{{{block|}}}|div|span}}}}&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&amp;lt;{{#var:element}} class=&amp;quot;spoiler no-js {{{class|}}}&amp;quot; id=&amp;quot;{{{id|}}}&amp;quot; style=&amp;quot;{{{css|{{{style|}}}}}}&amp;quot;&amp;gt;&amp;lt;{{#var:element}}&amp;gt;{{{1|}}}&amp;lt;/{{#var:element}}&amp;gt;&amp;lt;/{{#var:element}}&amp;gt;&amp;lt;!-- &lt;br /&gt;
--&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
&lt;br /&gt;
Base code written for Terraria Wiki: https://terraria.wiki.gg/wiki/Template:Spoiler&lt;br /&gt;
&lt;br /&gt;
NOTE: This template needs a JavaScript function in MediaWiki:Common.js or MediaWiki:Vector.js to work, as well as styling in MediaWiki:Common.css or MediaWiki:Vector.css for the related classes&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=Template:Spoiler&amp;diff=1487</id>
		<title>Template:Spoiler</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=Template:Spoiler&amp;diff=1487"/>
		<updated>2025-04-06T05:54:45Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{#vardefine:element|{{#if:{{{block|}}}|div|span}}}}&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&amp;lt;{{#var:element}} class=&amp;quot;spoiler nojs {{{class|}}}&amp;quot; id=&amp;quot;{{{id|}}}&amp;quot; style=&amp;quot;{{{css|{{{style|}}}}}}&amp;quot;&amp;gt;&amp;lt;{{#var:element}}&amp;gt;{{{1|}}}&amp;lt;/{{#var:element}}&amp;gt;&amp;lt;/{{#var:element}}&amp;gt;&amp;lt;!-- &lt;br /&gt;
--&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
&lt;br /&gt;
Base code written for Terraria Wiki: https://terraria.wiki.gg/wiki/Template:Spoiler&lt;br /&gt;
&lt;br /&gt;
NOTE: This template needs a JavaScript function in MediaWiki:Common.js or MediaWiki:Vector.js to work, as well as styling in MediaWiki:Common.css or MediaWiki:Vector.css for the related classes&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=Template:Spoiler&amp;diff=1486</id>
		<title>Template:Spoiler</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=Template:Spoiler&amp;diff=1486"/>
		<updated>2025-04-06T05:54:26Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{#vardefine:element|{{#if:{{{block|}}}|div|span}}}}&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&amp;lt;{{#var:element}} class=&amp;quot;spoiler {{{class|}}}&amp;quot; id=&amp;quot;{{{id|}}}&amp;quot; style=&amp;quot;{{{css|{{{style|}}}}}}&amp;quot;&amp;gt;&amp;lt;{{#var:element}}&amp;gt;{{{1|}}}&amp;lt;/{{#var:element}}&amp;gt;&amp;lt;/{{#var:element}}&amp;gt;&amp;lt;!-- &lt;br /&gt;
--&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
&lt;br /&gt;
Base code written for Terraria Wiki: https://terraria.wiki.gg/wiki/Template:Spoiler&lt;br /&gt;
&lt;br /&gt;
NOTE: This template needs a JavaScript function in MediaWiki:Common.js or MediaWiki:Vector.js to work, as well as styling in MediaWiki:Common.css or MediaWiki:Vector.css for the related classes&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=MediaWiki:Common.js&amp;diff=1485</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=MediaWiki:Common.js&amp;diff=1485"/>
		<updated>2025-04-06T05:54:09Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* [[Template:Spoiler]] https://support.wiki.gg/wiki/Template:Spoiler */&lt;br /&gt;
$(function () {&lt;br /&gt;
	$(&#039;.spoiler&#039;)&lt;br /&gt;
	.off(&#039;click&#039;) // in case this code is loaded twice&lt;br /&gt;
	.addClass( &#039;hide&#039;)&lt;br /&gt;
	.on(&#039;click&#039;, function(e){&lt;br /&gt;
		$(this).toggleClass(&#039;hide&#039;);&lt;br /&gt;
	}).find(&#039;a&#039;).on(&#039;click&#039;, function(e){&lt;br /&gt;
		e.stopPropagation();&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
});&lt;br /&gt;
/* End Template:Spoiler */&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Name:        WhatLinksHere&lt;br /&gt;
 * Version:     v1.1&lt;br /&gt;
 * Author:      KockaAdmiralac &amp;lt;wikia@kocka.tech&amp;gt;&lt;br /&gt;
 * Description: Adds a link to Special:WhatLinksHere below the edit dropdown&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
    var $list = $(&#039;.page-header__contribution-buttons .wds-list, .page-header__actions .wds-list, .UserProfileActionButton .WikiaMenuElement&#039;);&lt;br /&gt;
&lt;br /&gt;
    if (!$list.length || window.WhatLinksHereLoaded) {&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
    window.WhatLinksHereLoaded = true;&lt;br /&gt;
&lt;br /&gt;
    var config = mw.config.get([&lt;br /&gt;
        &#039;wgPageName&#039;,&lt;br /&gt;
        &#039;wgUserLanguage&#039;&lt;br /&gt;
    ]);&lt;br /&gt;
&lt;br /&gt;
    mw.hook(&#039;dev.fetch&#039;).add(function(fetch) {&lt;br /&gt;
        $.when(&lt;br /&gt;
            fetch(&#039;whatlinkshere&#039;),&lt;br /&gt;
            mw.loader.using(&#039;mediawiki.util&#039;)&lt;br /&gt;
        ).then(function(text) {&lt;br /&gt;
            var url = mw.util.getUrl(&#039;Special:WhatLinksHere/&#039; + config.wgPageName);&lt;br /&gt;
            $list.append(&lt;br /&gt;
                $(&#039;&amp;lt;li&amp;gt;&#039;, {&lt;br /&gt;
                    id: &#039;ca-whatlinkshere&#039;&lt;br /&gt;
                }).append(&lt;br /&gt;
                    $(&#039;&amp;lt;a&amp;gt;&#039;, {&lt;br /&gt;
                        href: url,&lt;br /&gt;
                        text: text&lt;br /&gt;
                    })&lt;br /&gt;
                )&lt;br /&gt;
            );&lt;br /&gt;
            if (mw.util.getParamValue(&#039;redirect&#039;) === &#039;no&#039;) {&lt;br /&gt;
                $(&#039;.redirectText&#039;).append(&lt;br /&gt;
                    $(&#039;&amp;lt;br&amp;gt;&#039;),&lt;br /&gt;
                    $(&#039;&amp;lt;span&amp;gt;&#039;, {&lt;br /&gt;
                        id: &#039;redirectWLH&#039;&lt;br /&gt;
                    }).append(&lt;br /&gt;
                        &#039;→ &#039;,&lt;br /&gt;
                        $(&#039;&amp;lt;a&amp;gt;&#039;, {&lt;br /&gt;
                            &#039;class&#039;: &#039;redirectWLH-link&#039;,&lt;br /&gt;
                            href: url,&lt;br /&gt;
                            text: text&lt;br /&gt;
                        })&lt;br /&gt;
                    )&lt;br /&gt;
                );&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
    importArticle({&lt;br /&gt;
        type: &#039;script&#039;,&lt;br /&gt;
        article: &#039;u:dev:MediaWiki:Fetch.js&#039;&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
// __NOWYSIWYG__&lt;br /&gt;
/**&lt;br /&gt;
 * TabberEX&lt;br /&gt;
 *&lt;br /&gt;
 * @version 2.3&lt;br /&gt;
 *&lt;br /&gt;
 * @author Jono99 &amp;lt;https://phigros.fandom.com/wiki/User:Jono99&amp;gt;&lt;br /&gt;
 *&lt;br /&gt;
 * documentation and examples at:&lt;br /&gt;
 * &amp;lt;https://dev.fandom.com/wiki/TabberEX&amp;gt;&lt;br /&gt;
 */&lt;br /&gt;
 &lt;br /&gt;
 (function (window, $, mw) {&lt;br /&gt;
	// Function called by tabs to switch tabs&lt;br /&gt;
	window.tabberex_switchTab = function(tabber_id, tab)&lt;br /&gt;
	{&lt;br /&gt;
		tabberex_hideAllTabs(tabber_id);&lt;br /&gt;
		tabberex_showTab(tabber_id, tab);&lt;br /&gt;
	};&lt;br /&gt;
 &lt;br /&gt;
	// Inject CSS&lt;br /&gt;
	(function() {&lt;br /&gt;
		var tabberex_css = document.createElement(&amp;quot;style&amp;quot;);&lt;br /&gt;
		tabberex_css.innerHTML = &amp;quot;/* CSS owned by FANDOM */\n.oo-ui-tabOptionWidget{display:inline-block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;vertical-align:bottom;align-items:center;color:color-mix(in srgb, var(--text-color) 75%, transparent);display:inline-flex;font-size:14px;font-weight:500;height:40px;letter-spacing:.5px;margin:0;padding:0 11px;-webkit-transition:var(--content-background-color) .3s,color .3s,var(--banner-color) .3s;-moz-transition:var(--content-background-color) .3s,color .3s,var(--banner-color) .3s;transition:var(--content-background-color) .3s,color .3s,var(--banner-color) .3s}.oo-ui-tabSelectWidget:not(.oo-ui-tabSelectWidget-framed) .oo-ui-tabOptionWidget{-webkit-transition:color .3s,box-shadow .3s;-moz-transition:color .3s,box-shadow .3s;transition:color .3s,box-shadow .3s;border-bottom:1px solid var(--banner-color)}.oo-ui-tabSelectWidget:not(.oo-ui-tabSelectWidget-framed) .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected{box-shadow:inset 0 -2px 0 0 var(--link-color);color:var(--link-color)}&amp;quot;;&lt;br /&gt;
		document.head.appendChild(tabberex_css);&lt;br /&gt;
	})();&lt;br /&gt;
		&lt;br /&gt;
	window.tabberex_showTab = function(tabber_id, i)&lt;br /&gt;
	{&lt;br /&gt;
		var base_selector = &amp;quot;[data-tabber-id=\&amp;quot;&amp;quot; + tabber_id + &amp;quot;\&amp;quot;]&amp;quot;;&lt;br /&gt;
		$(&amp;quot;.tabberex-head&amp;quot; + base_selector).children(&amp;quot;:nth-child(&amp;quot; + i + &amp;quot;)&amp;quot;)&lt;br /&gt;
		.addClass(&amp;quot;oo-ui-optionWidget-selected&amp;quot;)&lt;br /&gt;
		.css(&amp;quot;cursor&amp;quot;, &amp;quot;default&amp;quot;);&lt;br /&gt;
				&lt;br /&gt;
		$($(&amp;quot;.tabberex-body&amp;quot; + base_selector).children(&amp;quot;:nth-child(&amp;quot; + i + &amp;quot;)&amp;quot;).get()).each(function () {&lt;br /&gt;
            var display_value = $(this).attr(&amp;quot;data-tab-display&amp;quot;);&lt;br /&gt;
            if (display_value === undefined) display_value = &amp;quot;block&amp;quot;;&lt;br /&gt;
            $(this).css(&amp;quot;display&amp;quot;, display_value);&lt;br /&gt;
        });&lt;br /&gt;
	};&lt;br /&gt;
	 &lt;br /&gt;
	window.tabberex_hideTab = function(tabber_id, i)&lt;br /&gt;
	{&lt;br /&gt;
		var base_selector = &amp;quot;[data-tabber-id=\&amp;quot;&amp;quot; + tabber_id + &amp;quot;\&amp;quot;]&amp;quot;;&lt;br /&gt;
		$(&amp;quot;.tabberex-head&amp;quot; + base_selector).children(&amp;quot;:nth-child(&amp;quot; + i + &amp;quot;)&amp;quot;)&lt;br /&gt;
		.removeClass(&amp;quot;oo-ui-optionWidget-selected&amp;quot;)&lt;br /&gt;
		.css(&amp;quot;cursor&amp;quot;, &amp;quot;pointer&amp;quot;);&lt;br /&gt;
				&lt;br /&gt;
		$(&amp;quot;.tabberex-body&amp;quot; + base_selector).children(&amp;quot;:nth-child(&amp;quot; + i + &amp;quot;)&amp;quot;).css(&amp;quot;display&amp;quot;, &amp;quot;none&amp;quot;);&lt;br /&gt;
	};&lt;br /&gt;
			&lt;br /&gt;
	window.tabberex_hideAllTabs = function(tabber_id)&lt;br /&gt;
	{&lt;br /&gt;
		var base_selector = &amp;quot;[data-tabber-id=\&amp;quot;&amp;quot; + tabber_id + &amp;quot;\&amp;quot;]&amp;quot;;&lt;br /&gt;
		$(&amp;quot;.tabberex-head&amp;quot; + base_selector).children()&lt;br /&gt;
		.removeClass(&amp;quot;oo-ui-optionWidget-selected&amp;quot;)&lt;br /&gt;
		.css(&amp;quot;cursor&amp;quot;, &amp;quot;pointer&amp;quot;);&lt;br /&gt;
				&lt;br /&gt;
		$(&amp;quot;.tabberex-body&amp;quot; + base_selector).children().css(&amp;quot;display&amp;quot;, &amp;quot;none&amp;quot;);&lt;br /&gt;
	};&lt;br /&gt;
	&lt;br /&gt;
	var tabberex_buildTabHead = function(host_div, tabber_id, tab_headers, tab_ex_headers, tab_locations)&lt;br /&gt;
	{&lt;br /&gt;
		var tabber_head = host_div;&lt;br /&gt;
		tabber_head.innerHTML = &amp;quot;&amp;quot;;&lt;br /&gt;
		$(tabber_head).addClass(&amp;quot;tabberex-head oo-ui-widget oo-ui-widget-enabled oo-ui-selectWidget oo-ui-selectWidget-unpressed oo-ui-selectWidget-depressed oo-ui-tabSelectWidget&amp;quot;)&lt;br /&gt;
		.attr(&amp;quot;data-tabber-id&amp;quot;, tabber_id);&lt;br /&gt;
		for (var i = 0; i &amp;lt; tab_headers.length; i++)&lt;br /&gt;
		{&lt;br /&gt;
			console.log(&amp;quot;Building tab &amp;quot; + tabber_id + &amp;quot; &amp;quot; + String(i));&lt;br /&gt;
			var tab = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			$(tab).addClass(&amp;quot;oo-ui-widget oo-ui-widget-enabled oo-ui-labelElement oo-ui-optionWidget oo-ui-tabOptionWidget&amp;quot;)&lt;br /&gt;
			.css(&amp;quot;cursor&amp;quot;, &amp;quot;pointer&amp;quot;);&lt;br /&gt;
			if (tab_locations[i] === undefined)&lt;br /&gt;
				$(tab).attr(&amp;quot;onclick&amp;quot;, &amp;quot;tabberex_switchTab(\&amp;quot;&amp;quot; + mw.html.escape(tabber_id) + &amp;quot;\&amp;quot;, &amp;quot; + (i + 1) + &amp;quot;)&amp;quot;);&lt;br /&gt;
			else&lt;br /&gt;
				$(tab).attr(&amp;quot;onclick&amp;quot;, &amp;quot;location = \&amp;quot;&amp;quot; + mw.html.escape(tab_locations[i]) + &amp;quot;\&amp;quot;&amp;quot;);&lt;br /&gt;
			var tab_span = document.createElement(&amp;quot;span&amp;quot;);&lt;br /&gt;
			$(tab_span).addClass(&amp;quot;oo-ui-labelElement-label&amp;quot;);&lt;br /&gt;
			if (tab_ex_headers[i] === undefined)&lt;br /&gt;
				$(tab_span).text(tab_headers[i]);&lt;br /&gt;
			else&lt;br /&gt;
			{&lt;br /&gt;
				console.log(&amp;quot;EX Header present&amp;quot;);&lt;br /&gt;
				for (var attr in tab_ex_headers[i][1])&lt;br /&gt;
					tab_span.setAttribute(attr, tab_ex_headers[i][1][attr]);&lt;br /&gt;
				$(tab_span).html(tab_ex_headers[i][0]);&lt;br /&gt;
			}&lt;br /&gt;
			tab.appendChild(tab_span);&lt;br /&gt;
			tabber_head.appendChild(tab);&lt;br /&gt;
			console.log(&amp;quot;Successfully built tab&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		return tabber_head.outerHTML;&lt;br /&gt;
	};&lt;br /&gt;
	&lt;br /&gt;
	var process_tabber_head_tab = function(tab_element, i)&lt;br /&gt;
	{&lt;br /&gt;
		// Get header&lt;br /&gt;
		var header = $(tab_element).attr(&amp;quot;data-tab-header&amp;quot;);&lt;br /&gt;
		if (header === undefined) header = i + 1;&lt;br /&gt;
		&lt;br /&gt;
		// Get ex header&lt;br /&gt;
		var ex_header;&lt;br /&gt;
		function get_ex_header(_) {&lt;br /&gt;
			console.log(&#039;EX Header found&#039;);&lt;br /&gt;
			var attributes = {};&lt;br /&gt;
			var attrs = this.getAttributeNames();&lt;br /&gt;
			for (var i in attrs)&lt;br /&gt;
				attributes[attrs[i]] = this.getAttribute(attrs[i]);&lt;br /&gt;
			ex_header = [$(this).html(), attributes];&lt;br /&gt;
			$(this).remove();&lt;br /&gt;
		}&lt;br /&gt;
		$(tab_element).children(&amp;quot;p&amp;quot;).children(&amp;quot;span.tabberex-tab-header&amp;quot;).each(get_ex_header);&lt;br /&gt;
		$(tab_element).children(&amp;quot;span.tabberex-tab-header&amp;quot;).each(get_ex_header);&lt;br /&gt;
		&lt;br /&gt;
		// Get default&lt;br /&gt;
		var is_default = false;&lt;br /&gt;
		if ($(tab_element).hasClass(&amp;quot;tabberex-tab-default&amp;quot;))&lt;br /&gt;
			is_default = true;&lt;br /&gt;
		&lt;br /&gt;
		// Get tab location&lt;br /&gt;
		var tab_location = $(this).attr(&amp;quot;data-tab-location&amp;quot;);&lt;br /&gt;
		&lt;br /&gt;
		return {&amp;quot;header&amp;quot;: header, &amp;quot;ex_header&amp;quot;: ex_header, &amp;quot;default&amp;quot;: is_default, &amp;quot;location&amp;quot;: tab_location};&lt;br /&gt;
	};&lt;br /&gt;
	&lt;br /&gt;
	var process_tabbers = function()&lt;br /&gt;
	{&lt;br /&gt;
		console.log(&#039;TabberEX started&#039;);&lt;br /&gt;
		var tabber_i = 0;&lt;br /&gt;
		var default_tabs = {};&lt;br /&gt;
		var tabber_ids = [];&lt;br /&gt;
		// The tabs are iterated through backwards to properly handle tabbers that are nested within other tabbers&lt;br /&gt;
		$($(&amp;quot;.tabberex-head&amp;quot;).get().reverse()).each(function() {&lt;br /&gt;
			var tab_headers = [];&lt;br /&gt;
			var tab_ex_headers = [];&lt;br /&gt;
			var tab_locations = [];&lt;br /&gt;
			var default_tab = 0;&lt;br /&gt;
				&lt;br /&gt;
			var tabber_id = $(this).attr(&amp;quot;data-tabber-id&amp;quot;);&lt;br /&gt;
			if (tabber_id === undefined) tabber_id = String(tabber_i);&lt;br /&gt;
				&lt;br /&gt;
			$(this).children(&amp;quot;.tabberex-tab&amp;quot;).each(function(i) {&lt;br /&gt;
				console.log(&#039;Processing head tab &#039; + tabber_id + &#039; &#039; + String(i));&lt;br /&gt;
				var tab_details = process_tabber_head_tab(this, i);&lt;br /&gt;
				console.log(&#039;Processing complete&#039;);&lt;br /&gt;
				tab_headers[i] = tab_details.header;&lt;br /&gt;
				tab_ex_headers[i] = tab_details.ex_header;&lt;br /&gt;
				if (tab_details.default)&lt;br /&gt;
					default_tab = i;&lt;br /&gt;
				tab_locations[i] = tab_details.location;&lt;br /&gt;
				$(this).detach();&lt;br /&gt;
			});&lt;br /&gt;
			&lt;br /&gt;
			// Insert tabs into DOM&lt;br /&gt;
			tabberex_buildTabHead(this, tabber_id, tab_headers, tab_ex_headers, tab_locations);&lt;br /&gt;
			if (default_tabs[tabber_id] === undefined)&lt;br /&gt;
				default_tabs[tabber_id] = default_tab;&lt;br /&gt;
			tabber_ids.push(tabber_id);&lt;br /&gt;
			tabber_i++;&lt;br /&gt;
		});&lt;br /&gt;
		&lt;br /&gt;
		$($(&amp;quot;.tabberex-body&amp;quot;).get().reverse()).each(function() {&lt;br /&gt;
			$(this).children().css(&amp;quot;display&amp;quot;, &amp;quot;none&amp;quot;);&lt;br /&gt;
		});&lt;br /&gt;
		&lt;br /&gt;
		$($(&amp;quot;.tabberex&amp;quot;).get().reverse()).each(function() {&lt;br /&gt;
			var tab_headers = [];&lt;br /&gt;
			var tab_ex_headers = [];&lt;br /&gt;
			var tab_locations = [];&lt;br /&gt;
			var default_tab = 0;&lt;br /&gt;
			var tab_contents = [];&lt;br /&gt;
			&lt;br /&gt;
			var tabber_id = $(this).attr(&amp;quot;data-tabber-id&amp;quot;);&lt;br /&gt;
			if (tabber_id === undefined) tabber_id = String(tabber_i);&lt;br /&gt;
            $(this).attr(&amp;quot;data-tabber-id&amp;quot;, tabber_id);&lt;br /&gt;
&lt;br /&gt;
            var tabber_head = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
            $(tabber_head).addClass(&amp;quot;tabberex-head&amp;quot;).attr(&amp;quot;data-tabber-id&amp;quot;, tabber_id);&lt;br /&gt;
            $(this).removeClass(&amp;quot;tabberex&amp;quot;).addClass(&amp;quot;tabberex-body&amp;quot;);&lt;br /&gt;
			&lt;br /&gt;
			$(this).children(&amp;quot;.tabberex-tab&amp;quot;).each(function(i) {&lt;br /&gt;
				console.log(&#039;Processing head tab &#039; + tabber_id + &#039; &#039; + String(i));&lt;br /&gt;
				var tab_details = process_tabber_head_tab(this, i);&lt;br /&gt;
				console.log(&#039;Processing complete&#039;);&lt;br /&gt;
				tab_headers[i] = tab_details.header;&lt;br /&gt;
				tab_ex_headers[i] = tab_details.ex_header;&lt;br /&gt;
				if (tab_details.default)&lt;br /&gt;
					default_tab = i;&lt;br /&gt;
				tab_locations[i] = tab_details.location;&lt;br /&gt;
				&lt;br /&gt;
				// Get tab content&lt;br /&gt;
				$(this).css(&amp;quot;display&amp;quot;, &amp;quot;none&amp;quot;);&lt;br /&gt;
				tab_contents[i] = $(this);&lt;br /&gt;
			});&lt;br /&gt;
&lt;br /&gt;
            tabberex_buildTabHead(tabber_head, tabber_id, tab_headers, tab_ex_headers, tab_locations);&lt;br /&gt;
			if (default_tabs[tabber_id] === undefined)&lt;br /&gt;
				default_tabs[tabber_id] = default_tab;&lt;br /&gt;
            $(tabber_head).insertBefore(this);&lt;br /&gt;
			tabber_ids.push(tabber_id);&lt;br /&gt;
			tabber_i++;&lt;br /&gt;
		});&lt;br /&gt;
		&lt;br /&gt;
		// Select default tabs&lt;br /&gt;
		for (var i in tabber_ids)&lt;br /&gt;
		{&lt;br /&gt;
			tabberex_showTab(tabber_ids[i], default_tabs[tabber_ids[i]] + 1);&lt;br /&gt;
		}&lt;br /&gt;
	};&lt;br /&gt;
 &lt;br /&gt;
	mw.hook(&amp;quot;wikipage.content&amp;quot;).add(process_tabbers);&lt;br /&gt;
}(this, jQuery, mediaWiki));&lt;br /&gt;
/*&lt;br /&gt;
 * @title           SoundcloudPlayer.js&lt;br /&gt;
 * @version         1.1.2&lt;br /&gt;
 * @description     Add support for soundcloud players&lt;br /&gt;
 * @author          Himmalerin&lt;br /&gt;
 * @license         CC-BY-SA-3.0&lt;br /&gt;
 */&lt;br /&gt;
(function () {&lt;br /&gt;
	// Build the iframe&lt;br /&gt;
	const scPlayer = function (data) {&lt;br /&gt;
		const widget = document.createElement(&#039;iframe&#039;);&lt;br /&gt;
&lt;br /&gt;
		widget.classList.add(&#039;soundcloud-player&#039;);&lt;br /&gt;
&lt;br /&gt;
		widget.src =&lt;br /&gt;
			&#039;https://w.soundcloud.com/player/?show_artwork=false&amp;amp;url=&#039; +&lt;br /&gt;
			encodeURI(data.src);&lt;br /&gt;
&lt;br /&gt;
		// If data-color is set add the value to the iframe&lt;br /&gt;
		if (data.color) widget.src += &#039;&amp;amp;color=&#039; + encodeURIComponent(data.color);&lt;br /&gt;
		// If data-width/height are set add that value to the iframe&lt;br /&gt;
		if (data.width) widget.width = data.width;&lt;br /&gt;
		if (data.height) widget.height = data.height;&lt;br /&gt;
&lt;br /&gt;
		return widget;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	const scParseTags = function ($content) {&lt;br /&gt;
		// Get all instances of the soundcloud class&lt;br /&gt;
		const scTags = $content.find(&#039;.soundcloud&#039;);&lt;br /&gt;
&lt;br /&gt;
		// For each instance of the soundcloud class run scPlayer&lt;br /&gt;
		for (var i = 0; i &amp;lt; scTags.length; i++) {&lt;br /&gt;
			scTags[i].replaceWith(scPlayer(scTags[i].dataset));&lt;br /&gt;
		}&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	mw.hook(&#039;wikipage.content&#039;).add(function ($content) {&lt;br /&gt;
		scParseTags($content);&lt;br /&gt;
	});&lt;br /&gt;
})();&lt;br /&gt;
/*&lt;br /&gt;
https://dev.fandom.com/wiki/MediaWiki:CopyText/code.js&lt;br /&gt;
 */&lt;br /&gt;
(function () {&lt;br /&gt;
    if (window.CopyTextLoaded) {&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
    window.CopyTextLoaded = true;&lt;br /&gt;
    mw.hook(&#039;dev.i18n&#039;).add(function (i18n) {&lt;br /&gt;
        i18n.loadMessages(&#039;CopyText&#039;).done(function (i18n) {&lt;br /&gt;
            function showSuccess() {&lt;br /&gt;
                if (window.BannerNotification) {&lt;br /&gt;
                    new BannerNotification(i18n.msg(&#039;success&#039;).escape(), &#039;confirm&#039;, null, 5000).show();&lt;br /&gt;
                } else {&lt;br /&gt;
                    mw.notify(i18n.msg(&#039;success&#039;).plain());&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            $(&#039;body&#039;).on(&#039;click&#039;, &#039;.copy-to-clipboard-button&#039;, function(e){&lt;br /&gt;
                var text = $(this).data(&#039;text&#039;),&lt;br /&gt;
                $input = $(&#039;&amp;lt;textarea&amp;gt;&#039;, { type: &#039;text&#039; })&lt;br /&gt;
                    .val($(&#039;.copy-to-clipboard-text&#039;).filter(function() {&lt;br /&gt;
                        return $(this).data(&#039;text&#039;) == text;&lt;br /&gt;
                    }).first().text())&lt;br /&gt;
                    .appendTo(&#039;body&#039;)&lt;br /&gt;
                    .select();&lt;br /&gt;
                var success = document.execCommand(&#039;Copy&#039;);&lt;br /&gt;
                $input.remove();&lt;br /&gt;
                if (success) {&lt;br /&gt;
                    showSuccess();&lt;br /&gt;
                } else {&lt;br /&gt;
                    if (window.navigator &amp;amp;&amp;amp; navigator.clipboard &amp;amp;&amp;amp; navigator.clipboard.writeText) {&lt;br /&gt;
                        navigator.clipboard.writeText(text).then(function() {&lt;br /&gt;
                            showSuccess();&lt;br /&gt;
                        });&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
    importArticle({&lt;br /&gt;
        type: &#039;script&#039;,&lt;br /&gt;
        article: &#039;u:dev:MediaWiki:I18n-js/code.js&#039;&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
/**&lt;br /&gt;
 * SpoilerAlert&lt;br /&gt;
 * documentation at: https://dev.fandom.com/wiki/SpoilerAlert&lt;br /&gt;
 * © Peter Coester, 2012&lt;br /&gt;
 */&lt;br /&gt;
/* jshint curly:false */&lt;br /&gt;
(function ($, mw) {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    var config = mw.config.get([&lt;br /&gt;
        &#039;wgArticleId&#039;,&lt;br /&gt;
        &#039;wgNamespaceNumber&#039;,&lt;br /&gt;
        &#039;wgScriptPath&#039;,&lt;br /&gt;
        &#039;wgServer&#039;&lt;br /&gt;
    ]), $element = $(&#039;#SpoilerAlert&#039;);&lt;br /&gt;
    if (&lt;br /&gt;
        config.wgNamespaceNumber === -1 ||&lt;br /&gt;
        config.wgArticleId === 0 ||&lt;br /&gt;
        $element.length !== 1&lt;br /&gt;
    ) {&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
    var SpoilerAlert = {&lt;br /&gt;
        config: $.extend({&lt;br /&gt;
            fadeDelay: 1600&lt;br /&gt;
        }, window.SpoilerAlertJS),&lt;br /&gt;
        toLoad: 3,&lt;br /&gt;
        preload: function() {&lt;br /&gt;
            if (--this.toLoad === 0) {&lt;br /&gt;
                window.dev.i18n.loadMessages(&#039;SpoilerAlert&#039;)&lt;br /&gt;
                    .then(this.init.bind(this));&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        init: function(i18n) {&lt;br /&gt;
            this.ids = JSON.parse(window.localStorage.getItem(&#039;SpoilerAlert&#039;)) || [];&lt;br /&gt;
            [&#039;yes&#039;, &#039;no&#039;, &#039;question&#039;].forEach(function(msg) {&lt;br /&gt;
                if (!this.config[msg]) {&lt;br /&gt;
                    this.config[msg] = i18n.msg(msg).plain();&lt;br /&gt;
                }&lt;br /&gt;
            }, this);&lt;br /&gt;
            if (this.valid()) {&lt;br /&gt;
                this.insertUI();&lt;br /&gt;
            }&lt;br /&gt;
            this.insertResetButton(i18n);&lt;br /&gt;
        },&lt;br /&gt;
        valid: function() {&lt;br /&gt;
            return $element.height() &amp;lt; $(&#039;#mw-content-text&#039;).height() / 2 &amp;amp;&amp;amp;&lt;br /&gt;
                   this.ids.indexOf(config.wgArticleId) === -1;&lt;br /&gt;
        },&lt;br /&gt;
        insertUI: function() {&lt;br /&gt;
            var pos = $element.position();&lt;br /&gt;
            $(&#039;#mw-content-text&#039;).append(&lt;br /&gt;
                window.dev.ui({&lt;br /&gt;
                    type: &#039;div&#039;,&lt;br /&gt;
                    attr: {&lt;br /&gt;
                        id: &#039;SpoilerAlertCover&#039;&lt;br /&gt;
                    },&lt;br /&gt;
                    style: {&lt;br /&gt;
                        width: $element.width() + &#039;px&#039;,&lt;br /&gt;
                        height: $element.height() + &#039;px&#039;,&lt;br /&gt;
                        top: pos.top + &#039;px&#039;,&lt;br /&gt;
                        left: pos.left + &#039;px&#039;&lt;br /&gt;
                    },&lt;br /&gt;
                    children: [&lt;br /&gt;
                        {&lt;br /&gt;
                            type: &#039;p&#039;,&lt;br /&gt;
                            attr: {&lt;br /&gt;
                                id: &#039;SpoilerAlertText&#039;&lt;br /&gt;
                            },&lt;br /&gt;
                            text: this.config.question&lt;br /&gt;
                        },&lt;br /&gt;
                        {&lt;br /&gt;
                            type: &#039;span&#039;,&lt;br /&gt;
                            attr: {&lt;br /&gt;
                                id: &#039;SpoilerAlertYes&#039;,&lt;br /&gt;
                                &#039;class&#039;: &#039;wds-button&#039;&lt;br /&gt;
                            },&lt;br /&gt;
                            events: {&lt;br /&gt;
                                click: this.yes.bind(this)&lt;br /&gt;
                            },&lt;br /&gt;
                            text: this.config.yes&lt;br /&gt;
                        },&lt;br /&gt;
                        {&lt;br /&gt;
                            type: &#039;span&#039;,&lt;br /&gt;
                            attr: {&lt;br /&gt;
                                id: &#039;SpoilerAlertNo&#039;,&lt;br /&gt;
                                &#039;class&#039;: &#039;wds-button&#039;&lt;br /&gt;
                            },&lt;br /&gt;
                            events: {&lt;br /&gt;
                                click: this.no.bind(this)&lt;br /&gt;
                            },&lt;br /&gt;
                            text: this.config.no&lt;br /&gt;
                        }&lt;br /&gt;
                    ]&lt;br /&gt;
                })&lt;br /&gt;
            );&lt;br /&gt;
        },&lt;br /&gt;
        insertResetButton: function(i18n) {&lt;br /&gt;
            window.dev.placement.loader.util({&lt;br /&gt;
                content: {&lt;br /&gt;
                    type: &#039;li&#039;,&lt;br /&gt;
                    children: [&lt;br /&gt;
                        {&lt;br /&gt;
                            type: &#039;a&#039;,&lt;br /&gt;
                            attr: {&lt;br /&gt;
                                href: &#039;#&#039;&lt;br /&gt;
                            },&lt;br /&gt;
                            text: i18n.msg(&#039;reset&#039;).plain(),&lt;br /&gt;
                            events: {&lt;br /&gt;
                                click: this.reset&lt;br /&gt;
                            }&lt;br /&gt;
                        }&lt;br /&gt;
                    ]&lt;br /&gt;
                },&lt;br /&gt;
                element: &#039;tools&#039;,&lt;br /&gt;
                script: &#039;SpoilerAlert&#039;,&lt;br /&gt;
                type: &#039;append&#039;&lt;br /&gt;
            });&lt;br /&gt;
        },&lt;br /&gt;
        yes: function() {&lt;br /&gt;
            this.fadeOut(&#039;#SpoilerAlertCover&#039;);&lt;br /&gt;
            this.ids.push(config.wgArticleId);&lt;br /&gt;
            window.localStorage.setItem(&#039;SpoilerAlert&#039;, JSON.stringify(this.ids));&lt;br /&gt;
        },&lt;br /&gt;
        no: function() {&lt;br /&gt;
            this.fadeOut(&#039;#SpoilerAlertText, #SpoilerAlertYes, #SpoilerAlertNo&#039;);&lt;br /&gt;
            if (this.config.back) {&lt;br /&gt;
                if (window.history &amp;amp;&amp;amp; window.history.length &amp;gt; 1) {&lt;br /&gt;
                    window.history.back();&lt;br /&gt;
                } else {&lt;br /&gt;
                    location.href = config.wgServer + config.wgScriptPath;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        fadeOut: function(el) {&lt;br /&gt;
            $(el).fadeOut(this.config.fadeDelay, function() {&lt;br /&gt;
                $(this).remove();&lt;br /&gt;
            });&lt;br /&gt;
        },&lt;br /&gt;
        reset: function(event) {&lt;br /&gt;
            event.preventDefault();&lt;br /&gt;
            window.localStorage.setItem(&#039;SpoilerAlert&#039;, JSON.stringify([]));&lt;br /&gt;
            window.location.reload();&lt;br /&gt;
        }&lt;br /&gt;
    };&lt;br /&gt;
    if (!window.dev || !window.dev.ui || !window.dev.i18n || !window.dev.placement) {&lt;br /&gt;
        importArticles({&lt;br /&gt;
            type: &#039;script&#039;,&lt;br /&gt;
            articles: [&lt;br /&gt;
                &#039;u:dev:MediaWiki:I18n-js/code.js&#039;,&lt;br /&gt;
                &#039;u:dev:MediaWiki:Placement.js&#039;,&lt;br /&gt;
                &#039;u:dev:MediaWiki:UI-js/code.js&#039;&lt;br /&gt;
            ]&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
    importArticle({&lt;br /&gt;
        type: &#039;style&#039;,&lt;br /&gt;
        article: &#039;u:dev:MediaWiki:SpoilerAlert.css&#039;&lt;br /&gt;
    });&lt;br /&gt;
    mw.hook(&#039;dev.ui&#039;).add(SpoilerAlert.preload.bind(SpoilerAlert));&lt;br /&gt;
    mw.hook(&#039;dev.i18n&#039;).add(SpoilerAlert.preload.bind(SpoilerAlert));&lt;br /&gt;
    mw.hook(&#039;dev.placement&#039;).add(SpoilerAlert.preload.bind(SpoilerAlert));&lt;br /&gt;
})(window.jQuery, window.mediaWiki);&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=MediaWiki:Common.css&amp;diff=1484</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=MediaWiki:Common.css&amp;diff=1484"/>
		<updated>2025-04-06T05:53:57Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/********* [[Template:Spoiler]] *********/&lt;br /&gt;
.spoiler {&lt;br /&gt;
  background-color: transparent;&lt;br /&gt;
  transition: all 0.3s;&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
  overflow:auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.spoiler &amp;gt; * {&lt;br /&gt;
  transition: all 0.3s;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.spoiler.hide {&lt;br /&gt;
  pointer-events: auto;&lt;br /&gt;
  background-color: var(--main-background-color); /* fallback */&lt;br /&gt;
  background-color: color-mix(in srgb, var(--main-background-color) 80%, transparent);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.spoiler.hide &amp;gt; * {&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
  opacity: 0;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=MediaWiki:Common.css&amp;diff=1483</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=MediaWiki:Common.css&amp;diff=1483"/>
		<updated>2025-04-06T05:50:42Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/********* [[Template:Spoiler]] *********/&lt;br /&gt;
.spoiler-content {&lt;br /&gt;
&lt;br /&gt;
  background-color: transparent;&lt;br /&gt;
  transition: all 0.3s;&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
  overflow:auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.spoiler-content &amp;gt; * {&lt;br /&gt;
  transition: all 0.3s;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.spoiler-content.hide {&lt;br /&gt;
  pointer-events: auto;&lt;br /&gt;
  background-color: var(--main-background-color); /* fallback */&lt;br /&gt;
  background-color: color-mix(in srgb, var(--main-background-color) 80%, transparent);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.spoiler-content.hide &amp;gt; * {&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
  opacity: 0;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=MediaWiki:Common.js&amp;diff=1482</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=MediaWiki:Common.js&amp;diff=1482"/>
		<updated>2025-04-06T05:42:30Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* [[Template:Spoiler]] https://support.wiki.gg/wiki/Template:Spoiler */&lt;br /&gt;
$(function () {&lt;br /&gt;
	$(&#039;.spoiler-content&#039;)&lt;br /&gt;
	.off(&#039;click&#039;) // in case this code is loaded twice&lt;br /&gt;
	.addClass( &#039;hide&#039;)&lt;br /&gt;
	.on(&#039;click&#039;, function(e){&lt;br /&gt;
		$(this).toggleClass(&#039;hide&#039;);&lt;br /&gt;
	}).find(&#039;a&#039;).on(&#039;click&#039;, function(e){&lt;br /&gt;
		e.stopPropagation();&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
});&lt;br /&gt;
/* End Template:Spoiler */&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Name:        WhatLinksHere&lt;br /&gt;
 * Version:     v1.1&lt;br /&gt;
 * Author:      KockaAdmiralac &amp;lt;wikia@kocka.tech&amp;gt;&lt;br /&gt;
 * Description: Adds a link to Special:WhatLinksHere below the edit dropdown&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
    var $list = $(&#039;.page-header__contribution-buttons .wds-list, .page-header__actions .wds-list, .UserProfileActionButton .WikiaMenuElement&#039;);&lt;br /&gt;
&lt;br /&gt;
    if (!$list.length || window.WhatLinksHereLoaded) {&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
    window.WhatLinksHereLoaded = true;&lt;br /&gt;
&lt;br /&gt;
    var config = mw.config.get([&lt;br /&gt;
        &#039;wgPageName&#039;,&lt;br /&gt;
        &#039;wgUserLanguage&#039;&lt;br /&gt;
    ]);&lt;br /&gt;
&lt;br /&gt;
    mw.hook(&#039;dev.fetch&#039;).add(function(fetch) {&lt;br /&gt;
        $.when(&lt;br /&gt;
            fetch(&#039;whatlinkshere&#039;),&lt;br /&gt;
            mw.loader.using(&#039;mediawiki.util&#039;)&lt;br /&gt;
        ).then(function(text) {&lt;br /&gt;
            var url = mw.util.getUrl(&#039;Special:WhatLinksHere/&#039; + config.wgPageName);&lt;br /&gt;
            $list.append(&lt;br /&gt;
                $(&#039;&amp;lt;li&amp;gt;&#039;, {&lt;br /&gt;
                    id: &#039;ca-whatlinkshere&#039;&lt;br /&gt;
                }).append(&lt;br /&gt;
                    $(&#039;&amp;lt;a&amp;gt;&#039;, {&lt;br /&gt;
                        href: url,&lt;br /&gt;
                        text: text&lt;br /&gt;
                    })&lt;br /&gt;
                )&lt;br /&gt;
            );&lt;br /&gt;
            if (mw.util.getParamValue(&#039;redirect&#039;) === &#039;no&#039;) {&lt;br /&gt;
                $(&#039;.redirectText&#039;).append(&lt;br /&gt;
                    $(&#039;&amp;lt;br&amp;gt;&#039;),&lt;br /&gt;
                    $(&#039;&amp;lt;span&amp;gt;&#039;, {&lt;br /&gt;
                        id: &#039;redirectWLH&#039;&lt;br /&gt;
                    }).append(&lt;br /&gt;
                        &#039;→ &#039;,&lt;br /&gt;
                        $(&#039;&amp;lt;a&amp;gt;&#039;, {&lt;br /&gt;
                            &#039;class&#039;: &#039;redirectWLH-link&#039;,&lt;br /&gt;
                            href: url,&lt;br /&gt;
                            text: text&lt;br /&gt;
                        })&lt;br /&gt;
                    )&lt;br /&gt;
                );&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
    importArticle({&lt;br /&gt;
        type: &#039;script&#039;,&lt;br /&gt;
        article: &#039;u:dev:MediaWiki:Fetch.js&#039;&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
// __NOWYSIWYG__&lt;br /&gt;
/**&lt;br /&gt;
 * TabberEX&lt;br /&gt;
 *&lt;br /&gt;
 * @version 2.3&lt;br /&gt;
 *&lt;br /&gt;
 * @author Jono99 &amp;lt;https://phigros.fandom.com/wiki/User:Jono99&amp;gt;&lt;br /&gt;
 *&lt;br /&gt;
 * documentation and examples at:&lt;br /&gt;
 * &amp;lt;https://dev.fandom.com/wiki/TabberEX&amp;gt;&lt;br /&gt;
 */&lt;br /&gt;
 &lt;br /&gt;
 (function (window, $, mw) {&lt;br /&gt;
	// Function called by tabs to switch tabs&lt;br /&gt;
	window.tabberex_switchTab = function(tabber_id, tab)&lt;br /&gt;
	{&lt;br /&gt;
		tabberex_hideAllTabs(tabber_id);&lt;br /&gt;
		tabberex_showTab(tabber_id, tab);&lt;br /&gt;
	};&lt;br /&gt;
 &lt;br /&gt;
	// Inject CSS&lt;br /&gt;
	(function() {&lt;br /&gt;
		var tabberex_css = document.createElement(&amp;quot;style&amp;quot;);&lt;br /&gt;
		tabberex_css.innerHTML = &amp;quot;/* CSS owned by FANDOM */\n.oo-ui-tabOptionWidget{display:inline-block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;vertical-align:bottom;align-items:center;color:color-mix(in srgb, var(--text-color) 75%, transparent);display:inline-flex;font-size:14px;font-weight:500;height:40px;letter-spacing:.5px;margin:0;padding:0 11px;-webkit-transition:var(--content-background-color) .3s,color .3s,var(--banner-color) .3s;-moz-transition:var(--content-background-color) .3s,color .3s,var(--banner-color) .3s;transition:var(--content-background-color) .3s,color .3s,var(--banner-color) .3s}.oo-ui-tabSelectWidget:not(.oo-ui-tabSelectWidget-framed) .oo-ui-tabOptionWidget{-webkit-transition:color .3s,box-shadow .3s;-moz-transition:color .3s,box-shadow .3s;transition:color .3s,box-shadow .3s;border-bottom:1px solid var(--banner-color)}.oo-ui-tabSelectWidget:not(.oo-ui-tabSelectWidget-framed) .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected{box-shadow:inset 0 -2px 0 0 var(--link-color);color:var(--link-color)}&amp;quot;;&lt;br /&gt;
		document.head.appendChild(tabberex_css);&lt;br /&gt;
	})();&lt;br /&gt;
		&lt;br /&gt;
	window.tabberex_showTab = function(tabber_id, i)&lt;br /&gt;
	{&lt;br /&gt;
		var base_selector = &amp;quot;[data-tabber-id=\&amp;quot;&amp;quot; + tabber_id + &amp;quot;\&amp;quot;]&amp;quot;;&lt;br /&gt;
		$(&amp;quot;.tabberex-head&amp;quot; + base_selector).children(&amp;quot;:nth-child(&amp;quot; + i + &amp;quot;)&amp;quot;)&lt;br /&gt;
		.addClass(&amp;quot;oo-ui-optionWidget-selected&amp;quot;)&lt;br /&gt;
		.css(&amp;quot;cursor&amp;quot;, &amp;quot;default&amp;quot;);&lt;br /&gt;
				&lt;br /&gt;
		$($(&amp;quot;.tabberex-body&amp;quot; + base_selector).children(&amp;quot;:nth-child(&amp;quot; + i + &amp;quot;)&amp;quot;).get()).each(function () {&lt;br /&gt;
            var display_value = $(this).attr(&amp;quot;data-tab-display&amp;quot;);&lt;br /&gt;
            if (display_value === undefined) display_value = &amp;quot;block&amp;quot;;&lt;br /&gt;
            $(this).css(&amp;quot;display&amp;quot;, display_value);&lt;br /&gt;
        });&lt;br /&gt;
	};&lt;br /&gt;
	 &lt;br /&gt;
	window.tabberex_hideTab = function(tabber_id, i)&lt;br /&gt;
	{&lt;br /&gt;
		var base_selector = &amp;quot;[data-tabber-id=\&amp;quot;&amp;quot; + tabber_id + &amp;quot;\&amp;quot;]&amp;quot;;&lt;br /&gt;
		$(&amp;quot;.tabberex-head&amp;quot; + base_selector).children(&amp;quot;:nth-child(&amp;quot; + i + &amp;quot;)&amp;quot;)&lt;br /&gt;
		.removeClass(&amp;quot;oo-ui-optionWidget-selected&amp;quot;)&lt;br /&gt;
		.css(&amp;quot;cursor&amp;quot;, &amp;quot;pointer&amp;quot;);&lt;br /&gt;
				&lt;br /&gt;
		$(&amp;quot;.tabberex-body&amp;quot; + base_selector).children(&amp;quot;:nth-child(&amp;quot; + i + &amp;quot;)&amp;quot;).css(&amp;quot;display&amp;quot;, &amp;quot;none&amp;quot;);&lt;br /&gt;
	};&lt;br /&gt;
			&lt;br /&gt;
	window.tabberex_hideAllTabs = function(tabber_id)&lt;br /&gt;
	{&lt;br /&gt;
		var base_selector = &amp;quot;[data-tabber-id=\&amp;quot;&amp;quot; + tabber_id + &amp;quot;\&amp;quot;]&amp;quot;;&lt;br /&gt;
		$(&amp;quot;.tabberex-head&amp;quot; + base_selector).children()&lt;br /&gt;
		.removeClass(&amp;quot;oo-ui-optionWidget-selected&amp;quot;)&lt;br /&gt;
		.css(&amp;quot;cursor&amp;quot;, &amp;quot;pointer&amp;quot;);&lt;br /&gt;
				&lt;br /&gt;
		$(&amp;quot;.tabberex-body&amp;quot; + base_selector).children().css(&amp;quot;display&amp;quot;, &amp;quot;none&amp;quot;);&lt;br /&gt;
	};&lt;br /&gt;
	&lt;br /&gt;
	var tabberex_buildTabHead = function(host_div, tabber_id, tab_headers, tab_ex_headers, tab_locations)&lt;br /&gt;
	{&lt;br /&gt;
		var tabber_head = host_div;&lt;br /&gt;
		tabber_head.innerHTML = &amp;quot;&amp;quot;;&lt;br /&gt;
		$(tabber_head).addClass(&amp;quot;tabberex-head oo-ui-widget oo-ui-widget-enabled oo-ui-selectWidget oo-ui-selectWidget-unpressed oo-ui-selectWidget-depressed oo-ui-tabSelectWidget&amp;quot;)&lt;br /&gt;
		.attr(&amp;quot;data-tabber-id&amp;quot;, tabber_id);&lt;br /&gt;
		for (var i = 0; i &amp;lt; tab_headers.length; i++)&lt;br /&gt;
		{&lt;br /&gt;
			console.log(&amp;quot;Building tab &amp;quot; + tabber_id + &amp;quot; &amp;quot; + String(i));&lt;br /&gt;
			var tab = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			$(tab).addClass(&amp;quot;oo-ui-widget oo-ui-widget-enabled oo-ui-labelElement oo-ui-optionWidget oo-ui-tabOptionWidget&amp;quot;)&lt;br /&gt;
			.css(&amp;quot;cursor&amp;quot;, &amp;quot;pointer&amp;quot;);&lt;br /&gt;
			if (tab_locations[i] === undefined)&lt;br /&gt;
				$(tab).attr(&amp;quot;onclick&amp;quot;, &amp;quot;tabberex_switchTab(\&amp;quot;&amp;quot; + mw.html.escape(tabber_id) + &amp;quot;\&amp;quot;, &amp;quot; + (i + 1) + &amp;quot;)&amp;quot;);&lt;br /&gt;
			else&lt;br /&gt;
				$(tab).attr(&amp;quot;onclick&amp;quot;, &amp;quot;location = \&amp;quot;&amp;quot; + mw.html.escape(tab_locations[i]) + &amp;quot;\&amp;quot;&amp;quot;);&lt;br /&gt;
			var tab_span = document.createElement(&amp;quot;span&amp;quot;);&lt;br /&gt;
			$(tab_span).addClass(&amp;quot;oo-ui-labelElement-label&amp;quot;);&lt;br /&gt;
			if (tab_ex_headers[i] === undefined)&lt;br /&gt;
				$(tab_span).text(tab_headers[i]);&lt;br /&gt;
			else&lt;br /&gt;
			{&lt;br /&gt;
				console.log(&amp;quot;EX Header present&amp;quot;);&lt;br /&gt;
				for (var attr in tab_ex_headers[i][1])&lt;br /&gt;
					tab_span.setAttribute(attr, tab_ex_headers[i][1][attr]);&lt;br /&gt;
				$(tab_span).html(tab_ex_headers[i][0]);&lt;br /&gt;
			}&lt;br /&gt;
			tab.appendChild(tab_span);&lt;br /&gt;
			tabber_head.appendChild(tab);&lt;br /&gt;
			console.log(&amp;quot;Successfully built tab&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		return tabber_head.outerHTML;&lt;br /&gt;
	};&lt;br /&gt;
	&lt;br /&gt;
	var process_tabber_head_tab = function(tab_element, i)&lt;br /&gt;
	{&lt;br /&gt;
		// Get header&lt;br /&gt;
		var header = $(tab_element).attr(&amp;quot;data-tab-header&amp;quot;);&lt;br /&gt;
		if (header === undefined) header = i + 1;&lt;br /&gt;
		&lt;br /&gt;
		// Get ex header&lt;br /&gt;
		var ex_header;&lt;br /&gt;
		function get_ex_header(_) {&lt;br /&gt;
			console.log(&#039;EX Header found&#039;);&lt;br /&gt;
			var attributes = {};&lt;br /&gt;
			var attrs = this.getAttributeNames();&lt;br /&gt;
			for (var i in attrs)&lt;br /&gt;
				attributes[attrs[i]] = this.getAttribute(attrs[i]);&lt;br /&gt;
			ex_header = [$(this).html(), attributes];&lt;br /&gt;
			$(this).remove();&lt;br /&gt;
		}&lt;br /&gt;
		$(tab_element).children(&amp;quot;p&amp;quot;).children(&amp;quot;span.tabberex-tab-header&amp;quot;).each(get_ex_header);&lt;br /&gt;
		$(tab_element).children(&amp;quot;span.tabberex-tab-header&amp;quot;).each(get_ex_header);&lt;br /&gt;
		&lt;br /&gt;
		// Get default&lt;br /&gt;
		var is_default = false;&lt;br /&gt;
		if ($(tab_element).hasClass(&amp;quot;tabberex-tab-default&amp;quot;))&lt;br /&gt;
			is_default = true;&lt;br /&gt;
		&lt;br /&gt;
		// Get tab location&lt;br /&gt;
		var tab_location = $(this).attr(&amp;quot;data-tab-location&amp;quot;);&lt;br /&gt;
		&lt;br /&gt;
		return {&amp;quot;header&amp;quot;: header, &amp;quot;ex_header&amp;quot;: ex_header, &amp;quot;default&amp;quot;: is_default, &amp;quot;location&amp;quot;: tab_location};&lt;br /&gt;
	};&lt;br /&gt;
	&lt;br /&gt;
	var process_tabbers = function()&lt;br /&gt;
	{&lt;br /&gt;
		console.log(&#039;TabberEX started&#039;);&lt;br /&gt;
		var tabber_i = 0;&lt;br /&gt;
		var default_tabs = {};&lt;br /&gt;
		var tabber_ids = [];&lt;br /&gt;
		// The tabs are iterated through backwards to properly handle tabbers that are nested within other tabbers&lt;br /&gt;
		$($(&amp;quot;.tabberex-head&amp;quot;).get().reverse()).each(function() {&lt;br /&gt;
			var tab_headers = [];&lt;br /&gt;
			var tab_ex_headers = [];&lt;br /&gt;
			var tab_locations = [];&lt;br /&gt;
			var default_tab = 0;&lt;br /&gt;
				&lt;br /&gt;
			var tabber_id = $(this).attr(&amp;quot;data-tabber-id&amp;quot;);&lt;br /&gt;
			if (tabber_id === undefined) tabber_id = String(tabber_i);&lt;br /&gt;
				&lt;br /&gt;
			$(this).children(&amp;quot;.tabberex-tab&amp;quot;).each(function(i) {&lt;br /&gt;
				console.log(&#039;Processing head tab &#039; + tabber_id + &#039; &#039; + String(i));&lt;br /&gt;
				var tab_details = process_tabber_head_tab(this, i);&lt;br /&gt;
				console.log(&#039;Processing complete&#039;);&lt;br /&gt;
				tab_headers[i] = tab_details.header;&lt;br /&gt;
				tab_ex_headers[i] = tab_details.ex_header;&lt;br /&gt;
				if (tab_details.default)&lt;br /&gt;
					default_tab = i;&lt;br /&gt;
				tab_locations[i] = tab_details.location;&lt;br /&gt;
				$(this).detach();&lt;br /&gt;
			});&lt;br /&gt;
			&lt;br /&gt;
			// Insert tabs into DOM&lt;br /&gt;
			tabberex_buildTabHead(this, tabber_id, tab_headers, tab_ex_headers, tab_locations);&lt;br /&gt;
			if (default_tabs[tabber_id] === undefined)&lt;br /&gt;
				default_tabs[tabber_id] = default_tab;&lt;br /&gt;
			tabber_ids.push(tabber_id);&lt;br /&gt;
			tabber_i++;&lt;br /&gt;
		});&lt;br /&gt;
		&lt;br /&gt;
		$($(&amp;quot;.tabberex-body&amp;quot;).get().reverse()).each(function() {&lt;br /&gt;
			$(this).children().css(&amp;quot;display&amp;quot;, &amp;quot;none&amp;quot;);&lt;br /&gt;
		});&lt;br /&gt;
		&lt;br /&gt;
		$($(&amp;quot;.tabberex&amp;quot;).get().reverse()).each(function() {&lt;br /&gt;
			var tab_headers = [];&lt;br /&gt;
			var tab_ex_headers = [];&lt;br /&gt;
			var tab_locations = [];&lt;br /&gt;
			var default_tab = 0;&lt;br /&gt;
			var tab_contents = [];&lt;br /&gt;
			&lt;br /&gt;
			var tabber_id = $(this).attr(&amp;quot;data-tabber-id&amp;quot;);&lt;br /&gt;
			if (tabber_id === undefined) tabber_id = String(tabber_i);&lt;br /&gt;
            $(this).attr(&amp;quot;data-tabber-id&amp;quot;, tabber_id);&lt;br /&gt;
&lt;br /&gt;
            var tabber_head = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
            $(tabber_head).addClass(&amp;quot;tabberex-head&amp;quot;).attr(&amp;quot;data-tabber-id&amp;quot;, tabber_id);&lt;br /&gt;
            $(this).removeClass(&amp;quot;tabberex&amp;quot;).addClass(&amp;quot;tabberex-body&amp;quot;);&lt;br /&gt;
			&lt;br /&gt;
			$(this).children(&amp;quot;.tabberex-tab&amp;quot;).each(function(i) {&lt;br /&gt;
				console.log(&#039;Processing head tab &#039; + tabber_id + &#039; &#039; + String(i));&lt;br /&gt;
				var tab_details = process_tabber_head_tab(this, i);&lt;br /&gt;
				console.log(&#039;Processing complete&#039;);&lt;br /&gt;
				tab_headers[i] = tab_details.header;&lt;br /&gt;
				tab_ex_headers[i] = tab_details.ex_header;&lt;br /&gt;
				if (tab_details.default)&lt;br /&gt;
					default_tab = i;&lt;br /&gt;
				tab_locations[i] = tab_details.location;&lt;br /&gt;
				&lt;br /&gt;
				// Get tab content&lt;br /&gt;
				$(this).css(&amp;quot;display&amp;quot;, &amp;quot;none&amp;quot;);&lt;br /&gt;
				tab_contents[i] = $(this);&lt;br /&gt;
			});&lt;br /&gt;
&lt;br /&gt;
            tabberex_buildTabHead(tabber_head, tabber_id, tab_headers, tab_ex_headers, tab_locations);&lt;br /&gt;
			if (default_tabs[tabber_id] === undefined)&lt;br /&gt;
				default_tabs[tabber_id] = default_tab;&lt;br /&gt;
            $(tabber_head).insertBefore(this);&lt;br /&gt;
			tabber_ids.push(tabber_id);&lt;br /&gt;
			tabber_i++;&lt;br /&gt;
		});&lt;br /&gt;
		&lt;br /&gt;
		// Select default tabs&lt;br /&gt;
		for (var i in tabber_ids)&lt;br /&gt;
		{&lt;br /&gt;
			tabberex_showTab(tabber_ids[i], default_tabs[tabber_ids[i]] + 1);&lt;br /&gt;
		}&lt;br /&gt;
	};&lt;br /&gt;
 &lt;br /&gt;
	mw.hook(&amp;quot;wikipage.content&amp;quot;).add(process_tabbers);&lt;br /&gt;
}(this, jQuery, mediaWiki));&lt;br /&gt;
/*&lt;br /&gt;
 * @title           SoundcloudPlayer.js&lt;br /&gt;
 * @version         1.1.2&lt;br /&gt;
 * @description     Add support for soundcloud players&lt;br /&gt;
 * @author          Himmalerin&lt;br /&gt;
 * @license         CC-BY-SA-3.0&lt;br /&gt;
 */&lt;br /&gt;
(function () {&lt;br /&gt;
	// Build the iframe&lt;br /&gt;
	const scPlayer = function (data) {&lt;br /&gt;
		const widget = document.createElement(&#039;iframe&#039;);&lt;br /&gt;
&lt;br /&gt;
		widget.classList.add(&#039;soundcloud-player&#039;);&lt;br /&gt;
&lt;br /&gt;
		widget.src =&lt;br /&gt;
			&#039;https://w.soundcloud.com/player/?show_artwork=false&amp;amp;url=&#039; +&lt;br /&gt;
			encodeURI(data.src);&lt;br /&gt;
&lt;br /&gt;
		// If data-color is set add the value to the iframe&lt;br /&gt;
		if (data.color) widget.src += &#039;&amp;amp;color=&#039; + encodeURIComponent(data.color);&lt;br /&gt;
		// If data-width/height are set add that value to the iframe&lt;br /&gt;
		if (data.width) widget.width = data.width;&lt;br /&gt;
		if (data.height) widget.height = data.height;&lt;br /&gt;
&lt;br /&gt;
		return widget;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	const scParseTags = function ($content) {&lt;br /&gt;
		// Get all instances of the soundcloud class&lt;br /&gt;
		const scTags = $content.find(&#039;.soundcloud&#039;);&lt;br /&gt;
&lt;br /&gt;
		// For each instance of the soundcloud class run scPlayer&lt;br /&gt;
		for (var i = 0; i &amp;lt; scTags.length; i++) {&lt;br /&gt;
			scTags[i].replaceWith(scPlayer(scTags[i].dataset));&lt;br /&gt;
		}&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	mw.hook(&#039;wikipage.content&#039;).add(function ($content) {&lt;br /&gt;
		scParseTags($content);&lt;br /&gt;
	});&lt;br /&gt;
})();&lt;br /&gt;
/*&lt;br /&gt;
https://dev.fandom.com/wiki/MediaWiki:CopyText/code.js&lt;br /&gt;
 */&lt;br /&gt;
(function () {&lt;br /&gt;
    if (window.CopyTextLoaded) {&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
    window.CopyTextLoaded = true;&lt;br /&gt;
    mw.hook(&#039;dev.i18n&#039;).add(function (i18n) {&lt;br /&gt;
        i18n.loadMessages(&#039;CopyText&#039;).done(function (i18n) {&lt;br /&gt;
            function showSuccess() {&lt;br /&gt;
                if (window.BannerNotification) {&lt;br /&gt;
                    new BannerNotification(i18n.msg(&#039;success&#039;).escape(), &#039;confirm&#039;, null, 5000).show();&lt;br /&gt;
                } else {&lt;br /&gt;
                    mw.notify(i18n.msg(&#039;success&#039;).plain());&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            $(&#039;body&#039;).on(&#039;click&#039;, &#039;.copy-to-clipboard-button&#039;, function(e){&lt;br /&gt;
                var text = $(this).data(&#039;text&#039;),&lt;br /&gt;
                $input = $(&#039;&amp;lt;textarea&amp;gt;&#039;, { type: &#039;text&#039; })&lt;br /&gt;
                    .val($(&#039;.copy-to-clipboard-text&#039;).filter(function() {&lt;br /&gt;
                        return $(this).data(&#039;text&#039;) == text;&lt;br /&gt;
                    }).first().text())&lt;br /&gt;
                    .appendTo(&#039;body&#039;)&lt;br /&gt;
                    .select();&lt;br /&gt;
                var success = document.execCommand(&#039;Copy&#039;);&lt;br /&gt;
                $input.remove();&lt;br /&gt;
                if (success) {&lt;br /&gt;
                    showSuccess();&lt;br /&gt;
                } else {&lt;br /&gt;
                    if (window.navigator &amp;amp;&amp;amp; navigator.clipboard &amp;amp;&amp;amp; navigator.clipboard.writeText) {&lt;br /&gt;
                        navigator.clipboard.writeText(text).then(function() {&lt;br /&gt;
                            showSuccess();&lt;br /&gt;
                        });&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
    importArticle({&lt;br /&gt;
        type: &#039;script&#039;,&lt;br /&gt;
        article: &#039;u:dev:MediaWiki:I18n-js/code.js&#039;&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
/**&lt;br /&gt;
 * SpoilerAlert&lt;br /&gt;
 * documentation at: https://dev.fandom.com/wiki/SpoilerAlert&lt;br /&gt;
 * © Peter Coester, 2012&lt;br /&gt;
 */&lt;br /&gt;
/* jshint curly:false */&lt;br /&gt;
(function ($, mw) {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    var config = mw.config.get([&lt;br /&gt;
        &#039;wgArticleId&#039;,&lt;br /&gt;
        &#039;wgNamespaceNumber&#039;,&lt;br /&gt;
        &#039;wgScriptPath&#039;,&lt;br /&gt;
        &#039;wgServer&#039;&lt;br /&gt;
    ]), $element = $(&#039;#SpoilerAlert&#039;);&lt;br /&gt;
    if (&lt;br /&gt;
        config.wgNamespaceNumber === -1 ||&lt;br /&gt;
        config.wgArticleId === 0 ||&lt;br /&gt;
        $element.length !== 1&lt;br /&gt;
    ) {&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
    var SpoilerAlert = {&lt;br /&gt;
        config: $.extend({&lt;br /&gt;
            fadeDelay: 1600&lt;br /&gt;
        }, window.SpoilerAlertJS),&lt;br /&gt;
        toLoad: 3,&lt;br /&gt;
        preload: function() {&lt;br /&gt;
            if (--this.toLoad === 0) {&lt;br /&gt;
                window.dev.i18n.loadMessages(&#039;SpoilerAlert&#039;)&lt;br /&gt;
                    .then(this.init.bind(this));&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        init: function(i18n) {&lt;br /&gt;
            this.ids = JSON.parse(window.localStorage.getItem(&#039;SpoilerAlert&#039;)) || [];&lt;br /&gt;
            [&#039;yes&#039;, &#039;no&#039;, &#039;question&#039;].forEach(function(msg) {&lt;br /&gt;
                if (!this.config[msg]) {&lt;br /&gt;
                    this.config[msg] = i18n.msg(msg).plain();&lt;br /&gt;
                }&lt;br /&gt;
            }, this);&lt;br /&gt;
            if (this.valid()) {&lt;br /&gt;
                this.insertUI();&lt;br /&gt;
            }&lt;br /&gt;
            this.insertResetButton(i18n);&lt;br /&gt;
        },&lt;br /&gt;
        valid: function() {&lt;br /&gt;
            return $element.height() &amp;lt; $(&#039;#mw-content-text&#039;).height() / 2 &amp;amp;&amp;amp;&lt;br /&gt;
                   this.ids.indexOf(config.wgArticleId) === -1;&lt;br /&gt;
        },&lt;br /&gt;
        insertUI: function() {&lt;br /&gt;
            var pos = $element.position();&lt;br /&gt;
            $(&#039;#mw-content-text&#039;).append(&lt;br /&gt;
                window.dev.ui({&lt;br /&gt;
                    type: &#039;div&#039;,&lt;br /&gt;
                    attr: {&lt;br /&gt;
                        id: &#039;SpoilerAlertCover&#039;&lt;br /&gt;
                    },&lt;br /&gt;
                    style: {&lt;br /&gt;
                        width: $element.width() + &#039;px&#039;,&lt;br /&gt;
                        height: $element.height() + &#039;px&#039;,&lt;br /&gt;
                        top: pos.top + &#039;px&#039;,&lt;br /&gt;
                        left: pos.left + &#039;px&#039;&lt;br /&gt;
                    },&lt;br /&gt;
                    children: [&lt;br /&gt;
                        {&lt;br /&gt;
                            type: &#039;p&#039;,&lt;br /&gt;
                            attr: {&lt;br /&gt;
                                id: &#039;SpoilerAlertText&#039;&lt;br /&gt;
                            },&lt;br /&gt;
                            text: this.config.question&lt;br /&gt;
                        },&lt;br /&gt;
                        {&lt;br /&gt;
                            type: &#039;span&#039;,&lt;br /&gt;
                            attr: {&lt;br /&gt;
                                id: &#039;SpoilerAlertYes&#039;,&lt;br /&gt;
                                &#039;class&#039;: &#039;wds-button&#039;&lt;br /&gt;
                            },&lt;br /&gt;
                            events: {&lt;br /&gt;
                                click: this.yes.bind(this)&lt;br /&gt;
                            },&lt;br /&gt;
                            text: this.config.yes&lt;br /&gt;
                        },&lt;br /&gt;
                        {&lt;br /&gt;
                            type: &#039;span&#039;,&lt;br /&gt;
                            attr: {&lt;br /&gt;
                                id: &#039;SpoilerAlertNo&#039;,&lt;br /&gt;
                                &#039;class&#039;: &#039;wds-button&#039;&lt;br /&gt;
                            },&lt;br /&gt;
                            events: {&lt;br /&gt;
                                click: this.no.bind(this)&lt;br /&gt;
                            },&lt;br /&gt;
                            text: this.config.no&lt;br /&gt;
                        }&lt;br /&gt;
                    ]&lt;br /&gt;
                })&lt;br /&gt;
            );&lt;br /&gt;
        },&lt;br /&gt;
        insertResetButton: function(i18n) {&lt;br /&gt;
            window.dev.placement.loader.util({&lt;br /&gt;
                content: {&lt;br /&gt;
                    type: &#039;li&#039;,&lt;br /&gt;
                    children: [&lt;br /&gt;
                        {&lt;br /&gt;
                            type: &#039;a&#039;,&lt;br /&gt;
                            attr: {&lt;br /&gt;
                                href: &#039;#&#039;&lt;br /&gt;
                            },&lt;br /&gt;
                            text: i18n.msg(&#039;reset&#039;).plain(),&lt;br /&gt;
                            events: {&lt;br /&gt;
                                click: this.reset&lt;br /&gt;
                            }&lt;br /&gt;
                        }&lt;br /&gt;
                    ]&lt;br /&gt;
                },&lt;br /&gt;
                element: &#039;tools&#039;,&lt;br /&gt;
                script: &#039;SpoilerAlert&#039;,&lt;br /&gt;
                type: &#039;append&#039;&lt;br /&gt;
            });&lt;br /&gt;
        },&lt;br /&gt;
        yes: function() {&lt;br /&gt;
            this.fadeOut(&#039;#SpoilerAlertCover&#039;);&lt;br /&gt;
            this.ids.push(config.wgArticleId);&lt;br /&gt;
            window.localStorage.setItem(&#039;SpoilerAlert&#039;, JSON.stringify(this.ids));&lt;br /&gt;
        },&lt;br /&gt;
        no: function() {&lt;br /&gt;
            this.fadeOut(&#039;#SpoilerAlertText, #SpoilerAlertYes, #SpoilerAlertNo&#039;);&lt;br /&gt;
            if (this.config.back) {&lt;br /&gt;
                if (window.history &amp;amp;&amp;amp; window.history.length &amp;gt; 1) {&lt;br /&gt;
                    window.history.back();&lt;br /&gt;
                } else {&lt;br /&gt;
                    location.href = config.wgServer + config.wgScriptPath;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        fadeOut: function(el) {&lt;br /&gt;
            $(el).fadeOut(this.config.fadeDelay, function() {&lt;br /&gt;
                $(this).remove();&lt;br /&gt;
            });&lt;br /&gt;
        },&lt;br /&gt;
        reset: function(event) {&lt;br /&gt;
            event.preventDefault();&lt;br /&gt;
            window.localStorage.setItem(&#039;SpoilerAlert&#039;, JSON.stringify([]));&lt;br /&gt;
            window.location.reload();&lt;br /&gt;
        }&lt;br /&gt;
    };&lt;br /&gt;
    if (!window.dev || !window.dev.ui || !window.dev.i18n || !window.dev.placement) {&lt;br /&gt;
        importArticles({&lt;br /&gt;
            type: &#039;script&#039;,&lt;br /&gt;
            articles: [&lt;br /&gt;
                &#039;u:dev:MediaWiki:I18n-js/code.js&#039;,&lt;br /&gt;
                &#039;u:dev:MediaWiki:Placement.js&#039;,&lt;br /&gt;
                &#039;u:dev:MediaWiki:UI-js/code.js&#039;&lt;br /&gt;
            ]&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
    importArticle({&lt;br /&gt;
        type: &#039;style&#039;,&lt;br /&gt;
        article: &#039;u:dev:MediaWiki:SpoilerAlert.css&#039;&lt;br /&gt;
    });&lt;br /&gt;
    mw.hook(&#039;dev.ui&#039;).add(SpoilerAlert.preload.bind(SpoilerAlert));&lt;br /&gt;
    mw.hook(&#039;dev.i18n&#039;).add(SpoilerAlert.preload.bind(SpoilerAlert));&lt;br /&gt;
    mw.hook(&#039;dev.placement&#039;).add(SpoilerAlert.preload.bind(SpoilerAlert));&lt;br /&gt;
})(window.jQuery, window.mediaWiki);&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=MediaWiki:Common.js&amp;diff=1481</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=MediaWiki:Common.js&amp;diff=1481"/>
		<updated>2025-04-06T05:41:55Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* [[Template:Spoiler]] https://support.wiki.gg/wiki/Template:Spoiler */&lt;br /&gt;
$(function () {&lt;br /&gt;
	$(&#039;.spoiler-content&#039;)&lt;br /&gt;
	.off(&#039;click&#039;) // in case this code is loaded twice&lt;br /&gt;
	.on(&#039;click&#039;, function(e){&lt;br /&gt;
		$(this).toggleClass(&#039;hide&#039;);&lt;br /&gt;
	}).find(&#039;a&#039;).on(&#039;click&#039;, function(e){&lt;br /&gt;
		e.stopPropagation();&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
});&lt;br /&gt;
/* End Template:Spoiler */&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Name:        WhatLinksHere&lt;br /&gt;
 * Version:     v1.1&lt;br /&gt;
 * Author:      KockaAdmiralac &amp;lt;wikia@kocka.tech&amp;gt;&lt;br /&gt;
 * Description: Adds a link to Special:WhatLinksHere below the edit dropdown&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
    var $list = $(&#039;.page-header__contribution-buttons .wds-list, .page-header__actions .wds-list, .UserProfileActionButton .WikiaMenuElement&#039;);&lt;br /&gt;
&lt;br /&gt;
    if (!$list.length || window.WhatLinksHereLoaded) {&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
    window.WhatLinksHereLoaded = true;&lt;br /&gt;
&lt;br /&gt;
    var config = mw.config.get([&lt;br /&gt;
        &#039;wgPageName&#039;,&lt;br /&gt;
        &#039;wgUserLanguage&#039;&lt;br /&gt;
    ]);&lt;br /&gt;
&lt;br /&gt;
    mw.hook(&#039;dev.fetch&#039;).add(function(fetch) {&lt;br /&gt;
        $.when(&lt;br /&gt;
            fetch(&#039;whatlinkshere&#039;),&lt;br /&gt;
            mw.loader.using(&#039;mediawiki.util&#039;)&lt;br /&gt;
        ).then(function(text) {&lt;br /&gt;
            var url = mw.util.getUrl(&#039;Special:WhatLinksHere/&#039; + config.wgPageName);&lt;br /&gt;
            $list.append(&lt;br /&gt;
                $(&#039;&amp;lt;li&amp;gt;&#039;, {&lt;br /&gt;
                    id: &#039;ca-whatlinkshere&#039;&lt;br /&gt;
                }).append(&lt;br /&gt;
                    $(&#039;&amp;lt;a&amp;gt;&#039;, {&lt;br /&gt;
                        href: url,&lt;br /&gt;
                        text: text&lt;br /&gt;
                    })&lt;br /&gt;
                )&lt;br /&gt;
            );&lt;br /&gt;
            if (mw.util.getParamValue(&#039;redirect&#039;) === &#039;no&#039;) {&lt;br /&gt;
                $(&#039;.redirectText&#039;).append(&lt;br /&gt;
                    $(&#039;&amp;lt;br&amp;gt;&#039;),&lt;br /&gt;
                    $(&#039;&amp;lt;span&amp;gt;&#039;, {&lt;br /&gt;
                        id: &#039;redirectWLH&#039;&lt;br /&gt;
                    }).append(&lt;br /&gt;
                        &#039;→ &#039;,&lt;br /&gt;
                        $(&#039;&amp;lt;a&amp;gt;&#039;, {&lt;br /&gt;
                            &#039;class&#039;: &#039;redirectWLH-link&#039;,&lt;br /&gt;
                            href: url,&lt;br /&gt;
                            text: text&lt;br /&gt;
                        })&lt;br /&gt;
                    )&lt;br /&gt;
                );&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
    importArticle({&lt;br /&gt;
        type: &#039;script&#039;,&lt;br /&gt;
        article: &#039;u:dev:MediaWiki:Fetch.js&#039;&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
// __NOWYSIWYG__&lt;br /&gt;
/**&lt;br /&gt;
 * TabberEX&lt;br /&gt;
 *&lt;br /&gt;
 * @version 2.3&lt;br /&gt;
 *&lt;br /&gt;
 * @author Jono99 &amp;lt;https://phigros.fandom.com/wiki/User:Jono99&amp;gt;&lt;br /&gt;
 *&lt;br /&gt;
 * documentation and examples at:&lt;br /&gt;
 * &amp;lt;https://dev.fandom.com/wiki/TabberEX&amp;gt;&lt;br /&gt;
 */&lt;br /&gt;
 &lt;br /&gt;
 (function (window, $, mw) {&lt;br /&gt;
	// Function called by tabs to switch tabs&lt;br /&gt;
	window.tabberex_switchTab = function(tabber_id, tab)&lt;br /&gt;
	{&lt;br /&gt;
		tabberex_hideAllTabs(tabber_id);&lt;br /&gt;
		tabberex_showTab(tabber_id, tab);&lt;br /&gt;
	};&lt;br /&gt;
 &lt;br /&gt;
	// Inject CSS&lt;br /&gt;
	(function() {&lt;br /&gt;
		var tabberex_css = document.createElement(&amp;quot;style&amp;quot;);&lt;br /&gt;
		tabberex_css.innerHTML = &amp;quot;/* CSS owned by FANDOM */\n.oo-ui-tabOptionWidget{display:inline-block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;vertical-align:bottom;align-items:center;color:color-mix(in srgb, var(--text-color) 75%, transparent);display:inline-flex;font-size:14px;font-weight:500;height:40px;letter-spacing:.5px;margin:0;padding:0 11px;-webkit-transition:var(--content-background-color) .3s,color .3s,var(--banner-color) .3s;-moz-transition:var(--content-background-color) .3s,color .3s,var(--banner-color) .3s;transition:var(--content-background-color) .3s,color .3s,var(--banner-color) .3s}.oo-ui-tabSelectWidget:not(.oo-ui-tabSelectWidget-framed) .oo-ui-tabOptionWidget{-webkit-transition:color .3s,box-shadow .3s;-moz-transition:color .3s,box-shadow .3s;transition:color .3s,box-shadow .3s;border-bottom:1px solid var(--banner-color)}.oo-ui-tabSelectWidget:not(.oo-ui-tabSelectWidget-framed) .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected{box-shadow:inset 0 -2px 0 0 var(--link-color);color:var(--link-color)}&amp;quot;;&lt;br /&gt;
		document.head.appendChild(tabberex_css);&lt;br /&gt;
	})();&lt;br /&gt;
		&lt;br /&gt;
	window.tabberex_showTab = function(tabber_id, i)&lt;br /&gt;
	{&lt;br /&gt;
		var base_selector = &amp;quot;[data-tabber-id=\&amp;quot;&amp;quot; + tabber_id + &amp;quot;\&amp;quot;]&amp;quot;;&lt;br /&gt;
		$(&amp;quot;.tabberex-head&amp;quot; + base_selector).children(&amp;quot;:nth-child(&amp;quot; + i + &amp;quot;)&amp;quot;)&lt;br /&gt;
		.addClass(&amp;quot;oo-ui-optionWidget-selected&amp;quot;)&lt;br /&gt;
		.css(&amp;quot;cursor&amp;quot;, &amp;quot;default&amp;quot;);&lt;br /&gt;
				&lt;br /&gt;
		$($(&amp;quot;.tabberex-body&amp;quot; + base_selector).children(&amp;quot;:nth-child(&amp;quot; + i + &amp;quot;)&amp;quot;).get()).each(function () {&lt;br /&gt;
            var display_value = $(this).attr(&amp;quot;data-tab-display&amp;quot;);&lt;br /&gt;
            if (display_value === undefined) display_value = &amp;quot;block&amp;quot;;&lt;br /&gt;
            $(this).css(&amp;quot;display&amp;quot;, display_value);&lt;br /&gt;
        });&lt;br /&gt;
	};&lt;br /&gt;
	 &lt;br /&gt;
	window.tabberex_hideTab = function(tabber_id, i)&lt;br /&gt;
	{&lt;br /&gt;
		var base_selector = &amp;quot;[data-tabber-id=\&amp;quot;&amp;quot; + tabber_id + &amp;quot;\&amp;quot;]&amp;quot;;&lt;br /&gt;
		$(&amp;quot;.tabberex-head&amp;quot; + base_selector).children(&amp;quot;:nth-child(&amp;quot; + i + &amp;quot;)&amp;quot;)&lt;br /&gt;
		.removeClass(&amp;quot;oo-ui-optionWidget-selected&amp;quot;)&lt;br /&gt;
		.css(&amp;quot;cursor&amp;quot;, &amp;quot;pointer&amp;quot;);&lt;br /&gt;
				&lt;br /&gt;
		$(&amp;quot;.tabberex-body&amp;quot; + base_selector).children(&amp;quot;:nth-child(&amp;quot; + i + &amp;quot;)&amp;quot;).css(&amp;quot;display&amp;quot;, &amp;quot;none&amp;quot;);&lt;br /&gt;
	};&lt;br /&gt;
			&lt;br /&gt;
	window.tabberex_hideAllTabs = function(tabber_id)&lt;br /&gt;
	{&lt;br /&gt;
		var base_selector = &amp;quot;[data-tabber-id=\&amp;quot;&amp;quot; + tabber_id + &amp;quot;\&amp;quot;]&amp;quot;;&lt;br /&gt;
		$(&amp;quot;.tabberex-head&amp;quot; + base_selector).children()&lt;br /&gt;
		.removeClass(&amp;quot;oo-ui-optionWidget-selected&amp;quot;)&lt;br /&gt;
		.css(&amp;quot;cursor&amp;quot;, &amp;quot;pointer&amp;quot;);&lt;br /&gt;
				&lt;br /&gt;
		$(&amp;quot;.tabberex-body&amp;quot; + base_selector).children().css(&amp;quot;display&amp;quot;, &amp;quot;none&amp;quot;);&lt;br /&gt;
	};&lt;br /&gt;
	&lt;br /&gt;
	var tabberex_buildTabHead = function(host_div, tabber_id, tab_headers, tab_ex_headers, tab_locations)&lt;br /&gt;
	{&lt;br /&gt;
		var tabber_head = host_div;&lt;br /&gt;
		tabber_head.innerHTML = &amp;quot;&amp;quot;;&lt;br /&gt;
		$(tabber_head).addClass(&amp;quot;tabberex-head oo-ui-widget oo-ui-widget-enabled oo-ui-selectWidget oo-ui-selectWidget-unpressed oo-ui-selectWidget-depressed oo-ui-tabSelectWidget&amp;quot;)&lt;br /&gt;
		.attr(&amp;quot;data-tabber-id&amp;quot;, tabber_id);&lt;br /&gt;
		for (var i = 0; i &amp;lt; tab_headers.length; i++)&lt;br /&gt;
		{&lt;br /&gt;
			console.log(&amp;quot;Building tab &amp;quot; + tabber_id + &amp;quot; &amp;quot; + String(i));&lt;br /&gt;
			var tab = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			$(tab).addClass(&amp;quot;oo-ui-widget oo-ui-widget-enabled oo-ui-labelElement oo-ui-optionWidget oo-ui-tabOptionWidget&amp;quot;)&lt;br /&gt;
			.css(&amp;quot;cursor&amp;quot;, &amp;quot;pointer&amp;quot;);&lt;br /&gt;
			if (tab_locations[i] === undefined)&lt;br /&gt;
				$(tab).attr(&amp;quot;onclick&amp;quot;, &amp;quot;tabberex_switchTab(\&amp;quot;&amp;quot; + mw.html.escape(tabber_id) + &amp;quot;\&amp;quot;, &amp;quot; + (i + 1) + &amp;quot;)&amp;quot;);&lt;br /&gt;
			else&lt;br /&gt;
				$(tab).attr(&amp;quot;onclick&amp;quot;, &amp;quot;location = \&amp;quot;&amp;quot; + mw.html.escape(tab_locations[i]) + &amp;quot;\&amp;quot;&amp;quot;);&lt;br /&gt;
			var tab_span = document.createElement(&amp;quot;span&amp;quot;);&lt;br /&gt;
			$(tab_span).addClass(&amp;quot;oo-ui-labelElement-label&amp;quot;);&lt;br /&gt;
			if (tab_ex_headers[i] === undefined)&lt;br /&gt;
				$(tab_span).text(tab_headers[i]);&lt;br /&gt;
			else&lt;br /&gt;
			{&lt;br /&gt;
				console.log(&amp;quot;EX Header present&amp;quot;);&lt;br /&gt;
				for (var attr in tab_ex_headers[i][1])&lt;br /&gt;
					tab_span.setAttribute(attr, tab_ex_headers[i][1][attr]);&lt;br /&gt;
				$(tab_span).html(tab_ex_headers[i][0]);&lt;br /&gt;
			}&lt;br /&gt;
			tab.appendChild(tab_span);&lt;br /&gt;
			tabber_head.appendChild(tab);&lt;br /&gt;
			console.log(&amp;quot;Successfully built tab&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		return tabber_head.outerHTML;&lt;br /&gt;
	};&lt;br /&gt;
	&lt;br /&gt;
	var process_tabber_head_tab = function(tab_element, i)&lt;br /&gt;
	{&lt;br /&gt;
		// Get header&lt;br /&gt;
		var header = $(tab_element).attr(&amp;quot;data-tab-header&amp;quot;);&lt;br /&gt;
		if (header === undefined) header = i + 1;&lt;br /&gt;
		&lt;br /&gt;
		// Get ex header&lt;br /&gt;
		var ex_header;&lt;br /&gt;
		function get_ex_header(_) {&lt;br /&gt;
			console.log(&#039;EX Header found&#039;);&lt;br /&gt;
			var attributes = {};&lt;br /&gt;
			var attrs = this.getAttributeNames();&lt;br /&gt;
			for (var i in attrs)&lt;br /&gt;
				attributes[attrs[i]] = this.getAttribute(attrs[i]);&lt;br /&gt;
			ex_header = [$(this).html(), attributes];&lt;br /&gt;
			$(this).remove();&lt;br /&gt;
		}&lt;br /&gt;
		$(tab_element).children(&amp;quot;p&amp;quot;).children(&amp;quot;span.tabberex-tab-header&amp;quot;).each(get_ex_header);&lt;br /&gt;
		$(tab_element).children(&amp;quot;span.tabberex-tab-header&amp;quot;).each(get_ex_header);&lt;br /&gt;
		&lt;br /&gt;
		// Get default&lt;br /&gt;
		var is_default = false;&lt;br /&gt;
		if ($(tab_element).hasClass(&amp;quot;tabberex-tab-default&amp;quot;))&lt;br /&gt;
			is_default = true;&lt;br /&gt;
		&lt;br /&gt;
		// Get tab location&lt;br /&gt;
		var tab_location = $(this).attr(&amp;quot;data-tab-location&amp;quot;);&lt;br /&gt;
		&lt;br /&gt;
		return {&amp;quot;header&amp;quot;: header, &amp;quot;ex_header&amp;quot;: ex_header, &amp;quot;default&amp;quot;: is_default, &amp;quot;location&amp;quot;: tab_location};&lt;br /&gt;
	};&lt;br /&gt;
	&lt;br /&gt;
	var process_tabbers = function()&lt;br /&gt;
	{&lt;br /&gt;
		console.log(&#039;TabberEX started&#039;);&lt;br /&gt;
		var tabber_i = 0;&lt;br /&gt;
		var default_tabs = {};&lt;br /&gt;
		var tabber_ids = [];&lt;br /&gt;
		// The tabs are iterated through backwards to properly handle tabbers that are nested within other tabbers&lt;br /&gt;
		$($(&amp;quot;.tabberex-head&amp;quot;).get().reverse()).each(function() {&lt;br /&gt;
			var tab_headers = [];&lt;br /&gt;
			var tab_ex_headers = [];&lt;br /&gt;
			var tab_locations = [];&lt;br /&gt;
			var default_tab = 0;&lt;br /&gt;
				&lt;br /&gt;
			var tabber_id = $(this).attr(&amp;quot;data-tabber-id&amp;quot;);&lt;br /&gt;
			if (tabber_id === undefined) tabber_id = String(tabber_i);&lt;br /&gt;
				&lt;br /&gt;
			$(this).children(&amp;quot;.tabberex-tab&amp;quot;).each(function(i) {&lt;br /&gt;
				console.log(&#039;Processing head tab &#039; + tabber_id + &#039; &#039; + String(i));&lt;br /&gt;
				var tab_details = process_tabber_head_tab(this, i);&lt;br /&gt;
				console.log(&#039;Processing complete&#039;);&lt;br /&gt;
				tab_headers[i] = tab_details.header;&lt;br /&gt;
				tab_ex_headers[i] = tab_details.ex_header;&lt;br /&gt;
				if (tab_details.default)&lt;br /&gt;
					default_tab = i;&lt;br /&gt;
				tab_locations[i] = tab_details.location;&lt;br /&gt;
				$(this).detach();&lt;br /&gt;
			});&lt;br /&gt;
			&lt;br /&gt;
			// Insert tabs into DOM&lt;br /&gt;
			tabberex_buildTabHead(this, tabber_id, tab_headers, tab_ex_headers, tab_locations);&lt;br /&gt;
			if (default_tabs[tabber_id] === undefined)&lt;br /&gt;
				default_tabs[tabber_id] = default_tab;&lt;br /&gt;
			tabber_ids.push(tabber_id);&lt;br /&gt;
			tabber_i++;&lt;br /&gt;
		});&lt;br /&gt;
		&lt;br /&gt;
		$($(&amp;quot;.tabberex-body&amp;quot;).get().reverse()).each(function() {&lt;br /&gt;
			$(this).children().css(&amp;quot;display&amp;quot;, &amp;quot;none&amp;quot;);&lt;br /&gt;
		});&lt;br /&gt;
		&lt;br /&gt;
		$($(&amp;quot;.tabberex&amp;quot;).get().reverse()).each(function() {&lt;br /&gt;
			var tab_headers = [];&lt;br /&gt;
			var tab_ex_headers = [];&lt;br /&gt;
			var tab_locations = [];&lt;br /&gt;
			var default_tab = 0;&lt;br /&gt;
			var tab_contents = [];&lt;br /&gt;
			&lt;br /&gt;
			var tabber_id = $(this).attr(&amp;quot;data-tabber-id&amp;quot;);&lt;br /&gt;
			if (tabber_id === undefined) tabber_id = String(tabber_i);&lt;br /&gt;
            $(this).attr(&amp;quot;data-tabber-id&amp;quot;, tabber_id);&lt;br /&gt;
&lt;br /&gt;
            var tabber_head = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
            $(tabber_head).addClass(&amp;quot;tabberex-head&amp;quot;).attr(&amp;quot;data-tabber-id&amp;quot;, tabber_id);&lt;br /&gt;
            $(this).removeClass(&amp;quot;tabberex&amp;quot;).addClass(&amp;quot;tabberex-body&amp;quot;);&lt;br /&gt;
			&lt;br /&gt;
			$(this).children(&amp;quot;.tabberex-tab&amp;quot;).each(function(i) {&lt;br /&gt;
				console.log(&#039;Processing head tab &#039; + tabber_id + &#039; &#039; + String(i));&lt;br /&gt;
				var tab_details = process_tabber_head_tab(this, i);&lt;br /&gt;
				console.log(&#039;Processing complete&#039;);&lt;br /&gt;
				tab_headers[i] = tab_details.header;&lt;br /&gt;
				tab_ex_headers[i] = tab_details.ex_header;&lt;br /&gt;
				if (tab_details.default)&lt;br /&gt;
					default_tab = i;&lt;br /&gt;
				tab_locations[i] = tab_details.location;&lt;br /&gt;
				&lt;br /&gt;
				// Get tab content&lt;br /&gt;
				$(this).css(&amp;quot;display&amp;quot;, &amp;quot;none&amp;quot;);&lt;br /&gt;
				tab_contents[i] = $(this);&lt;br /&gt;
			});&lt;br /&gt;
&lt;br /&gt;
            tabberex_buildTabHead(tabber_head, tabber_id, tab_headers, tab_ex_headers, tab_locations);&lt;br /&gt;
			if (default_tabs[tabber_id] === undefined)&lt;br /&gt;
				default_tabs[tabber_id] = default_tab;&lt;br /&gt;
            $(tabber_head).insertBefore(this);&lt;br /&gt;
			tabber_ids.push(tabber_id);&lt;br /&gt;
			tabber_i++;&lt;br /&gt;
		});&lt;br /&gt;
		&lt;br /&gt;
		// Select default tabs&lt;br /&gt;
		for (var i in tabber_ids)&lt;br /&gt;
		{&lt;br /&gt;
			tabberex_showTab(tabber_ids[i], default_tabs[tabber_ids[i]] + 1);&lt;br /&gt;
		}&lt;br /&gt;
	};&lt;br /&gt;
 &lt;br /&gt;
	mw.hook(&amp;quot;wikipage.content&amp;quot;).add(process_tabbers);&lt;br /&gt;
}(this, jQuery, mediaWiki));&lt;br /&gt;
/*&lt;br /&gt;
 * @title           SoundcloudPlayer.js&lt;br /&gt;
 * @version         1.1.2&lt;br /&gt;
 * @description     Add support for soundcloud players&lt;br /&gt;
 * @author          Himmalerin&lt;br /&gt;
 * @license         CC-BY-SA-3.0&lt;br /&gt;
 */&lt;br /&gt;
(function () {&lt;br /&gt;
	// Build the iframe&lt;br /&gt;
	const scPlayer = function (data) {&lt;br /&gt;
		const widget = document.createElement(&#039;iframe&#039;);&lt;br /&gt;
&lt;br /&gt;
		widget.classList.add(&#039;soundcloud-player&#039;);&lt;br /&gt;
&lt;br /&gt;
		widget.src =&lt;br /&gt;
			&#039;https://w.soundcloud.com/player/?show_artwork=false&amp;amp;url=&#039; +&lt;br /&gt;
			encodeURI(data.src);&lt;br /&gt;
&lt;br /&gt;
		// If data-color is set add the value to the iframe&lt;br /&gt;
		if (data.color) widget.src += &#039;&amp;amp;color=&#039; + encodeURIComponent(data.color);&lt;br /&gt;
		// If data-width/height are set add that value to the iframe&lt;br /&gt;
		if (data.width) widget.width = data.width;&lt;br /&gt;
		if (data.height) widget.height = data.height;&lt;br /&gt;
&lt;br /&gt;
		return widget;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	const scParseTags = function ($content) {&lt;br /&gt;
		// Get all instances of the soundcloud class&lt;br /&gt;
		const scTags = $content.find(&#039;.soundcloud&#039;);&lt;br /&gt;
&lt;br /&gt;
		// For each instance of the soundcloud class run scPlayer&lt;br /&gt;
		for (var i = 0; i &amp;lt; scTags.length; i++) {&lt;br /&gt;
			scTags[i].replaceWith(scPlayer(scTags[i].dataset));&lt;br /&gt;
		}&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	mw.hook(&#039;wikipage.content&#039;).add(function ($content) {&lt;br /&gt;
		scParseTags($content);&lt;br /&gt;
	});&lt;br /&gt;
})();&lt;br /&gt;
/*&lt;br /&gt;
https://dev.fandom.com/wiki/MediaWiki:CopyText/code.js&lt;br /&gt;
 */&lt;br /&gt;
(function () {&lt;br /&gt;
    if (window.CopyTextLoaded) {&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
    window.CopyTextLoaded = true;&lt;br /&gt;
    mw.hook(&#039;dev.i18n&#039;).add(function (i18n) {&lt;br /&gt;
        i18n.loadMessages(&#039;CopyText&#039;).done(function (i18n) {&lt;br /&gt;
            function showSuccess() {&lt;br /&gt;
                if (window.BannerNotification) {&lt;br /&gt;
                    new BannerNotification(i18n.msg(&#039;success&#039;).escape(), &#039;confirm&#039;, null, 5000).show();&lt;br /&gt;
                } else {&lt;br /&gt;
                    mw.notify(i18n.msg(&#039;success&#039;).plain());&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            $(&#039;body&#039;).on(&#039;click&#039;, &#039;.copy-to-clipboard-button&#039;, function(e){&lt;br /&gt;
                var text = $(this).data(&#039;text&#039;),&lt;br /&gt;
                $input = $(&#039;&amp;lt;textarea&amp;gt;&#039;, { type: &#039;text&#039; })&lt;br /&gt;
                    .val($(&#039;.copy-to-clipboard-text&#039;).filter(function() {&lt;br /&gt;
                        return $(this).data(&#039;text&#039;) == text;&lt;br /&gt;
                    }).first().text())&lt;br /&gt;
                    .appendTo(&#039;body&#039;)&lt;br /&gt;
                    .select();&lt;br /&gt;
                var success = document.execCommand(&#039;Copy&#039;);&lt;br /&gt;
                $input.remove();&lt;br /&gt;
                if (success) {&lt;br /&gt;
                    showSuccess();&lt;br /&gt;
                } else {&lt;br /&gt;
                    if (window.navigator &amp;amp;&amp;amp; navigator.clipboard &amp;amp;&amp;amp; navigator.clipboard.writeText) {&lt;br /&gt;
                        navigator.clipboard.writeText(text).then(function() {&lt;br /&gt;
                            showSuccess();&lt;br /&gt;
                        });&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
    importArticle({&lt;br /&gt;
        type: &#039;script&#039;,&lt;br /&gt;
        article: &#039;u:dev:MediaWiki:I18n-js/code.js&#039;&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
/**&lt;br /&gt;
 * SpoilerAlert&lt;br /&gt;
 * documentation at: https://dev.fandom.com/wiki/SpoilerAlert&lt;br /&gt;
 * © Peter Coester, 2012&lt;br /&gt;
 */&lt;br /&gt;
/* jshint curly:false */&lt;br /&gt;
(function ($, mw) {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    var config = mw.config.get([&lt;br /&gt;
        &#039;wgArticleId&#039;,&lt;br /&gt;
        &#039;wgNamespaceNumber&#039;,&lt;br /&gt;
        &#039;wgScriptPath&#039;,&lt;br /&gt;
        &#039;wgServer&#039;&lt;br /&gt;
    ]), $element = $(&#039;#SpoilerAlert&#039;);&lt;br /&gt;
    if (&lt;br /&gt;
        config.wgNamespaceNumber === -1 ||&lt;br /&gt;
        config.wgArticleId === 0 ||&lt;br /&gt;
        $element.length !== 1&lt;br /&gt;
    ) {&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
    var SpoilerAlert = {&lt;br /&gt;
        config: $.extend({&lt;br /&gt;
            fadeDelay: 1600&lt;br /&gt;
        }, window.SpoilerAlertJS),&lt;br /&gt;
        toLoad: 3,&lt;br /&gt;
        preload: function() {&lt;br /&gt;
            if (--this.toLoad === 0) {&lt;br /&gt;
                window.dev.i18n.loadMessages(&#039;SpoilerAlert&#039;)&lt;br /&gt;
                    .then(this.init.bind(this));&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        init: function(i18n) {&lt;br /&gt;
            this.ids = JSON.parse(window.localStorage.getItem(&#039;SpoilerAlert&#039;)) || [];&lt;br /&gt;
            [&#039;yes&#039;, &#039;no&#039;, &#039;question&#039;].forEach(function(msg) {&lt;br /&gt;
                if (!this.config[msg]) {&lt;br /&gt;
                    this.config[msg] = i18n.msg(msg).plain();&lt;br /&gt;
                }&lt;br /&gt;
            }, this);&lt;br /&gt;
            if (this.valid()) {&lt;br /&gt;
                this.insertUI();&lt;br /&gt;
            }&lt;br /&gt;
            this.insertResetButton(i18n);&lt;br /&gt;
        },&lt;br /&gt;
        valid: function() {&lt;br /&gt;
            return $element.height() &amp;lt; $(&#039;#mw-content-text&#039;).height() / 2 &amp;amp;&amp;amp;&lt;br /&gt;
                   this.ids.indexOf(config.wgArticleId) === -1;&lt;br /&gt;
        },&lt;br /&gt;
        insertUI: function() {&lt;br /&gt;
            var pos = $element.position();&lt;br /&gt;
            $(&#039;#mw-content-text&#039;).append(&lt;br /&gt;
                window.dev.ui({&lt;br /&gt;
                    type: &#039;div&#039;,&lt;br /&gt;
                    attr: {&lt;br /&gt;
                        id: &#039;SpoilerAlertCover&#039;&lt;br /&gt;
                    },&lt;br /&gt;
                    style: {&lt;br /&gt;
                        width: $element.width() + &#039;px&#039;,&lt;br /&gt;
                        height: $element.height() + &#039;px&#039;,&lt;br /&gt;
                        top: pos.top + &#039;px&#039;,&lt;br /&gt;
                        left: pos.left + &#039;px&#039;&lt;br /&gt;
                    },&lt;br /&gt;
                    children: [&lt;br /&gt;
                        {&lt;br /&gt;
                            type: &#039;p&#039;,&lt;br /&gt;
                            attr: {&lt;br /&gt;
                                id: &#039;SpoilerAlertText&#039;&lt;br /&gt;
                            },&lt;br /&gt;
                            text: this.config.question&lt;br /&gt;
                        },&lt;br /&gt;
                        {&lt;br /&gt;
                            type: &#039;span&#039;,&lt;br /&gt;
                            attr: {&lt;br /&gt;
                                id: &#039;SpoilerAlertYes&#039;,&lt;br /&gt;
                                &#039;class&#039;: &#039;wds-button&#039;&lt;br /&gt;
                            },&lt;br /&gt;
                            events: {&lt;br /&gt;
                                click: this.yes.bind(this)&lt;br /&gt;
                            },&lt;br /&gt;
                            text: this.config.yes&lt;br /&gt;
                        },&lt;br /&gt;
                        {&lt;br /&gt;
                            type: &#039;span&#039;,&lt;br /&gt;
                            attr: {&lt;br /&gt;
                                id: &#039;SpoilerAlertNo&#039;,&lt;br /&gt;
                                &#039;class&#039;: &#039;wds-button&#039;&lt;br /&gt;
                            },&lt;br /&gt;
                            events: {&lt;br /&gt;
                                click: this.no.bind(this)&lt;br /&gt;
                            },&lt;br /&gt;
                            text: this.config.no&lt;br /&gt;
                        }&lt;br /&gt;
                    ]&lt;br /&gt;
                })&lt;br /&gt;
            );&lt;br /&gt;
        },&lt;br /&gt;
        insertResetButton: function(i18n) {&lt;br /&gt;
            window.dev.placement.loader.util({&lt;br /&gt;
                content: {&lt;br /&gt;
                    type: &#039;li&#039;,&lt;br /&gt;
                    children: [&lt;br /&gt;
                        {&lt;br /&gt;
                            type: &#039;a&#039;,&lt;br /&gt;
                            attr: {&lt;br /&gt;
                                href: &#039;#&#039;&lt;br /&gt;
                            },&lt;br /&gt;
                            text: i18n.msg(&#039;reset&#039;).plain(),&lt;br /&gt;
                            events: {&lt;br /&gt;
                                click: this.reset&lt;br /&gt;
                            }&lt;br /&gt;
                        }&lt;br /&gt;
                    ]&lt;br /&gt;
                },&lt;br /&gt;
                element: &#039;tools&#039;,&lt;br /&gt;
                script: &#039;SpoilerAlert&#039;,&lt;br /&gt;
                type: &#039;append&#039;&lt;br /&gt;
            });&lt;br /&gt;
        },&lt;br /&gt;
        yes: function() {&lt;br /&gt;
            this.fadeOut(&#039;#SpoilerAlertCover&#039;);&lt;br /&gt;
            this.ids.push(config.wgArticleId);&lt;br /&gt;
            window.localStorage.setItem(&#039;SpoilerAlert&#039;, JSON.stringify(this.ids));&lt;br /&gt;
        },&lt;br /&gt;
        no: function() {&lt;br /&gt;
            this.fadeOut(&#039;#SpoilerAlertText, #SpoilerAlertYes, #SpoilerAlertNo&#039;);&lt;br /&gt;
            if (this.config.back) {&lt;br /&gt;
                if (window.history &amp;amp;&amp;amp; window.history.length &amp;gt; 1) {&lt;br /&gt;
                    window.history.back();&lt;br /&gt;
                } else {&lt;br /&gt;
                    location.href = config.wgServer + config.wgScriptPath;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        fadeOut: function(el) {&lt;br /&gt;
            $(el).fadeOut(this.config.fadeDelay, function() {&lt;br /&gt;
                $(this).remove();&lt;br /&gt;
            });&lt;br /&gt;
        },&lt;br /&gt;
        reset: function(event) {&lt;br /&gt;
            event.preventDefault();&lt;br /&gt;
            window.localStorage.setItem(&#039;SpoilerAlert&#039;, JSON.stringify([]));&lt;br /&gt;
            window.location.reload();&lt;br /&gt;
        }&lt;br /&gt;
    };&lt;br /&gt;
    if (!window.dev || !window.dev.ui || !window.dev.i18n || !window.dev.placement) {&lt;br /&gt;
        importArticles({&lt;br /&gt;
            type: &#039;script&#039;,&lt;br /&gt;
            articles: [&lt;br /&gt;
                &#039;u:dev:MediaWiki:I18n-js/code.js&#039;,&lt;br /&gt;
                &#039;u:dev:MediaWiki:Placement.js&#039;,&lt;br /&gt;
                &#039;u:dev:MediaWiki:UI-js/code.js&#039;&lt;br /&gt;
            ]&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
    importArticle({&lt;br /&gt;
        type: &#039;style&#039;,&lt;br /&gt;
        article: &#039;u:dev:MediaWiki:SpoilerAlert.css&#039;&lt;br /&gt;
    });&lt;br /&gt;
    mw.hook(&#039;dev.ui&#039;).add(SpoilerAlert.preload.bind(SpoilerAlert));&lt;br /&gt;
    mw.hook(&#039;dev.i18n&#039;).add(SpoilerAlert.preload.bind(SpoilerAlert));&lt;br /&gt;
    mw.hook(&#039;dev.placement&#039;).add(SpoilerAlert.preload.bind(SpoilerAlert));&lt;br /&gt;
})(window.jQuery, window.mediaWiki);&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=MediaWiki:Common.css&amp;diff=1480</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=MediaWiki:Common.css&amp;diff=1480"/>
		<updated>2025-04-06T05:41:45Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: invert spoilers&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/********* [[Template:Spoiler]] *********/&lt;br /&gt;
.spoiler-content {&lt;br /&gt;
  background-color: var(--main-background-color); /* fallback */&lt;br /&gt;
  background-color: color-mix(in srgb, var(--main-background-color) 80%, transparent);&lt;br /&gt;
  background-color: transparent;&lt;br /&gt;
  transition: all 0.3s;&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
  overflow:auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.spoiler-content &amp;gt; * {&lt;br /&gt;
  transition: all 0.3s;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.spoiler-content.hide {&lt;br /&gt;
  pointer-events: auto;&lt;br /&gt;
  background-color: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.spoiler-content.hide &amp;gt; * {&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
  opacity: 0;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=User:Pynappo&amp;diff=1479</id>
		<title>User:Pynappo</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=User:Pynappo&amp;diff=1479"/>
		<updated>2025-04-06T05:11:36Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi {{spoiler|David}}&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=User:Pynappo&amp;diff=1478</id>
		<title>User:Pynappo</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=User:Pynappo&amp;diff=1478"/>
		<updated>2025-04-06T05:11:15Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi {{spoiler|block=n|David}}&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=MediaWiki:Common.js&amp;diff=1473</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=MediaWiki:Common.js&amp;diff=1473"/>
		<updated>2025-04-06T05:00:52Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* [[Template:Spoiler]] https://support.wiki.gg/wiki/Template:Spoiler */&lt;br /&gt;
$(function () {&lt;br /&gt;
	$(&#039;.spoiler-content&#039;)&lt;br /&gt;
	.off(&#039;click&#039;) // in case this code is loaded twice&lt;br /&gt;
	.on(&#039;click&#039;, function(e){&lt;br /&gt;
		$(this).toggleClass(&#039;show&#039;);&lt;br /&gt;
	}).find(&#039;a&#039;).on(&#039;click&#039;, function(e){&lt;br /&gt;
		e.stopPropagation();&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
});&lt;br /&gt;
/* End Template:Spoiler */&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Name:        WhatLinksHere&lt;br /&gt;
 * Version:     v1.1&lt;br /&gt;
 * Author:      KockaAdmiralac &amp;lt;wikia@kocka.tech&amp;gt;&lt;br /&gt;
 * Description: Adds a link to Special:WhatLinksHere below the edit dropdown&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
    var $list = $(&#039;.page-header__contribution-buttons .wds-list, .page-header__actions .wds-list, .UserProfileActionButton .WikiaMenuElement&#039;);&lt;br /&gt;
&lt;br /&gt;
    if (!$list.length || window.WhatLinksHereLoaded) {&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
    window.WhatLinksHereLoaded = true;&lt;br /&gt;
&lt;br /&gt;
    var config = mw.config.get([&lt;br /&gt;
        &#039;wgPageName&#039;,&lt;br /&gt;
        &#039;wgUserLanguage&#039;&lt;br /&gt;
    ]);&lt;br /&gt;
&lt;br /&gt;
    mw.hook(&#039;dev.fetch&#039;).add(function(fetch) {&lt;br /&gt;
        $.when(&lt;br /&gt;
            fetch(&#039;whatlinkshere&#039;),&lt;br /&gt;
            mw.loader.using(&#039;mediawiki.util&#039;)&lt;br /&gt;
        ).then(function(text) {&lt;br /&gt;
            var url = mw.util.getUrl(&#039;Special:WhatLinksHere/&#039; + config.wgPageName);&lt;br /&gt;
            $list.append(&lt;br /&gt;
                $(&#039;&amp;lt;li&amp;gt;&#039;, {&lt;br /&gt;
                    id: &#039;ca-whatlinkshere&#039;&lt;br /&gt;
                }).append(&lt;br /&gt;
                    $(&#039;&amp;lt;a&amp;gt;&#039;, {&lt;br /&gt;
                        href: url,&lt;br /&gt;
                        text: text&lt;br /&gt;
                    })&lt;br /&gt;
                )&lt;br /&gt;
            );&lt;br /&gt;
            if (mw.util.getParamValue(&#039;redirect&#039;) === &#039;no&#039;) {&lt;br /&gt;
                $(&#039;.redirectText&#039;).append(&lt;br /&gt;
                    $(&#039;&amp;lt;br&amp;gt;&#039;),&lt;br /&gt;
                    $(&#039;&amp;lt;span&amp;gt;&#039;, {&lt;br /&gt;
                        id: &#039;redirectWLH&#039;&lt;br /&gt;
                    }).append(&lt;br /&gt;
                        &#039;→ &#039;,&lt;br /&gt;
                        $(&#039;&amp;lt;a&amp;gt;&#039;, {&lt;br /&gt;
                            &#039;class&#039;: &#039;redirectWLH-link&#039;,&lt;br /&gt;
                            href: url,&lt;br /&gt;
                            text: text&lt;br /&gt;
                        })&lt;br /&gt;
                    )&lt;br /&gt;
                );&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
    importArticle({&lt;br /&gt;
        type: &#039;script&#039;,&lt;br /&gt;
        article: &#039;u:dev:MediaWiki:Fetch.js&#039;&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
// __NOWYSIWYG__&lt;br /&gt;
/**&lt;br /&gt;
 * TabberEX&lt;br /&gt;
 *&lt;br /&gt;
 * @version 2.3&lt;br /&gt;
 *&lt;br /&gt;
 * @author Jono99 &amp;lt;https://phigros.fandom.com/wiki/User:Jono99&amp;gt;&lt;br /&gt;
 *&lt;br /&gt;
 * documentation and examples at:&lt;br /&gt;
 * &amp;lt;https://dev.fandom.com/wiki/TabberEX&amp;gt;&lt;br /&gt;
 */&lt;br /&gt;
 &lt;br /&gt;
 (function (window, $, mw) {&lt;br /&gt;
	// Function called by tabs to switch tabs&lt;br /&gt;
	window.tabberex_switchTab = function(tabber_id, tab)&lt;br /&gt;
	{&lt;br /&gt;
		tabberex_hideAllTabs(tabber_id);&lt;br /&gt;
		tabberex_showTab(tabber_id, tab);&lt;br /&gt;
	};&lt;br /&gt;
 &lt;br /&gt;
	// Inject CSS&lt;br /&gt;
	(function() {&lt;br /&gt;
		var tabberex_css = document.createElement(&amp;quot;style&amp;quot;);&lt;br /&gt;
		tabberex_css.innerHTML = &amp;quot;/* CSS owned by FANDOM */\n.oo-ui-tabOptionWidget{display:inline-block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;vertical-align:bottom;align-items:center;color:color-mix(in srgb, var(--text-color) 75%, transparent);display:inline-flex;font-size:14px;font-weight:500;height:40px;letter-spacing:.5px;margin:0;padding:0 11px;-webkit-transition:var(--content-background-color) .3s,color .3s,var(--banner-color) .3s;-moz-transition:var(--content-background-color) .3s,color .3s,var(--banner-color) .3s;transition:var(--content-background-color) .3s,color .3s,var(--banner-color) .3s}.oo-ui-tabSelectWidget:not(.oo-ui-tabSelectWidget-framed) .oo-ui-tabOptionWidget{-webkit-transition:color .3s,box-shadow .3s;-moz-transition:color .3s,box-shadow .3s;transition:color .3s,box-shadow .3s;border-bottom:1px solid var(--banner-color)}.oo-ui-tabSelectWidget:not(.oo-ui-tabSelectWidget-framed) .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected{box-shadow:inset 0 -2px 0 0 var(--link-color);color:var(--link-color)}&amp;quot;;&lt;br /&gt;
		document.head.appendChild(tabberex_css);&lt;br /&gt;
	})();&lt;br /&gt;
		&lt;br /&gt;
	window.tabberex_showTab = function(tabber_id, i)&lt;br /&gt;
	{&lt;br /&gt;
		var base_selector = &amp;quot;[data-tabber-id=\&amp;quot;&amp;quot; + tabber_id + &amp;quot;\&amp;quot;]&amp;quot;;&lt;br /&gt;
		$(&amp;quot;.tabberex-head&amp;quot; + base_selector).children(&amp;quot;:nth-child(&amp;quot; + i + &amp;quot;)&amp;quot;)&lt;br /&gt;
		.addClass(&amp;quot;oo-ui-optionWidget-selected&amp;quot;)&lt;br /&gt;
		.css(&amp;quot;cursor&amp;quot;, &amp;quot;default&amp;quot;);&lt;br /&gt;
				&lt;br /&gt;
		$($(&amp;quot;.tabberex-body&amp;quot; + base_selector).children(&amp;quot;:nth-child(&amp;quot; + i + &amp;quot;)&amp;quot;).get()).each(function () {&lt;br /&gt;
            var display_value = $(this).attr(&amp;quot;data-tab-display&amp;quot;);&lt;br /&gt;
            if (display_value === undefined) display_value = &amp;quot;block&amp;quot;;&lt;br /&gt;
            $(this).css(&amp;quot;display&amp;quot;, display_value);&lt;br /&gt;
        });&lt;br /&gt;
	};&lt;br /&gt;
	 &lt;br /&gt;
	window.tabberex_hideTab = function(tabber_id, i)&lt;br /&gt;
	{&lt;br /&gt;
		var base_selector = &amp;quot;[data-tabber-id=\&amp;quot;&amp;quot; + tabber_id + &amp;quot;\&amp;quot;]&amp;quot;;&lt;br /&gt;
		$(&amp;quot;.tabberex-head&amp;quot; + base_selector).children(&amp;quot;:nth-child(&amp;quot; + i + &amp;quot;)&amp;quot;)&lt;br /&gt;
		.removeClass(&amp;quot;oo-ui-optionWidget-selected&amp;quot;)&lt;br /&gt;
		.css(&amp;quot;cursor&amp;quot;, &amp;quot;pointer&amp;quot;);&lt;br /&gt;
				&lt;br /&gt;
		$(&amp;quot;.tabberex-body&amp;quot; + base_selector).children(&amp;quot;:nth-child(&amp;quot; + i + &amp;quot;)&amp;quot;).css(&amp;quot;display&amp;quot;, &amp;quot;none&amp;quot;);&lt;br /&gt;
	};&lt;br /&gt;
			&lt;br /&gt;
	window.tabberex_hideAllTabs = function(tabber_id)&lt;br /&gt;
	{&lt;br /&gt;
		var base_selector = &amp;quot;[data-tabber-id=\&amp;quot;&amp;quot; + tabber_id + &amp;quot;\&amp;quot;]&amp;quot;;&lt;br /&gt;
		$(&amp;quot;.tabberex-head&amp;quot; + base_selector).children()&lt;br /&gt;
		.removeClass(&amp;quot;oo-ui-optionWidget-selected&amp;quot;)&lt;br /&gt;
		.css(&amp;quot;cursor&amp;quot;, &amp;quot;pointer&amp;quot;);&lt;br /&gt;
				&lt;br /&gt;
		$(&amp;quot;.tabberex-body&amp;quot; + base_selector).children().css(&amp;quot;display&amp;quot;, &amp;quot;none&amp;quot;);&lt;br /&gt;
	};&lt;br /&gt;
	&lt;br /&gt;
	var tabberex_buildTabHead = function(host_div, tabber_id, tab_headers, tab_ex_headers, tab_locations)&lt;br /&gt;
	{&lt;br /&gt;
		var tabber_head = host_div;&lt;br /&gt;
		tabber_head.innerHTML = &amp;quot;&amp;quot;;&lt;br /&gt;
		$(tabber_head).addClass(&amp;quot;tabberex-head oo-ui-widget oo-ui-widget-enabled oo-ui-selectWidget oo-ui-selectWidget-unpressed oo-ui-selectWidget-depressed oo-ui-tabSelectWidget&amp;quot;)&lt;br /&gt;
		.attr(&amp;quot;data-tabber-id&amp;quot;, tabber_id);&lt;br /&gt;
		for (var i = 0; i &amp;lt; tab_headers.length; i++)&lt;br /&gt;
		{&lt;br /&gt;
			console.log(&amp;quot;Building tab &amp;quot; + tabber_id + &amp;quot; &amp;quot; + String(i));&lt;br /&gt;
			var tab = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			$(tab).addClass(&amp;quot;oo-ui-widget oo-ui-widget-enabled oo-ui-labelElement oo-ui-optionWidget oo-ui-tabOptionWidget&amp;quot;)&lt;br /&gt;
			.css(&amp;quot;cursor&amp;quot;, &amp;quot;pointer&amp;quot;);&lt;br /&gt;
			if (tab_locations[i] === undefined)&lt;br /&gt;
				$(tab).attr(&amp;quot;onclick&amp;quot;, &amp;quot;tabberex_switchTab(\&amp;quot;&amp;quot; + mw.html.escape(tabber_id) + &amp;quot;\&amp;quot;, &amp;quot; + (i + 1) + &amp;quot;)&amp;quot;);&lt;br /&gt;
			else&lt;br /&gt;
				$(tab).attr(&amp;quot;onclick&amp;quot;, &amp;quot;location = \&amp;quot;&amp;quot; + mw.html.escape(tab_locations[i]) + &amp;quot;\&amp;quot;&amp;quot;);&lt;br /&gt;
			var tab_span = document.createElement(&amp;quot;span&amp;quot;);&lt;br /&gt;
			$(tab_span).addClass(&amp;quot;oo-ui-labelElement-label&amp;quot;);&lt;br /&gt;
			if (tab_ex_headers[i] === undefined)&lt;br /&gt;
				$(tab_span).text(tab_headers[i]);&lt;br /&gt;
			else&lt;br /&gt;
			{&lt;br /&gt;
				console.log(&amp;quot;EX Header present&amp;quot;);&lt;br /&gt;
				for (var attr in tab_ex_headers[i][1])&lt;br /&gt;
					tab_span.setAttribute(attr, tab_ex_headers[i][1][attr]);&lt;br /&gt;
				$(tab_span).html(tab_ex_headers[i][0]);&lt;br /&gt;
			}&lt;br /&gt;
			tab.appendChild(tab_span);&lt;br /&gt;
			tabber_head.appendChild(tab);&lt;br /&gt;
			console.log(&amp;quot;Successfully built tab&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		return tabber_head.outerHTML;&lt;br /&gt;
	};&lt;br /&gt;
	&lt;br /&gt;
	var process_tabber_head_tab = function(tab_element, i)&lt;br /&gt;
	{&lt;br /&gt;
		// Get header&lt;br /&gt;
		var header = $(tab_element).attr(&amp;quot;data-tab-header&amp;quot;);&lt;br /&gt;
		if (header === undefined) header = i + 1;&lt;br /&gt;
		&lt;br /&gt;
		// Get ex header&lt;br /&gt;
		var ex_header;&lt;br /&gt;
		function get_ex_header(_) {&lt;br /&gt;
			console.log(&#039;EX Header found&#039;);&lt;br /&gt;
			var attributes = {};&lt;br /&gt;
			var attrs = this.getAttributeNames();&lt;br /&gt;
			for (var i in attrs)&lt;br /&gt;
				attributes[attrs[i]] = this.getAttribute(attrs[i]);&lt;br /&gt;
			ex_header = [$(this).html(), attributes];&lt;br /&gt;
			$(this).remove();&lt;br /&gt;
		}&lt;br /&gt;
		$(tab_element).children(&amp;quot;p&amp;quot;).children(&amp;quot;span.tabberex-tab-header&amp;quot;).each(get_ex_header);&lt;br /&gt;
		$(tab_element).children(&amp;quot;span.tabberex-tab-header&amp;quot;).each(get_ex_header);&lt;br /&gt;
		&lt;br /&gt;
		// Get default&lt;br /&gt;
		var is_default = false;&lt;br /&gt;
		if ($(tab_element).hasClass(&amp;quot;tabberex-tab-default&amp;quot;))&lt;br /&gt;
			is_default = true;&lt;br /&gt;
		&lt;br /&gt;
		// Get tab location&lt;br /&gt;
		var tab_location = $(this).attr(&amp;quot;data-tab-location&amp;quot;);&lt;br /&gt;
		&lt;br /&gt;
		return {&amp;quot;header&amp;quot;: header, &amp;quot;ex_header&amp;quot;: ex_header, &amp;quot;default&amp;quot;: is_default, &amp;quot;location&amp;quot;: tab_location};&lt;br /&gt;
	};&lt;br /&gt;
	&lt;br /&gt;
	var process_tabbers = function()&lt;br /&gt;
	{&lt;br /&gt;
		console.log(&#039;TabberEX started&#039;);&lt;br /&gt;
		var tabber_i = 0;&lt;br /&gt;
		var default_tabs = {};&lt;br /&gt;
		var tabber_ids = [];&lt;br /&gt;
		// The tabs are iterated through backwards to properly handle tabbers that are nested within other tabbers&lt;br /&gt;
		$($(&amp;quot;.tabberex-head&amp;quot;).get().reverse()).each(function() {&lt;br /&gt;
			var tab_headers = [];&lt;br /&gt;
			var tab_ex_headers = [];&lt;br /&gt;
			var tab_locations = [];&lt;br /&gt;
			var default_tab = 0;&lt;br /&gt;
				&lt;br /&gt;
			var tabber_id = $(this).attr(&amp;quot;data-tabber-id&amp;quot;);&lt;br /&gt;
			if (tabber_id === undefined) tabber_id = String(tabber_i);&lt;br /&gt;
				&lt;br /&gt;
			$(this).children(&amp;quot;.tabberex-tab&amp;quot;).each(function(i) {&lt;br /&gt;
				console.log(&#039;Processing head tab &#039; + tabber_id + &#039; &#039; + String(i));&lt;br /&gt;
				var tab_details = process_tabber_head_tab(this, i);&lt;br /&gt;
				console.log(&#039;Processing complete&#039;);&lt;br /&gt;
				tab_headers[i] = tab_details.header;&lt;br /&gt;
				tab_ex_headers[i] = tab_details.ex_header;&lt;br /&gt;
				if (tab_details.default)&lt;br /&gt;
					default_tab = i;&lt;br /&gt;
				tab_locations[i] = tab_details.location;&lt;br /&gt;
				$(this).detach();&lt;br /&gt;
			});&lt;br /&gt;
			&lt;br /&gt;
			// Insert tabs into DOM&lt;br /&gt;
			tabberex_buildTabHead(this, tabber_id, tab_headers, tab_ex_headers, tab_locations);&lt;br /&gt;
			if (default_tabs[tabber_id] === undefined)&lt;br /&gt;
				default_tabs[tabber_id] = default_tab;&lt;br /&gt;
			tabber_ids.push(tabber_id);&lt;br /&gt;
			tabber_i++;&lt;br /&gt;
		});&lt;br /&gt;
		&lt;br /&gt;
		$($(&amp;quot;.tabberex-body&amp;quot;).get().reverse()).each(function() {&lt;br /&gt;
			$(this).children().css(&amp;quot;display&amp;quot;, &amp;quot;none&amp;quot;);&lt;br /&gt;
		});&lt;br /&gt;
		&lt;br /&gt;
		$($(&amp;quot;.tabberex&amp;quot;).get().reverse()).each(function() {&lt;br /&gt;
			var tab_headers = [];&lt;br /&gt;
			var tab_ex_headers = [];&lt;br /&gt;
			var tab_locations = [];&lt;br /&gt;
			var default_tab = 0;&lt;br /&gt;
			var tab_contents = [];&lt;br /&gt;
			&lt;br /&gt;
			var tabber_id = $(this).attr(&amp;quot;data-tabber-id&amp;quot;);&lt;br /&gt;
			if (tabber_id === undefined) tabber_id = String(tabber_i);&lt;br /&gt;
            $(this).attr(&amp;quot;data-tabber-id&amp;quot;, tabber_id);&lt;br /&gt;
&lt;br /&gt;
            var tabber_head = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
            $(tabber_head).addClass(&amp;quot;tabberex-head&amp;quot;).attr(&amp;quot;data-tabber-id&amp;quot;, tabber_id);&lt;br /&gt;
            $(this).removeClass(&amp;quot;tabberex&amp;quot;).addClass(&amp;quot;tabberex-body&amp;quot;);&lt;br /&gt;
			&lt;br /&gt;
			$(this).children(&amp;quot;.tabberex-tab&amp;quot;).each(function(i) {&lt;br /&gt;
				console.log(&#039;Processing head tab &#039; + tabber_id + &#039; &#039; + String(i));&lt;br /&gt;
				var tab_details = process_tabber_head_tab(this, i);&lt;br /&gt;
				console.log(&#039;Processing complete&#039;);&lt;br /&gt;
				tab_headers[i] = tab_details.header;&lt;br /&gt;
				tab_ex_headers[i] = tab_details.ex_header;&lt;br /&gt;
				if (tab_details.default)&lt;br /&gt;
					default_tab = i;&lt;br /&gt;
				tab_locations[i] = tab_details.location;&lt;br /&gt;
				&lt;br /&gt;
				// Get tab content&lt;br /&gt;
				$(this).css(&amp;quot;display&amp;quot;, &amp;quot;none&amp;quot;);&lt;br /&gt;
				tab_contents[i] = $(this);&lt;br /&gt;
			});&lt;br /&gt;
&lt;br /&gt;
            tabberex_buildTabHead(tabber_head, tabber_id, tab_headers, tab_ex_headers, tab_locations);&lt;br /&gt;
			if (default_tabs[tabber_id] === undefined)&lt;br /&gt;
				default_tabs[tabber_id] = default_tab;&lt;br /&gt;
            $(tabber_head).insertBefore(this);&lt;br /&gt;
			tabber_ids.push(tabber_id);&lt;br /&gt;
			tabber_i++;&lt;br /&gt;
		});&lt;br /&gt;
		&lt;br /&gt;
		// Select default tabs&lt;br /&gt;
		for (var i in tabber_ids)&lt;br /&gt;
		{&lt;br /&gt;
			tabberex_showTab(tabber_ids[i], default_tabs[tabber_ids[i]] + 1);&lt;br /&gt;
		}&lt;br /&gt;
	};&lt;br /&gt;
 &lt;br /&gt;
	mw.hook(&amp;quot;wikipage.content&amp;quot;).add(process_tabbers);&lt;br /&gt;
}(this, jQuery, mediaWiki));&lt;br /&gt;
/*&lt;br /&gt;
 * @title           SoundcloudPlayer.js&lt;br /&gt;
 * @version         1.1.2&lt;br /&gt;
 * @description     Add support for soundcloud players&lt;br /&gt;
 * @author          Himmalerin&lt;br /&gt;
 * @license         CC-BY-SA-3.0&lt;br /&gt;
 */&lt;br /&gt;
(function () {&lt;br /&gt;
	// Build the iframe&lt;br /&gt;
	const scPlayer = function (data) {&lt;br /&gt;
		const widget = document.createElement(&#039;iframe&#039;);&lt;br /&gt;
&lt;br /&gt;
		widget.classList.add(&#039;soundcloud-player&#039;);&lt;br /&gt;
&lt;br /&gt;
		widget.src =&lt;br /&gt;
			&#039;https://w.soundcloud.com/player/?show_artwork=false&amp;amp;url=&#039; +&lt;br /&gt;
			encodeURI(data.src);&lt;br /&gt;
&lt;br /&gt;
		// If data-color is set add the value to the iframe&lt;br /&gt;
		if (data.color) widget.src += &#039;&amp;amp;color=&#039; + encodeURIComponent(data.color);&lt;br /&gt;
		// If data-width/height are set add that value to the iframe&lt;br /&gt;
		if (data.width) widget.width = data.width;&lt;br /&gt;
		if (data.height) widget.height = data.height;&lt;br /&gt;
&lt;br /&gt;
		return widget;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	const scParseTags = function ($content) {&lt;br /&gt;
		// Get all instances of the soundcloud class&lt;br /&gt;
		const scTags = $content.find(&#039;.soundcloud&#039;);&lt;br /&gt;
&lt;br /&gt;
		// For each instance of the soundcloud class run scPlayer&lt;br /&gt;
		for (var i = 0; i &amp;lt; scTags.length; i++) {&lt;br /&gt;
			scTags[i].replaceWith(scPlayer(scTags[i].dataset));&lt;br /&gt;
		}&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	mw.hook(&#039;wikipage.content&#039;).add(function ($content) {&lt;br /&gt;
		scParseTags($content);&lt;br /&gt;
	});&lt;br /&gt;
})();&lt;br /&gt;
/*&lt;br /&gt;
https://dev.fandom.com/wiki/MediaWiki:CopyText/code.js&lt;br /&gt;
 */&lt;br /&gt;
(function () {&lt;br /&gt;
    if (window.CopyTextLoaded) {&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
    window.CopyTextLoaded = true;&lt;br /&gt;
    mw.hook(&#039;dev.i18n&#039;).add(function (i18n) {&lt;br /&gt;
        i18n.loadMessages(&#039;CopyText&#039;).done(function (i18n) {&lt;br /&gt;
            function showSuccess() {&lt;br /&gt;
                if (window.BannerNotification) {&lt;br /&gt;
                    new BannerNotification(i18n.msg(&#039;success&#039;).escape(), &#039;confirm&#039;, null, 5000).show();&lt;br /&gt;
                } else {&lt;br /&gt;
                    mw.notify(i18n.msg(&#039;success&#039;).plain());&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            $(&#039;body&#039;).on(&#039;click&#039;, &#039;.copy-to-clipboard-button&#039;, function(e){&lt;br /&gt;
                var text = $(this).data(&#039;text&#039;),&lt;br /&gt;
                $input = $(&#039;&amp;lt;textarea&amp;gt;&#039;, { type: &#039;text&#039; })&lt;br /&gt;
                    .val($(&#039;.copy-to-clipboard-text&#039;).filter(function() {&lt;br /&gt;
                        return $(this).data(&#039;text&#039;) == text;&lt;br /&gt;
                    }).first().text())&lt;br /&gt;
                    .appendTo(&#039;body&#039;)&lt;br /&gt;
                    .select();&lt;br /&gt;
                var success = document.execCommand(&#039;Copy&#039;);&lt;br /&gt;
                $input.remove();&lt;br /&gt;
                if (success) {&lt;br /&gt;
                    showSuccess();&lt;br /&gt;
                } else {&lt;br /&gt;
                    if (window.navigator &amp;amp;&amp;amp; navigator.clipboard &amp;amp;&amp;amp; navigator.clipboard.writeText) {&lt;br /&gt;
                        navigator.clipboard.writeText(text).then(function() {&lt;br /&gt;
                            showSuccess();&lt;br /&gt;
                        });&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
    importArticle({&lt;br /&gt;
        type: &#039;script&#039;,&lt;br /&gt;
        article: &#039;u:dev:MediaWiki:I18n-js/code.js&#039;&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
/**&lt;br /&gt;
 * SpoilerAlert&lt;br /&gt;
 * documentation at: https://dev.fandom.com/wiki/SpoilerAlert&lt;br /&gt;
 * © Peter Coester, 2012&lt;br /&gt;
 */&lt;br /&gt;
/* jshint curly:false */&lt;br /&gt;
(function ($, mw) {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    var config = mw.config.get([&lt;br /&gt;
        &#039;wgArticleId&#039;,&lt;br /&gt;
        &#039;wgNamespaceNumber&#039;,&lt;br /&gt;
        &#039;wgScriptPath&#039;,&lt;br /&gt;
        &#039;wgServer&#039;&lt;br /&gt;
    ]), $element = $(&#039;#SpoilerAlert&#039;);&lt;br /&gt;
    if (&lt;br /&gt;
        config.wgNamespaceNumber === -1 ||&lt;br /&gt;
        config.wgArticleId === 0 ||&lt;br /&gt;
        $element.length !== 1&lt;br /&gt;
    ) {&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
    var SpoilerAlert = {&lt;br /&gt;
        config: $.extend({&lt;br /&gt;
            fadeDelay: 1600&lt;br /&gt;
        }, window.SpoilerAlertJS),&lt;br /&gt;
        toLoad: 3,&lt;br /&gt;
        preload: function() {&lt;br /&gt;
            if (--this.toLoad === 0) {&lt;br /&gt;
                window.dev.i18n.loadMessages(&#039;SpoilerAlert&#039;)&lt;br /&gt;
                    .then(this.init.bind(this));&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        init: function(i18n) {&lt;br /&gt;
            this.ids = JSON.parse(window.localStorage.getItem(&#039;SpoilerAlert&#039;)) || [];&lt;br /&gt;
            [&#039;yes&#039;, &#039;no&#039;, &#039;question&#039;].forEach(function(msg) {&lt;br /&gt;
                if (!this.config[msg]) {&lt;br /&gt;
                    this.config[msg] = i18n.msg(msg).plain();&lt;br /&gt;
                }&lt;br /&gt;
            }, this);&lt;br /&gt;
            if (this.valid()) {&lt;br /&gt;
                this.insertUI();&lt;br /&gt;
            }&lt;br /&gt;
            this.insertResetButton(i18n);&lt;br /&gt;
        },&lt;br /&gt;
        valid: function() {&lt;br /&gt;
            return $element.height() &amp;lt; $(&#039;#mw-content-text&#039;).height() / 2 &amp;amp;&amp;amp;&lt;br /&gt;
                   this.ids.indexOf(config.wgArticleId) === -1;&lt;br /&gt;
        },&lt;br /&gt;
        insertUI: function() {&lt;br /&gt;
            var pos = $element.position();&lt;br /&gt;
            $(&#039;#mw-content-text&#039;).append(&lt;br /&gt;
                window.dev.ui({&lt;br /&gt;
                    type: &#039;div&#039;,&lt;br /&gt;
                    attr: {&lt;br /&gt;
                        id: &#039;SpoilerAlertCover&#039;&lt;br /&gt;
                    },&lt;br /&gt;
                    style: {&lt;br /&gt;
                        width: $element.width() + &#039;px&#039;,&lt;br /&gt;
                        height: $element.height() + &#039;px&#039;,&lt;br /&gt;
                        top: pos.top + &#039;px&#039;,&lt;br /&gt;
                        left: pos.left + &#039;px&#039;&lt;br /&gt;
                    },&lt;br /&gt;
                    children: [&lt;br /&gt;
                        {&lt;br /&gt;
                            type: &#039;p&#039;,&lt;br /&gt;
                            attr: {&lt;br /&gt;
                                id: &#039;SpoilerAlertText&#039;&lt;br /&gt;
                            },&lt;br /&gt;
                            text: this.config.question&lt;br /&gt;
                        },&lt;br /&gt;
                        {&lt;br /&gt;
                            type: &#039;span&#039;,&lt;br /&gt;
                            attr: {&lt;br /&gt;
                                id: &#039;SpoilerAlertYes&#039;,&lt;br /&gt;
                                &#039;class&#039;: &#039;wds-button&#039;&lt;br /&gt;
                            },&lt;br /&gt;
                            events: {&lt;br /&gt;
                                click: this.yes.bind(this)&lt;br /&gt;
                            },&lt;br /&gt;
                            text: this.config.yes&lt;br /&gt;
                        },&lt;br /&gt;
                        {&lt;br /&gt;
                            type: &#039;span&#039;,&lt;br /&gt;
                            attr: {&lt;br /&gt;
                                id: &#039;SpoilerAlertNo&#039;,&lt;br /&gt;
                                &#039;class&#039;: &#039;wds-button&#039;&lt;br /&gt;
                            },&lt;br /&gt;
                            events: {&lt;br /&gt;
                                click: this.no.bind(this)&lt;br /&gt;
                            },&lt;br /&gt;
                            text: this.config.no&lt;br /&gt;
                        }&lt;br /&gt;
                    ]&lt;br /&gt;
                })&lt;br /&gt;
            );&lt;br /&gt;
        },&lt;br /&gt;
        insertResetButton: function(i18n) {&lt;br /&gt;
            window.dev.placement.loader.util({&lt;br /&gt;
                content: {&lt;br /&gt;
                    type: &#039;li&#039;,&lt;br /&gt;
                    children: [&lt;br /&gt;
                        {&lt;br /&gt;
                            type: &#039;a&#039;,&lt;br /&gt;
                            attr: {&lt;br /&gt;
                                href: &#039;#&#039;&lt;br /&gt;
                            },&lt;br /&gt;
                            text: i18n.msg(&#039;reset&#039;).plain(),&lt;br /&gt;
                            events: {&lt;br /&gt;
                                click: this.reset&lt;br /&gt;
                            }&lt;br /&gt;
                        }&lt;br /&gt;
                    ]&lt;br /&gt;
                },&lt;br /&gt;
                element: &#039;tools&#039;,&lt;br /&gt;
                script: &#039;SpoilerAlert&#039;,&lt;br /&gt;
                type: &#039;append&#039;&lt;br /&gt;
            });&lt;br /&gt;
        },&lt;br /&gt;
        yes: function() {&lt;br /&gt;
            this.fadeOut(&#039;#SpoilerAlertCover&#039;);&lt;br /&gt;
            this.ids.push(config.wgArticleId);&lt;br /&gt;
            window.localStorage.setItem(&#039;SpoilerAlert&#039;, JSON.stringify(this.ids));&lt;br /&gt;
        },&lt;br /&gt;
        no: function() {&lt;br /&gt;
            this.fadeOut(&#039;#SpoilerAlertText, #SpoilerAlertYes, #SpoilerAlertNo&#039;);&lt;br /&gt;
            if (this.config.back) {&lt;br /&gt;
                if (window.history &amp;amp;&amp;amp; window.history.length &amp;gt; 1) {&lt;br /&gt;
                    window.history.back();&lt;br /&gt;
                } else {&lt;br /&gt;
                    location.href = config.wgServer + config.wgScriptPath;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        fadeOut: function(el) {&lt;br /&gt;
            $(el).fadeOut(this.config.fadeDelay, function() {&lt;br /&gt;
                $(this).remove();&lt;br /&gt;
            });&lt;br /&gt;
        },&lt;br /&gt;
        reset: function(event) {&lt;br /&gt;
            event.preventDefault();&lt;br /&gt;
            window.localStorage.setItem(&#039;SpoilerAlert&#039;, JSON.stringify([]));&lt;br /&gt;
            window.location.reload();&lt;br /&gt;
        }&lt;br /&gt;
    };&lt;br /&gt;
    if (!window.dev || !window.dev.ui || !window.dev.i18n || !window.dev.placement) {&lt;br /&gt;
        importArticles({&lt;br /&gt;
            type: &#039;script&#039;,&lt;br /&gt;
            articles: [&lt;br /&gt;
                &#039;u:dev:MediaWiki:I18n-js/code.js&#039;,&lt;br /&gt;
                &#039;u:dev:MediaWiki:Placement.js&#039;,&lt;br /&gt;
                &#039;u:dev:MediaWiki:UI-js/code.js&#039;&lt;br /&gt;
            ]&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
    importArticle({&lt;br /&gt;
        type: &#039;style&#039;,&lt;br /&gt;
        article: &#039;u:dev:MediaWiki:SpoilerAlert.css&#039;&lt;br /&gt;
    });&lt;br /&gt;
    mw.hook(&#039;dev.ui&#039;).add(SpoilerAlert.preload.bind(SpoilerAlert));&lt;br /&gt;
    mw.hook(&#039;dev.i18n&#039;).add(SpoilerAlert.preload.bind(SpoilerAlert));&lt;br /&gt;
    mw.hook(&#039;dev.placement&#039;).add(SpoilerAlert.preload.bind(SpoilerAlert));&lt;br /&gt;
})(window.jQuery, window.mediaWiki);&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=User:Pynappo&amp;diff=1472</id>
		<title>User:Pynappo</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=User:Pynappo&amp;diff=1472"/>
		<updated>2025-04-06T04:56:14Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: Created page with &amp;quot;{{spoiler|block=y|Really long spoiler that spans multiple lines  It even has a bulleted list inside it: * Item a * Item b * Item c }}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{spoiler|block=y|Really long spoiler that spans multiple lines&lt;br /&gt;
&lt;br /&gt;
It even has a bulleted list inside it:&lt;br /&gt;
* Item a&lt;br /&gt;
* Item b&lt;br /&gt;
* [[Special:Random|Item c]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=Template:Spoiler&amp;diff=1471</id>
		<title>Template:Spoiler</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=Template:Spoiler&amp;diff=1471"/>
		<updated>2025-04-06T04:54:27Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: Created page with &amp;quot;&amp;lt;includeonly&amp;gt;&amp;lt;!--   Base code written for Terraria Wiki: https://terraria.wiki.gg/wiki/Template:Spoiler  NOTE: This template needs a JavaScript function in MediaWiki:Common.js or MediaWiki:Vector.js to work, as well as styling in MediaWiki:Common.css or MediaWiki:Vector.css for the related classes  --&amp;gt;{{#vardefine:element|{{#if:{{{block|}}}|div|span}}}}&amp;lt;!--  --&amp;gt;&amp;lt;{{#var:element}} class=&amp;quot;spoiler-content {{{class|}}}&amp;quot; id=&amp;quot;{{{id|}}}&amp;quot; style=&amp;quot;{{{css|{{{style|}}}}}}&amp;quot;&amp;gt;&amp;lt;{{#var:el...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;!-- &lt;br /&gt;
&lt;br /&gt;
Base code written for Terraria Wiki: https://terraria.wiki.gg/wiki/Template:Spoiler&lt;br /&gt;
&lt;br /&gt;
NOTE: This template needs a JavaScript function in MediaWiki:Common.js or MediaWiki:Vector.js to work, as well as styling in MediaWiki:Common.css or MediaWiki:Vector.css for the related classes&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;{{#vardefine:element|{{#if:{{{block|}}}|div|span}}}}&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&amp;lt;{{#var:element}} class=&amp;quot;spoiler-content {{{class|}}}&amp;quot; id=&amp;quot;{{{id|}}}&amp;quot; style=&amp;quot;{{{css|{{{style|}}}}}}&amp;quot;&amp;gt;&amp;lt;{{#var:element}}&amp;gt;{{{1|}}}&amp;lt;/{{#var:element}}&amp;gt;&amp;lt;/{{#var:element}}&amp;gt;&amp;lt;!-- &lt;br /&gt;
--&amp;gt;[[Category:Pages with spoilers]]&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{doc}}&lt;br /&gt;
[[Category:Formatting templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=MediaWiki:Common.css&amp;diff=1470</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=MediaWiki:Common.css&amp;diff=1470"/>
		<updated>2025-04-06T04:53:09Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: Replaced content with &amp;quot;/********* Template:Spoiler *********/ .spoiler-content {   background-color: var(--wiki-content-dynamic-color); /* fallback */   background-color: color-mix(in srgb, var(--wiki-content-dynamic-color) 50%, transparent);   transition: all 0.3s;   cursor: pointer;   overflow:auto; }  .spoiler-content &amp;gt; * {   pointer-events:none;   opacity: 0;   transition: all 0.3s; }  .spoiler-content.show {   background-color: transparent; }  .spoiler-content.show &amp;gt; * {   pointer...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/********* [[Template:Spoiler]] *********/&lt;br /&gt;
.spoiler-content {&lt;br /&gt;
  background-color: var(--wiki-content-dynamic-color); /* fallback */&lt;br /&gt;
  background-color: color-mix(in srgb, var(--wiki-content-dynamic-color) 50%, transparent);&lt;br /&gt;
  transition: all 0.3s;&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
  overflow:auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.spoiler-content &amp;gt; * {&lt;br /&gt;
  pointer-events:none;&lt;br /&gt;
  opacity: 0;&lt;br /&gt;
  transition: all 0.3s;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.spoiler-content.show {&lt;br /&gt;
  background-color: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.spoiler-content.show &amp;gt; * {&lt;br /&gt;
  pointer-events:unset;&lt;br /&gt;
  opacity: 1;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=MediaWiki:Common.js&amp;diff=1469</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=MediaWiki:Common.js&amp;diff=1469"/>
		<updated>2025-04-06T04:51:38Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/*&lt;br /&gt;
 * Name:        WhatLinksHere&lt;br /&gt;
 * Version:     v1.1&lt;br /&gt;
 * Author:      KockaAdmiralac &amp;lt;wikia@kocka.tech&amp;gt;&lt;br /&gt;
 * Description: Adds a link to Special:WhatLinksHere below the edit dropdown&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
    var $list = $(&#039;.page-header__contribution-buttons .wds-list, .page-header__actions .wds-list, .UserProfileActionButton .WikiaMenuElement&#039;);&lt;br /&gt;
&lt;br /&gt;
    if (!$list.length || window.WhatLinksHereLoaded) {&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
    window.WhatLinksHereLoaded = true;&lt;br /&gt;
&lt;br /&gt;
    var config = mw.config.get([&lt;br /&gt;
        &#039;wgPageName&#039;,&lt;br /&gt;
        &#039;wgUserLanguage&#039;&lt;br /&gt;
    ]);&lt;br /&gt;
&lt;br /&gt;
    mw.hook(&#039;dev.fetch&#039;).add(function(fetch) {&lt;br /&gt;
        $.when(&lt;br /&gt;
            fetch(&#039;whatlinkshere&#039;),&lt;br /&gt;
            mw.loader.using(&#039;mediawiki.util&#039;)&lt;br /&gt;
        ).then(function(text) {&lt;br /&gt;
            var url = mw.util.getUrl(&#039;Special:WhatLinksHere/&#039; + config.wgPageName);&lt;br /&gt;
            $list.append(&lt;br /&gt;
                $(&#039;&amp;lt;li&amp;gt;&#039;, {&lt;br /&gt;
                    id: &#039;ca-whatlinkshere&#039;&lt;br /&gt;
                }).append(&lt;br /&gt;
                    $(&#039;&amp;lt;a&amp;gt;&#039;, {&lt;br /&gt;
                        href: url,&lt;br /&gt;
                        text: text&lt;br /&gt;
                    })&lt;br /&gt;
                )&lt;br /&gt;
            );&lt;br /&gt;
            if (mw.util.getParamValue(&#039;redirect&#039;) === &#039;no&#039;) {&lt;br /&gt;
                $(&#039;.redirectText&#039;).append(&lt;br /&gt;
                    $(&#039;&amp;lt;br&amp;gt;&#039;),&lt;br /&gt;
                    $(&#039;&amp;lt;span&amp;gt;&#039;, {&lt;br /&gt;
                        id: &#039;redirectWLH&#039;&lt;br /&gt;
                    }).append(&lt;br /&gt;
                        &#039;→ &#039;,&lt;br /&gt;
                        $(&#039;&amp;lt;a&amp;gt;&#039;, {&lt;br /&gt;
                            &#039;class&#039;: &#039;redirectWLH-link&#039;,&lt;br /&gt;
                            href: url,&lt;br /&gt;
                            text: text&lt;br /&gt;
                        })&lt;br /&gt;
                    )&lt;br /&gt;
                );&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
    importArticle({&lt;br /&gt;
        type: &#039;script&#039;,&lt;br /&gt;
        article: &#039;u:dev:MediaWiki:Fetch.js&#039;&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
// __NOWYSIWYG__&lt;br /&gt;
/**&lt;br /&gt;
 * TabberEX&lt;br /&gt;
 *&lt;br /&gt;
 * @version 2.3&lt;br /&gt;
 *&lt;br /&gt;
 * @author Jono99 &amp;lt;https://phigros.fandom.com/wiki/User:Jono99&amp;gt;&lt;br /&gt;
 *&lt;br /&gt;
 * documentation and examples at:&lt;br /&gt;
 * &amp;lt;https://dev.fandom.com/wiki/TabberEX&amp;gt;&lt;br /&gt;
 */&lt;br /&gt;
 &lt;br /&gt;
 (function (window, $, mw) {&lt;br /&gt;
	// Function called by tabs to switch tabs&lt;br /&gt;
	window.tabberex_switchTab = function(tabber_id, tab)&lt;br /&gt;
	{&lt;br /&gt;
		tabberex_hideAllTabs(tabber_id);&lt;br /&gt;
		tabberex_showTab(tabber_id, tab);&lt;br /&gt;
	};&lt;br /&gt;
 &lt;br /&gt;
	// Inject CSS&lt;br /&gt;
	(function() {&lt;br /&gt;
		var tabberex_css = document.createElement(&amp;quot;style&amp;quot;);&lt;br /&gt;
		tabberex_css.innerHTML = &amp;quot;/* CSS owned by FANDOM */\n.oo-ui-tabOptionWidget{display:inline-block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;vertical-align:bottom;align-items:center;color:color-mix(in srgb, var(--text-color) 75%, transparent);display:inline-flex;font-size:14px;font-weight:500;height:40px;letter-spacing:.5px;margin:0;padding:0 11px;-webkit-transition:var(--content-background-color) .3s,color .3s,var(--banner-color) .3s;-moz-transition:var(--content-background-color) .3s,color .3s,var(--banner-color) .3s;transition:var(--content-background-color) .3s,color .3s,var(--banner-color) .3s}.oo-ui-tabSelectWidget:not(.oo-ui-tabSelectWidget-framed) .oo-ui-tabOptionWidget{-webkit-transition:color .3s,box-shadow .3s;-moz-transition:color .3s,box-shadow .3s;transition:color .3s,box-shadow .3s;border-bottom:1px solid var(--banner-color)}.oo-ui-tabSelectWidget:not(.oo-ui-tabSelectWidget-framed) .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected{box-shadow:inset 0 -2px 0 0 var(--link-color);color:var(--link-color)}&amp;quot;;&lt;br /&gt;
		document.head.appendChild(tabberex_css);&lt;br /&gt;
	})();&lt;br /&gt;
		&lt;br /&gt;
	window.tabberex_showTab = function(tabber_id, i)&lt;br /&gt;
	{&lt;br /&gt;
		var base_selector = &amp;quot;[data-tabber-id=\&amp;quot;&amp;quot; + tabber_id + &amp;quot;\&amp;quot;]&amp;quot;;&lt;br /&gt;
		$(&amp;quot;.tabberex-head&amp;quot; + base_selector).children(&amp;quot;:nth-child(&amp;quot; + i + &amp;quot;)&amp;quot;)&lt;br /&gt;
		.addClass(&amp;quot;oo-ui-optionWidget-selected&amp;quot;)&lt;br /&gt;
		.css(&amp;quot;cursor&amp;quot;, &amp;quot;default&amp;quot;);&lt;br /&gt;
				&lt;br /&gt;
		$($(&amp;quot;.tabberex-body&amp;quot; + base_selector).children(&amp;quot;:nth-child(&amp;quot; + i + &amp;quot;)&amp;quot;).get()).each(function () {&lt;br /&gt;
            var display_value = $(this).attr(&amp;quot;data-tab-display&amp;quot;);&lt;br /&gt;
            if (display_value === undefined) display_value = &amp;quot;block&amp;quot;;&lt;br /&gt;
            $(this).css(&amp;quot;display&amp;quot;, display_value);&lt;br /&gt;
        });&lt;br /&gt;
	};&lt;br /&gt;
	 &lt;br /&gt;
	window.tabberex_hideTab = function(tabber_id, i)&lt;br /&gt;
	{&lt;br /&gt;
		var base_selector = &amp;quot;[data-tabber-id=\&amp;quot;&amp;quot; + tabber_id + &amp;quot;\&amp;quot;]&amp;quot;;&lt;br /&gt;
		$(&amp;quot;.tabberex-head&amp;quot; + base_selector).children(&amp;quot;:nth-child(&amp;quot; + i + &amp;quot;)&amp;quot;)&lt;br /&gt;
		.removeClass(&amp;quot;oo-ui-optionWidget-selected&amp;quot;)&lt;br /&gt;
		.css(&amp;quot;cursor&amp;quot;, &amp;quot;pointer&amp;quot;);&lt;br /&gt;
				&lt;br /&gt;
		$(&amp;quot;.tabberex-body&amp;quot; + base_selector).children(&amp;quot;:nth-child(&amp;quot; + i + &amp;quot;)&amp;quot;).css(&amp;quot;display&amp;quot;, &amp;quot;none&amp;quot;);&lt;br /&gt;
	};&lt;br /&gt;
			&lt;br /&gt;
	window.tabberex_hideAllTabs = function(tabber_id)&lt;br /&gt;
	{&lt;br /&gt;
		var base_selector = &amp;quot;[data-tabber-id=\&amp;quot;&amp;quot; + tabber_id + &amp;quot;\&amp;quot;]&amp;quot;;&lt;br /&gt;
		$(&amp;quot;.tabberex-head&amp;quot; + base_selector).children()&lt;br /&gt;
		.removeClass(&amp;quot;oo-ui-optionWidget-selected&amp;quot;)&lt;br /&gt;
		.css(&amp;quot;cursor&amp;quot;, &amp;quot;pointer&amp;quot;);&lt;br /&gt;
				&lt;br /&gt;
		$(&amp;quot;.tabberex-body&amp;quot; + base_selector).children().css(&amp;quot;display&amp;quot;, &amp;quot;none&amp;quot;);&lt;br /&gt;
	};&lt;br /&gt;
	&lt;br /&gt;
	var tabberex_buildTabHead = function(host_div, tabber_id, tab_headers, tab_ex_headers, tab_locations)&lt;br /&gt;
	{&lt;br /&gt;
		var tabber_head = host_div;&lt;br /&gt;
		tabber_head.innerHTML = &amp;quot;&amp;quot;;&lt;br /&gt;
		$(tabber_head).addClass(&amp;quot;tabberex-head oo-ui-widget oo-ui-widget-enabled oo-ui-selectWidget oo-ui-selectWidget-unpressed oo-ui-selectWidget-depressed oo-ui-tabSelectWidget&amp;quot;)&lt;br /&gt;
		.attr(&amp;quot;data-tabber-id&amp;quot;, tabber_id);&lt;br /&gt;
		for (var i = 0; i &amp;lt; tab_headers.length; i++)&lt;br /&gt;
		{&lt;br /&gt;
			console.log(&amp;quot;Building tab &amp;quot; + tabber_id + &amp;quot; &amp;quot; + String(i));&lt;br /&gt;
			var tab = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			$(tab).addClass(&amp;quot;oo-ui-widget oo-ui-widget-enabled oo-ui-labelElement oo-ui-optionWidget oo-ui-tabOptionWidget&amp;quot;)&lt;br /&gt;
			.css(&amp;quot;cursor&amp;quot;, &amp;quot;pointer&amp;quot;);&lt;br /&gt;
			if (tab_locations[i] === undefined)&lt;br /&gt;
				$(tab).attr(&amp;quot;onclick&amp;quot;, &amp;quot;tabberex_switchTab(\&amp;quot;&amp;quot; + mw.html.escape(tabber_id) + &amp;quot;\&amp;quot;, &amp;quot; + (i + 1) + &amp;quot;)&amp;quot;);&lt;br /&gt;
			else&lt;br /&gt;
				$(tab).attr(&amp;quot;onclick&amp;quot;, &amp;quot;location = \&amp;quot;&amp;quot; + mw.html.escape(tab_locations[i]) + &amp;quot;\&amp;quot;&amp;quot;);&lt;br /&gt;
			var tab_span = document.createElement(&amp;quot;span&amp;quot;);&lt;br /&gt;
			$(tab_span).addClass(&amp;quot;oo-ui-labelElement-label&amp;quot;);&lt;br /&gt;
			if (tab_ex_headers[i] === undefined)&lt;br /&gt;
				$(tab_span).text(tab_headers[i]);&lt;br /&gt;
			else&lt;br /&gt;
			{&lt;br /&gt;
				console.log(&amp;quot;EX Header present&amp;quot;);&lt;br /&gt;
				for (var attr in tab_ex_headers[i][1])&lt;br /&gt;
					tab_span.setAttribute(attr, tab_ex_headers[i][1][attr]);&lt;br /&gt;
				$(tab_span).html(tab_ex_headers[i][0]);&lt;br /&gt;
			}&lt;br /&gt;
			tab.appendChild(tab_span);&lt;br /&gt;
			tabber_head.appendChild(tab);&lt;br /&gt;
			console.log(&amp;quot;Successfully built tab&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		return tabber_head.outerHTML;&lt;br /&gt;
	};&lt;br /&gt;
	&lt;br /&gt;
	var process_tabber_head_tab = function(tab_element, i)&lt;br /&gt;
	{&lt;br /&gt;
		// Get header&lt;br /&gt;
		var header = $(tab_element).attr(&amp;quot;data-tab-header&amp;quot;);&lt;br /&gt;
		if (header === undefined) header = i + 1;&lt;br /&gt;
		&lt;br /&gt;
		// Get ex header&lt;br /&gt;
		var ex_header;&lt;br /&gt;
		function get_ex_header(_) {&lt;br /&gt;
			console.log(&#039;EX Header found&#039;);&lt;br /&gt;
			var attributes = {};&lt;br /&gt;
			var attrs = this.getAttributeNames();&lt;br /&gt;
			for (var i in attrs)&lt;br /&gt;
				attributes[attrs[i]] = this.getAttribute(attrs[i]);&lt;br /&gt;
			ex_header = [$(this).html(), attributes];&lt;br /&gt;
			$(this).remove();&lt;br /&gt;
		}&lt;br /&gt;
		$(tab_element).children(&amp;quot;p&amp;quot;).children(&amp;quot;span.tabberex-tab-header&amp;quot;).each(get_ex_header);&lt;br /&gt;
		$(tab_element).children(&amp;quot;span.tabberex-tab-header&amp;quot;).each(get_ex_header);&lt;br /&gt;
		&lt;br /&gt;
		// Get default&lt;br /&gt;
		var is_default = false;&lt;br /&gt;
		if ($(tab_element).hasClass(&amp;quot;tabberex-tab-default&amp;quot;))&lt;br /&gt;
			is_default = true;&lt;br /&gt;
		&lt;br /&gt;
		// Get tab location&lt;br /&gt;
		var tab_location = $(this).attr(&amp;quot;data-tab-location&amp;quot;);&lt;br /&gt;
		&lt;br /&gt;
		return {&amp;quot;header&amp;quot;: header, &amp;quot;ex_header&amp;quot;: ex_header, &amp;quot;default&amp;quot;: is_default, &amp;quot;location&amp;quot;: tab_location};&lt;br /&gt;
	};&lt;br /&gt;
	&lt;br /&gt;
	var process_tabbers = function()&lt;br /&gt;
	{&lt;br /&gt;
		console.log(&#039;TabberEX started&#039;);&lt;br /&gt;
		var tabber_i = 0;&lt;br /&gt;
		var default_tabs = {};&lt;br /&gt;
		var tabber_ids = [];&lt;br /&gt;
		// The tabs are iterated through backwards to properly handle tabbers that are nested within other tabbers&lt;br /&gt;
		$($(&amp;quot;.tabberex-head&amp;quot;).get().reverse()).each(function() {&lt;br /&gt;
			var tab_headers = [];&lt;br /&gt;
			var tab_ex_headers = [];&lt;br /&gt;
			var tab_locations = [];&lt;br /&gt;
			var default_tab = 0;&lt;br /&gt;
				&lt;br /&gt;
			var tabber_id = $(this).attr(&amp;quot;data-tabber-id&amp;quot;);&lt;br /&gt;
			if (tabber_id === undefined) tabber_id = String(tabber_i);&lt;br /&gt;
				&lt;br /&gt;
			$(this).children(&amp;quot;.tabberex-tab&amp;quot;).each(function(i) {&lt;br /&gt;
				console.log(&#039;Processing head tab &#039; + tabber_id + &#039; &#039; + String(i));&lt;br /&gt;
				var tab_details = process_tabber_head_tab(this, i);&lt;br /&gt;
				console.log(&#039;Processing complete&#039;);&lt;br /&gt;
				tab_headers[i] = tab_details.header;&lt;br /&gt;
				tab_ex_headers[i] = tab_details.ex_header;&lt;br /&gt;
				if (tab_details.default)&lt;br /&gt;
					default_tab = i;&lt;br /&gt;
				tab_locations[i] = tab_details.location;&lt;br /&gt;
				$(this).detach();&lt;br /&gt;
			});&lt;br /&gt;
			&lt;br /&gt;
			// Insert tabs into DOM&lt;br /&gt;
			tabberex_buildTabHead(this, tabber_id, tab_headers, tab_ex_headers, tab_locations);&lt;br /&gt;
			if (default_tabs[tabber_id] === undefined)&lt;br /&gt;
				default_tabs[tabber_id] = default_tab;&lt;br /&gt;
			tabber_ids.push(tabber_id);&lt;br /&gt;
			tabber_i++;&lt;br /&gt;
		});&lt;br /&gt;
		&lt;br /&gt;
		$($(&amp;quot;.tabberex-body&amp;quot;).get().reverse()).each(function() {&lt;br /&gt;
			$(this).children().css(&amp;quot;display&amp;quot;, &amp;quot;none&amp;quot;);&lt;br /&gt;
		});&lt;br /&gt;
		&lt;br /&gt;
		$($(&amp;quot;.tabberex&amp;quot;).get().reverse()).each(function() {&lt;br /&gt;
			var tab_headers = [];&lt;br /&gt;
			var tab_ex_headers = [];&lt;br /&gt;
			var tab_locations = [];&lt;br /&gt;
			var default_tab = 0;&lt;br /&gt;
			var tab_contents = [];&lt;br /&gt;
			&lt;br /&gt;
			var tabber_id = $(this).attr(&amp;quot;data-tabber-id&amp;quot;);&lt;br /&gt;
			if (tabber_id === undefined) tabber_id = String(tabber_i);&lt;br /&gt;
            $(this).attr(&amp;quot;data-tabber-id&amp;quot;, tabber_id);&lt;br /&gt;
&lt;br /&gt;
            var tabber_head = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
            $(tabber_head).addClass(&amp;quot;tabberex-head&amp;quot;).attr(&amp;quot;data-tabber-id&amp;quot;, tabber_id);&lt;br /&gt;
            $(this).removeClass(&amp;quot;tabberex&amp;quot;).addClass(&amp;quot;tabberex-body&amp;quot;);&lt;br /&gt;
			&lt;br /&gt;
			$(this).children(&amp;quot;.tabberex-tab&amp;quot;).each(function(i) {&lt;br /&gt;
				console.log(&#039;Processing head tab &#039; + tabber_id + &#039; &#039; + String(i));&lt;br /&gt;
				var tab_details = process_tabber_head_tab(this, i);&lt;br /&gt;
				console.log(&#039;Processing complete&#039;);&lt;br /&gt;
				tab_headers[i] = tab_details.header;&lt;br /&gt;
				tab_ex_headers[i] = tab_details.ex_header;&lt;br /&gt;
				if (tab_details.default)&lt;br /&gt;
					default_tab = i;&lt;br /&gt;
				tab_locations[i] = tab_details.location;&lt;br /&gt;
				&lt;br /&gt;
				// Get tab content&lt;br /&gt;
				$(this).css(&amp;quot;display&amp;quot;, &amp;quot;none&amp;quot;);&lt;br /&gt;
				tab_contents[i] = $(this);&lt;br /&gt;
			});&lt;br /&gt;
&lt;br /&gt;
            tabberex_buildTabHead(tabber_head, tabber_id, tab_headers, tab_ex_headers, tab_locations);&lt;br /&gt;
			if (default_tabs[tabber_id] === undefined)&lt;br /&gt;
				default_tabs[tabber_id] = default_tab;&lt;br /&gt;
            $(tabber_head).insertBefore(this);&lt;br /&gt;
			tabber_ids.push(tabber_id);&lt;br /&gt;
			tabber_i++;&lt;br /&gt;
		});&lt;br /&gt;
		&lt;br /&gt;
		// Select default tabs&lt;br /&gt;
		for (var i in tabber_ids)&lt;br /&gt;
		{&lt;br /&gt;
			tabberex_showTab(tabber_ids[i], default_tabs[tabber_ids[i]] + 1);&lt;br /&gt;
		}&lt;br /&gt;
	};&lt;br /&gt;
 &lt;br /&gt;
	mw.hook(&amp;quot;wikipage.content&amp;quot;).add(process_tabbers);&lt;br /&gt;
}(this, jQuery, mediaWiki));&lt;br /&gt;
/*&lt;br /&gt;
 * @title           SoundcloudPlayer.js&lt;br /&gt;
 * @version         1.1.2&lt;br /&gt;
 * @description     Add support for soundcloud players&lt;br /&gt;
 * @author          Himmalerin&lt;br /&gt;
 * @license         CC-BY-SA-3.0&lt;br /&gt;
 */&lt;br /&gt;
(function () {&lt;br /&gt;
	// Build the iframe&lt;br /&gt;
	const scPlayer = function (data) {&lt;br /&gt;
		const widget = document.createElement(&#039;iframe&#039;);&lt;br /&gt;
&lt;br /&gt;
		widget.classList.add(&#039;soundcloud-player&#039;);&lt;br /&gt;
&lt;br /&gt;
		widget.src =&lt;br /&gt;
			&#039;https://w.soundcloud.com/player/?show_artwork=false&amp;amp;url=&#039; +&lt;br /&gt;
			encodeURI(data.src);&lt;br /&gt;
&lt;br /&gt;
		// If data-color is set add the value to the iframe&lt;br /&gt;
		if (data.color) widget.src += &#039;&amp;amp;color=&#039; + encodeURIComponent(data.color);&lt;br /&gt;
		// If data-width/height are set add that value to the iframe&lt;br /&gt;
		if (data.width) widget.width = data.width;&lt;br /&gt;
		if (data.height) widget.height = data.height;&lt;br /&gt;
&lt;br /&gt;
		return widget;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	const scParseTags = function ($content) {&lt;br /&gt;
		// Get all instances of the soundcloud class&lt;br /&gt;
		const scTags = $content.find(&#039;.soundcloud&#039;);&lt;br /&gt;
&lt;br /&gt;
		// For each instance of the soundcloud class run scPlayer&lt;br /&gt;
		for (var i = 0; i &amp;lt; scTags.length; i++) {&lt;br /&gt;
			scTags[i].replaceWith(scPlayer(scTags[i].dataset));&lt;br /&gt;
		}&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	mw.hook(&#039;wikipage.content&#039;).add(function ($content) {&lt;br /&gt;
		scParseTags($content);&lt;br /&gt;
	});&lt;br /&gt;
})();&lt;br /&gt;
/*&lt;br /&gt;
https://dev.fandom.com/wiki/MediaWiki:CopyText/code.js&lt;br /&gt;
 */&lt;br /&gt;
(function () {&lt;br /&gt;
    if (window.CopyTextLoaded) {&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
    window.CopyTextLoaded = true;&lt;br /&gt;
    mw.hook(&#039;dev.i18n&#039;).add(function (i18n) {&lt;br /&gt;
        i18n.loadMessages(&#039;CopyText&#039;).done(function (i18n) {&lt;br /&gt;
            function showSuccess() {&lt;br /&gt;
                if (window.BannerNotification) {&lt;br /&gt;
                    new BannerNotification(i18n.msg(&#039;success&#039;).escape(), &#039;confirm&#039;, null, 5000).show();&lt;br /&gt;
                } else {&lt;br /&gt;
                    mw.notify(i18n.msg(&#039;success&#039;).plain());&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            $(&#039;body&#039;).on(&#039;click&#039;, &#039;.copy-to-clipboard-button&#039;, function(e){&lt;br /&gt;
                var text = $(this).data(&#039;text&#039;),&lt;br /&gt;
                $input = $(&#039;&amp;lt;textarea&amp;gt;&#039;, { type: &#039;text&#039; })&lt;br /&gt;
                    .val($(&#039;.copy-to-clipboard-text&#039;).filter(function() {&lt;br /&gt;
                        return $(this).data(&#039;text&#039;) == text;&lt;br /&gt;
                    }).first().text())&lt;br /&gt;
                    .appendTo(&#039;body&#039;)&lt;br /&gt;
                    .select();&lt;br /&gt;
                var success = document.execCommand(&#039;Copy&#039;);&lt;br /&gt;
                $input.remove();&lt;br /&gt;
                if (success) {&lt;br /&gt;
                    showSuccess();&lt;br /&gt;
                } else {&lt;br /&gt;
                    if (window.navigator &amp;amp;&amp;amp; navigator.clipboard &amp;amp;&amp;amp; navigator.clipboard.writeText) {&lt;br /&gt;
                        navigator.clipboard.writeText(text).then(function() {&lt;br /&gt;
                            showSuccess();&lt;br /&gt;
                        });&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
    importArticle({&lt;br /&gt;
        type: &#039;script&#039;,&lt;br /&gt;
        article: &#039;u:dev:MediaWiki:I18n-js/code.js&#039;&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
/**&lt;br /&gt;
 * SpoilerAlert&lt;br /&gt;
 * documentation at: https://dev.fandom.com/wiki/SpoilerAlert&lt;br /&gt;
 * © Peter Coester, 2012&lt;br /&gt;
 */&lt;br /&gt;
/* jshint curly:false */&lt;br /&gt;
(function ($, mw) {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    var config = mw.config.get([&lt;br /&gt;
        &#039;wgArticleId&#039;,&lt;br /&gt;
        &#039;wgNamespaceNumber&#039;,&lt;br /&gt;
        &#039;wgScriptPath&#039;,&lt;br /&gt;
        &#039;wgServer&#039;&lt;br /&gt;
    ]), $element = $(&#039;#SpoilerAlert&#039;);&lt;br /&gt;
    if (&lt;br /&gt;
        config.wgNamespaceNumber === -1 ||&lt;br /&gt;
        config.wgArticleId === 0 ||&lt;br /&gt;
        $element.length !== 1&lt;br /&gt;
    ) {&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
    var SpoilerAlert = {&lt;br /&gt;
        config: $.extend({&lt;br /&gt;
            fadeDelay: 1600&lt;br /&gt;
        }, window.SpoilerAlertJS),&lt;br /&gt;
        toLoad: 3,&lt;br /&gt;
        preload: function() {&lt;br /&gt;
            if (--this.toLoad === 0) {&lt;br /&gt;
                window.dev.i18n.loadMessages(&#039;SpoilerAlert&#039;)&lt;br /&gt;
                    .then(this.init.bind(this));&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        init: function(i18n) {&lt;br /&gt;
            this.ids = JSON.parse(window.localStorage.getItem(&#039;SpoilerAlert&#039;)) || [];&lt;br /&gt;
            [&#039;yes&#039;, &#039;no&#039;, &#039;question&#039;].forEach(function(msg) {&lt;br /&gt;
                if (!this.config[msg]) {&lt;br /&gt;
                    this.config[msg] = i18n.msg(msg).plain();&lt;br /&gt;
                }&lt;br /&gt;
            }, this);&lt;br /&gt;
            if (this.valid()) {&lt;br /&gt;
                this.insertUI();&lt;br /&gt;
            }&lt;br /&gt;
            this.insertResetButton(i18n);&lt;br /&gt;
        },&lt;br /&gt;
        valid: function() {&lt;br /&gt;
            return $element.height() &amp;lt; $(&#039;#mw-content-text&#039;).height() / 2 &amp;amp;&amp;amp;&lt;br /&gt;
                   this.ids.indexOf(config.wgArticleId) === -1;&lt;br /&gt;
        },&lt;br /&gt;
        insertUI: function() {&lt;br /&gt;
            var pos = $element.position();&lt;br /&gt;
            $(&#039;#mw-content-text&#039;).append(&lt;br /&gt;
                window.dev.ui({&lt;br /&gt;
                    type: &#039;div&#039;,&lt;br /&gt;
                    attr: {&lt;br /&gt;
                        id: &#039;SpoilerAlertCover&#039;&lt;br /&gt;
                    },&lt;br /&gt;
                    style: {&lt;br /&gt;
                        width: $element.width() + &#039;px&#039;,&lt;br /&gt;
                        height: $element.height() + &#039;px&#039;,&lt;br /&gt;
                        top: pos.top + &#039;px&#039;,&lt;br /&gt;
                        left: pos.left + &#039;px&#039;&lt;br /&gt;
                    },&lt;br /&gt;
                    children: [&lt;br /&gt;
                        {&lt;br /&gt;
                            type: &#039;p&#039;,&lt;br /&gt;
                            attr: {&lt;br /&gt;
                                id: &#039;SpoilerAlertText&#039;&lt;br /&gt;
                            },&lt;br /&gt;
                            text: this.config.question&lt;br /&gt;
                        },&lt;br /&gt;
                        {&lt;br /&gt;
                            type: &#039;span&#039;,&lt;br /&gt;
                            attr: {&lt;br /&gt;
                                id: &#039;SpoilerAlertYes&#039;,&lt;br /&gt;
                                &#039;class&#039;: &#039;wds-button&#039;&lt;br /&gt;
                            },&lt;br /&gt;
                            events: {&lt;br /&gt;
                                click: this.yes.bind(this)&lt;br /&gt;
                            },&lt;br /&gt;
                            text: this.config.yes&lt;br /&gt;
                        },&lt;br /&gt;
                        {&lt;br /&gt;
                            type: &#039;span&#039;,&lt;br /&gt;
                            attr: {&lt;br /&gt;
                                id: &#039;SpoilerAlertNo&#039;,&lt;br /&gt;
                                &#039;class&#039;: &#039;wds-button&#039;&lt;br /&gt;
                            },&lt;br /&gt;
                            events: {&lt;br /&gt;
                                click: this.no.bind(this)&lt;br /&gt;
                            },&lt;br /&gt;
                            text: this.config.no&lt;br /&gt;
                        }&lt;br /&gt;
                    ]&lt;br /&gt;
                })&lt;br /&gt;
            );&lt;br /&gt;
        },&lt;br /&gt;
        insertResetButton: function(i18n) {&lt;br /&gt;
            window.dev.placement.loader.util({&lt;br /&gt;
                content: {&lt;br /&gt;
                    type: &#039;li&#039;,&lt;br /&gt;
                    children: [&lt;br /&gt;
                        {&lt;br /&gt;
                            type: &#039;a&#039;,&lt;br /&gt;
                            attr: {&lt;br /&gt;
                                href: &#039;#&#039;&lt;br /&gt;
                            },&lt;br /&gt;
                            text: i18n.msg(&#039;reset&#039;).plain(),&lt;br /&gt;
                            events: {&lt;br /&gt;
                                click: this.reset&lt;br /&gt;
                            }&lt;br /&gt;
                        }&lt;br /&gt;
                    ]&lt;br /&gt;
                },&lt;br /&gt;
                element: &#039;tools&#039;,&lt;br /&gt;
                script: &#039;SpoilerAlert&#039;,&lt;br /&gt;
                type: &#039;append&#039;&lt;br /&gt;
            });&lt;br /&gt;
        },&lt;br /&gt;
        yes: function() {&lt;br /&gt;
            this.fadeOut(&#039;#SpoilerAlertCover&#039;);&lt;br /&gt;
            this.ids.push(config.wgArticleId);&lt;br /&gt;
            window.localStorage.setItem(&#039;SpoilerAlert&#039;, JSON.stringify(this.ids));&lt;br /&gt;
        },&lt;br /&gt;
        no: function() {&lt;br /&gt;
            this.fadeOut(&#039;#SpoilerAlertText, #SpoilerAlertYes, #SpoilerAlertNo&#039;);&lt;br /&gt;
            if (this.config.back) {&lt;br /&gt;
                if (window.history &amp;amp;&amp;amp; window.history.length &amp;gt; 1) {&lt;br /&gt;
                    window.history.back();&lt;br /&gt;
                } else {&lt;br /&gt;
                    location.href = config.wgServer + config.wgScriptPath;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        fadeOut: function(el) {&lt;br /&gt;
            $(el).fadeOut(this.config.fadeDelay, function() {&lt;br /&gt;
                $(this).remove();&lt;br /&gt;
            });&lt;br /&gt;
        },&lt;br /&gt;
        reset: function(event) {&lt;br /&gt;
            event.preventDefault();&lt;br /&gt;
            window.localStorage.setItem(&#039;SpoilerAlert&#039;, JSON.stringify([]));&lt;br /&gt;
            window.location.reload();&lt;br /&gt;
        }&lt;br /&gt;
    };&lt;br /&gt;
    if (!window.dev || !window.dev.ui || !window.dev.i18n || !window.dev.placement) {&lt;br /&gt;
        importArticles({&lt;br /&gt;
            type: &#039;script&#039;,&lt;br /&gt;
            articles: [&lt;br /&gt;
                &#039;u:dev:MediaWiki:I18n-js/code.js&#039;,&lt;br /&gt;
                &#039;u:dev:MediaWiki:Placement.js&#039;,&lt;br /&gt;
                &#039;u:dev:MediaWiki:UI-js/code.js&#039;&lt;br /&gt;
            ]&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
    importArticle({&lt;br /&gt;
        type: &#039;style&#039;,&lt;br /&gt;
        article: &#039;u:dev:MediaWiki:SpoilerAlert.css&#039;&lt;br /&gt;
    });&lt;br /&gt;
    mw.hook(&#039;dev.ui&#039;).add(SpoilerAlert.preload.bind(SpoilerAlert));&lt;br /&gt;
    mw.hook(&#039;dev.i18n&#039;).add(SpoilerAlert.preload.bind(SpoilerAlert));&lt;br /&gt;
    mw.hook(&#039;dev.placement&#039;).add(SpoilerAlert.preload.bind(SpoilerAlert));&lt;br /&gt;
})(window.jQuery, window.mediaWiki);&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=Template:Hatnote&amp;diff=1264</id>
		<title>Template:Hatnote</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=Template:Hatnote&amp;diff=1264"/>
		<updated>2025-03-13T09:40:24Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: Reverted edit by Pynappo (talk) to last revision by CStatic&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#invoke:Hatnote|hatnote}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=Template:Hatnote&amp;diff=1263</id>
		<title>Template:Hatnote</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=Template:Hatnote&amp;diff=1263"/>
		<updated>2025-03-13T09:39:33Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#invoke:Hatnote|hatnote}}&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=MediaWiki:Lua/Navbox.css&amp;diff=1078</id>
		<title>MediaWiki:Lua/Navbox.css</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=MediaWiki:Lua/Navbox.css&amp;diff=1078"/>
		<updated>2025-03-03T22:05:17Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: Created page with &amp;quot;/*******************  * Navboxes  *******************/ /* * CSS Vars * Note: The linter will throw an error. See [https://community.fandom.com/wiki/Help:Advanced_CSS_and_JS#Common_issues this page] for more info. */ .navbox {     --navbox-bg-color: var(--theme-page-background-color);     --navbox-text-color: var(--theme-page-text-color);     --navbox-title-color: rgba(var(--theme-accent-color--rgb, rgb(102, 102, 102)), 0.5);     --navbox-header-color: rgba(var(--theme-ac...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/*******************&lt;br /&gt;
 * Navboxes&lt;br /&gt;
 *******************/&lt;br /&gt;
/*&lt;br /&gt;
* CSS Vars&lt;br /&gt;
* Note: The linter will throw an error. See [https://community.fandom.com/wiki/Help:Advanced_CSS_and_JS#Common_issues this page] for more info.&lt;br /&gt;
*/&lt;br /&gt;
.navbox {&lt;br /&gt;
    --navbox-bg-color: var(--theme-page-background-color);&lt;br /&gt;
    --navbox-text-color: var(--theme-page-text-color);&lt;br /&gt;
    --navbox-title-color: rgba(var(--theme-accent-color--rgb, rgb(102, 102, 102)), 0.5);&lt;br /&gt;
    --navbox-header-color: rgba(var(--theme-accent-color--rgb, rgb(102, 102, 102)), 0.3);&lt;br /&gt;
    --navbox-alt-color: rgba(var(--theme-accent-color--rgb, rgb(85, 85, 85)), 0.1);&lt;br /&gt;
    --navbox-border-color: var(--theme-border-color)&lt;br /&gt;
}&lt;br /&gt;
.navbox {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    background: var(--navbox-bg-color, white);&lt;br /&gt;
    color: var(--navbox-text-color, black);&lt;br /&gt;
    margin: 1em auto;&lt;br /&gt;
    font-size: 84%;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    clear: both;&lt;br /&gt;
    padding: 2px;&lt;br /&gt;
    border-spacing: 0;&lt;br /&gt;
    border: 1px solid var(--navbox-border-color, #AAA);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Merges navboxes that are directly under eachother */&lt;br /&gt;
.navbox + .navbox {&lt;br /&gt;
    margin-top: -11px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox .navbox-title {&lt;br /&gt;
    background: var(--navbox-title-color, #CCF);&lt;br /&gt;
    color: var(--navbox-text-color, black);&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox .navbox-vde {&lt;br /&gt;
    float: left;&lt;br /&gt;
    width: 65px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox .navbox-title th {&lt;br /&gt;
	padding: 2px 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox .navbox-title th &amp;gt; div,&lt;br /&gt;
.navbox th.navbox-header &amp;gt; div {&lt;br /&gt;
	padding: 0 4px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox .navbox-title th &amp;gt; .navbox-title-pad,&lt;br /&gt;
.navbox th.navbox-header &amp;gt; .navbox-header-pad {&lt;br /&gt;
	padding: 0 65px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox .navbox-subgroup {&lt;br /&gt;
    border-spacing: 0;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox .navbox-subgroup-with-title {&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox .navbox-gutter {&lt;br /&gt;
    height: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox .navbox-section-row &amp;gt; td {&lt;br /&gt;
    padding: 0;&lt;br /&gt;
    height: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox .navbox-section {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    border-spacing: 0;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox .navbox-above,&lt;br /&gt;
.navbox .navbox-below {&lt;br /&gt;
    background: var(--navbox-header-color, #DDF);&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox .navbox-above td, &lt;br /&gt;
.navbox .navbox-below td {&lt;br /&gt;
    padding: 2px 4px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox .navbox-image {&lt;br /&gt;
    background: var(--navbox-bg-color, white);&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox .navbox-group,&lt;br /&gt;
.navbox .navbox-header,&lt;br /&gt;
.navbox .navbox-subgroup .navbox-title {&lt;br /&gt;
    background: var(--navbox-header-color, #DDF);&lt;br /&gt;
    color: var(--navbox-text-color, black);&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    height: 100%;&lt;br /&gt;
    padding: 2px 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox .navbox-header {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox .navbox-group {&lt;br /&gt;
    text-align: right;&lt;br /&gt;
    padding-left: 1em;&lt;br /&gt;
    padding-right: 1em;&lt;br /&gt;
    word-wrap: normal;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-fandomdesktop .navbox .navbox-group {&lt;br /&gt;
    white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox .navbox-group,&lt;br /&gt;
.navbox .navbox-image-left {&lt;br /&gt;
    border-right: 2px solid var(--navbox-bg-color, white);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox .navbox-image-right {&lt;br /&gt;
    border-left: 2px solid var(--navbox-bg-color, white);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox .navbox-list {&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox .navbox-group + .navbox-list,&lt;br /&gt;
.navbox .navbox-group + .navbox-list &amp;gt; table:not(.navbox-subgroup-with-title) &amp;gt; tbody &amp;gt; tr &amp;gt; .navbox-list {&lt;br /&gt;
	text-align: left;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox .navbox-list {&lt;br /&gt;
    background: var(--navbox-bg-color, white);&lt;br /&gt;
    color: var(--navbox-text-color, black);&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    height: 100%;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox .alt &amp;gt; .navbox-list {&lt;br /&gt;
    background: var(--navbox-alt-color, #F7F7F7);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox .navbox-list &amp;gt; div {&lt;br /&gt;
    padding: 0px 4px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox .hlist dl,&lt;br /&gt;
.navbox .hlist ol,&lt;br /&gt;
.navbox .hlist ul {&lt;br /&gt;
    font-size: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox .navbox-list.no-group {&lt;br /&gt;
    padding-top: 2px;&lt;br /&gt;
    padding-bottom: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox .mw-collapsible-toggle {&lt;br /&gt;
    width: 65px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* hlist */&lt;br /&gt;
.hlist dl,&lt;br /&gt;
.hlist ol,&lt;br /&gt;
.hlist ul {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Display list items inline */&lt;br /&gt;
.hlist dd,&lt;br /&gt;
.hlist dt,&lt;br /&gt;
.hlist li {&lt;br /&gt;
	margin: 0; /* don&#039;t trust the note that says margin doesn&#039;t work with inline&lt;br /&gt;
				* removing margin: 0 makes dds have margins again */&lt;br /&gt;
	display: inline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Display nested lists inline */&lt;br /&gt;
.hlist.inline,&lt;br /&gt;
.hlist.inline dl,&lt;br /&gt;
.hlist.inline ol,&lt;br /&gt;
.hlist.inline ul,&lt;br /&gt;
.hlist dl dl,&lt;br /&gt;
.hlist dl ol,&lt;br /&gt;
.hlist dl ul,&lt;br /&gt;
.hlist ol dl,&lt;br /&gt;
.hlist ol ol,&lt;br /&gt;
.hlist ol ul,&lt;br /&gt;
.hlist ul dl,&lt;br /&gt;
.hlist ul ol,&lt;br /&gt;
.hlist ul ul {&lt;br /&gt;
	display: inline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hide empty list items */&lt;br /&gt;
.hlist .mw-empty-li {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Generate interpuncts */&lt;br /&gt;
.hlist dt:after {&lt;br /&gt;
	content: &amp;quot;: &amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hlist dd:after,&lt;br /&gt;
.hlist li:after {&lt;br /&gt;
	content: &amp;quot; · &amp;quot;;&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hlist dd:last-child:after,&lt;br /&gt;
.hlist dt:last-child:after,&lt;br /&gt;
.hlist li:last-child:after {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Add parentheses around nested lists */&lt;br /&gt;
.hlist dd dd:first-child:before,&lt;br /&gt;
.hlist dd dt:first-child:before,&lt;br /&gt;
.hlist dd li:first-child:before,&lt;br /&gt;
.hlist dt dd:first-child:before,&lt;br /&gt;
.hlist dt dt:first-child:before,&lt;br /&gt;
.hlist dt li:first-child:before,&lt;br /&gt;
.hlist li dd:first-child:before,&lt;br /&gt;
.hlist li dt:first-child:before,&lt;br /&gt;
.hlist li li:first-child:before {&lt;br /&gt;
	content: &amp;quot; (&amp;quot;;&lt;br /&gt;
	font-weight: normal;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hlist dd dd:last-child:after,&lt;br /&gt;
.hlist dd dt:last-child:after,&lt;br /&gt;
.hlist dd li:last-child:after,&lt;br /&gt;
.hlist dt dd:last-child:after,&lt;br /&gt;
.hlist dt dt:last-child:after,&lt;br /&gt;
.hlist dt li:last-child:after,&lt;br /&gt;
.hlist li dd:last-child:after,&lt;br /&gt;
.hlist li dt:last-child:after,&lt;br /&gt;
.hlist li li:last-child:after {&lt;br /&gt;
	content: &amp;quot;)&amp;quot;;&lt;br /&gt;
	font-weight: normal;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Put ordinals in front of ordered list items */&lt;br /&gt;
.hlist ol {&lt;br /&gt;
	counter-reset: listitem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hlist ol &amp;gt; li {&lt;br /&gt;
	counter-increment: listitem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hlist ol &amp;gt; li:before {&lt;br /&gt;
	content: &amp;quot; &amp;quot; counter(listitem) &amp;quot;\a0&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hlist dd ol &amp;gt; li:first-child:before,&lt;br /&gt;
.hlist dt ol &amp;gt; li:first-child:before,&lt;br /&gt;
.hlist li ol &amp;gt; li:first-child:before {&lt;br /&gt;
	content: &amp;quot; (&amp;quot; counter(listitem) &amp;quot;\a0&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* override Fandom CSS */&lt;br /&gt;
.page-content .hlist ol:not(.portable-infobox ol) {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.plainlist ol,&lt;br /&gt;
.plainlist ul {&lt;br /&gt;
	line-height: inherit;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0; /* Reset Minerva default */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.plainlist ol li,&lt;br /&gt;
.plainlist ul li {&lt;br /&gt;
	margin-bottom: 0;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=Module:Navbox/i18n&amp;diff=1075</id>
		<title>Module:Navbox/i18n</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=Module:Navbox/i18n&amp;diff=1075"/>
		<updated>2025-03-03T21:51:16Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: Created page with &amp;quot;-- &amp;lt;nowiki&amp;gt; return {     [&amp;quot;_metadata&amp;quot;] = {         [&amp;quot;order&amp;quot;] = {             &amp;quot;hide&amp;quot;,             &amp;quot;show&amp;quot;         }     },     [&amp;quot;en&amp;quot;] = {         [&amp;quot;hide&amp;quot;] = &amp;quot;Hide&amp;quot;,         [&amp;quot;show&amp;quot;] = &amp;quot;Show&amp;quot;     },     [&amp;quot;qqq&amp;quot;] = {         [&amp;quot;hide&amp;quot;] = &amp;quot;\&amp;quot;Hide\&amp;quot; button (i.e. collapse the navbox).&amp;quot;,         [&amp;quot;show&amp;quot;] = &amp;quot;\&amp;quot;Show\&amp;quot; button (i.e. expand the navbox).&amp;quot;     },     [&amp;quot;de&amp;quot;] = {         [&amp;quot;hide&amp;quot;] = &amp;quot;Einklappen&amp;quot;,         [&amp;quot;show&amp;quot;] = &amp;quot;Ausklappen&amp;quot;     },     [&amp;quot;es&amp;quot;] = {         [&amp;quot;hide&amp;quot;] = &amp;quot;Ocult...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- &amp;lt;nowiki&amp;gt;&lt;br /&gt;
return {&lt;br /&gt;
    [&amp;quot;_metadata&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;order&amp;quot;] = {&lt;br /&gt;
            &amp;quot;hide&amp;quot;,&lt;br /&gt;
            &amp;quot;show&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;en&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;hide&amp;quot;] = &amp;quot;Hide&amp;quot;,&lt;br /&gt;
        [&amp;quot;show&amp;quot;] = &amp;quot;Show&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;qqq&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;hide&amp;quot;] = &amp;quot;\&amp;quot;Hide\&amp;quot; button (i.e. collapse the navbox).&amp;quot;,&lt;br /&gt;
        [&amp;quot;show&amp;quot;] = &amp;quot;\&amp;quot;Show\&amp;quot; button (i.e. expand the navbox).&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;de&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;hide&amp;quot;] = &amp;quot;Einklappen&amp;quot;,&lt;br /&gt;
        [&amp;quot;show&amp;quot;] = &amp;quot;Ausklappen&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;es&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;hide&amp;quot;] = &amp;quot;Ocultar&amp;quot;,&lt;br /&gt;
        [&amp;quot;show&amp;quot;] = &amp;quot;Mostrar&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;hi&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;hide&amp;quot;] = &amp;quot;छिपाएँ&amp;quot;,&lt;br /&gt;
        [&amp;quot;show&amp;quot;] = &amp;quot;दिखाएँ&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ja&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;hide&amp;quot;] = &amp;quot;隠す&amp;quot;,&lt;br /&gt;
        [&amp;quot;show&amp;quot;] = &amp;quot;表示&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;pt-br&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;hide&amp;quot;] = &amp;quot;Ocultar&amp;quot;,&lt;br /&gt;
        [&amp;quot;show&amp;quot;] = &amp;quot;Mostrar&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ru&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;hide&amp;quot;] = &amp;quot;Скрыть&amp;quot;,&lt;br /&gt;
        [&amp;quot;show&amp;quot;] = &amp;quot;Показать&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;zh-hans&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;hide&amp;quot;] = &amp;quot;隐藏&amp;quot;,&lt;br /&gt;
        [&amp;quot;show&amp;quot;] = &amp;quot;显示&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;zh-hant&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;hide&amp;quot;] = &amp;quot;隱藏&amp;quot;,&lt;br /&gt;
        [&amp;quot;show&amp;quot;] = &amp;quot;顯示&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;zh-hk&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;hide&amp;quot;] = &amp;quot;隱藏&amp;quot;,&lt;br /&gt;
        [&amp;quot;show&amp;quot;] = &amp;quot;顯示&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
-- &amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=Template:T&amp;diff=1067</id>
		<title>Template:T</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=Template:T&amp;diff=1067"/>
		<updated>2025-03-03T10:53:43Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: Created page with &amp;quot;{{#invoke:T|main}}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#invoke:T|main}}&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=Module:T&amp;diff=1066</id>
		<title>Module:T</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=Module:T&amp;diff=1066"/>
		<updated>2025-03-03T10:47:06Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- &amp;lt;nowiki&amp;gt;&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- A feature-packed example generator for brace-based wikitext.&lt;br /&gt;
--&lt;br /&gt;
-- @module T&lt;br /&gt;
-- @alias p&lt;br /&gt;
-- @version 0.6.4&lt;br /&gt;
-- @release experimental&lt;br /&gt;
-- @requires [[Global Lua Modules/Arguments|Module:Arguments]]&lt;br /&gt;
-- @requires [[Global Lua Modules/User error|Module:User error]]&lt;br /&gt;
-- @requires [[Global Lua Modules/Yesno|Module:Yesno]]&lt;br /&gt;
-- @author [[User:DarthKitty]]&lt;br /&gt;
-- @author [[User:Speedit]]&lt;br /&gt;
-- @author [[User:ExE Boss]]&lt;br /&gt;
--&lt;br /&gt;
-- @todo Extract CSS to stylesheet; transition from data-attributes to classes.&lt;br /&gt;
-- @todo Consider adding i18n for error messages, flags, &amp;amp;c.&lt;br /&gt;
-- @todo Consider adding generator(s?) for magic words and parser functions.&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local libraryUtil = require(&amp;quot;libraryUtil&amp;quot;)&lt;br /&gt;
local checkType = libraryUtil.checkType&lt;br /&gt;
&lt;br /&gt;
local getArgs = require(&amp;quot;Module:Arguments&amp;quot;).getArgs&lt;br /&gt;
local userError = require(&amp;quot;Module:User error&amp;quot;)&lt;br /&gt;
local yesno = require(&amp;quot;Module:Yesno&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Parses a parameter to get its components: its name (optional), and either its&lt;br /&gt;
-- value or its description (but not both).&lt;br /&gt;
--&lt;br /&gt;
-- @param {string} param&lt;br /&gt;
--     A parameter.&lt;br /&gt;
-- @returns {table}&lt;br /&gt;
--     The components of a parameter.&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
local function parseParam(param)&lt;br /&gt;
    local tmp = param&lt;br /&gt;
    local name, value, description&lt;br /&gt;
&lt;br /&gt;
    -- the parameter&#039;s name is anything to the left of the first equals sign;&lt;br /&gt;
    -- the equals sign can be escaped, for wikis that don&#039;t have [[Template:=]]&lt;br /&gt;
    if tmp:find(&amp;quot;=&amp;quot;) or tmp:find(mw.text.nowiki(&amp;quot;=&amp;quot;)) then&lt;br /&gt;
        name, tmp = tmp&lt;br /&gt;
            :gsub(mw.text.nowiki(&amp;quot;=&amp;quot;), &amp;quot;=&amp;quot;, 1)&lt;br /&gt;
            :match(&amp;quot;^(.-)%s*=%s*(.-)$&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- if the remaining text is wrapped in matching quotes, then it&#039;s a literal&lt;br /&gt;
    -- value; otherwise, it&#039;s a description of the parameter&lt;br /&gt;
    local first = tmp:sub(1, 1)&lt;br /&gt;
    local last = tmp:sub(-1)&lt;br /&gt;
&lt;br /&gt;
    if (first == &#039;&amp;quot;&#039; and last == &#039;&amp;quot;&#039;) or (first == &amp;quot;&#039;&amp;quot; and last == &amp;quot;&#039;&amp;quot;) then&lt;br /&gt;
        value = tmp:sub(2, -2)&lt;br /&gt;
    elseif tmp == &amp;quot;&amp;quot; then&lt;br /&gt;
        description = &amp;quot;...&amp;quot; -- the description cannot be an empty string&lt;br /&gt;
    else&lt;br /&gt;
        description = tmp&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return {&lt;br /&gt;
        name = name,&lt;br /&gt;
        value = value,&lt;br /&gt;
        description = description&lt;br /&gt;
    }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- The heart of the module. Transforms a list of parameters into wikitext&lt;br /&gt;
-- syntax.&lt;br /&gt;
--&lt;br /&gt;
-- @param {string} mode&lt;br /&gt;
--     Which kind of brace-based wikitext we&#039;re dealing with.&lt;br /&gt;
-- @param {string} opener&lt;br /&gt;
--     Text to insert between the two left-braces and the first parameter.&lt;br /&gt;
-- @param[opt] {table|nil} params&lt;br /&gt;
--     A sequentual table of parameters.&lt;br /&gt;
-- @param[opt] {table|nil} options&lt;br /&gt;
--     A table with configuration flags.&lt;br /&gt;
-- @param[opt] {boolean|nil} options.multiline&lt;br /&gt;
-- @param[opt] {boolean|nil} options.subst&lt;br /&gt;
-- @returns {string}&lt;br /&gt;
--     A blob of wikitext describing any brace-based syntax.&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
local function builder(mode, opener, params, options)&lt;br /&gt;
    checkType(&amp;quot;builder&amp;quot;, 2, opener, &amp;quot;string&amp;quot;)&lt;br /&gt;
    checkType(&amp;quot;builder&amp;quot;, 3, params, &amp;quot;table&amp;quot;, true)&lt;br /&gt;
    checkType(&amp;quot;builder&amp;quot;, 4, options, &amp;quot;table&amp;quot;, true)&lt;br /&gt;
&lt;br /&gt;
    params = params or {}&lt;br /&gt;
    options = options or {}&lt;br /&gt;
&lt;br /&gt;
    local html = mw.html.create(&amp;quot;code&amp;quot;)&lt;br /&gt;
        :attr(&amp;quot;data-t-role&amp;quot;, &amp;quot;wrapper&amp;quot;)&lt;br /&gt;
        :attr(&amp;quot;data-t-mode&amp;quot;, mode)&lt;br /&gt;
        :css(&amp;quot;all&amp;quot;, &amp;quot;unset&amp;quot;)&lt;br /&gt;
        :css(&amp;quot;font-family&amp;quot;, &amp;quot;monospace&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    local openerSpan =&lt;br /&gt;
        html:tag(&amp;quot;span&amp;quot;)&lt;br /&gt;
            :attr(&amp;quot;data-t-role&amp;quot;, &amp;quot;opener&amp;quot;)&lt;br /&gt;
            :wikitext(mw.text.nowiki(&amp;quot;{&amp;quot;):rep(2))&lt;br /&gt;
&lt;br /&gt;
	if options.subst then&lt;br /&gt;
		openerSpan:wikitext(&amp;quot;subst:&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
    openerSpan:wikitext(opener)&lt;br /&gt;
&lt;br /&gt;
    if options.multiline then&lt;br /&gt;
        html:attr(&amp;quot;data-t-multiline&amp;quot;, &amp;quot;data-t-multiline&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    for i, param in ipairs(params) do&lt;br /&gt;
        if type(param) ~= &amp;quot;string&amp;quot; then&lt;br /&gt;
            error(&amp;quot;invalid entry #&amp;quot; .. i .. &amp;quot; in parameter list&amp;quot;, 3)&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        local components = parseParam(param)&lt;br /&gt;
        local paramHtml = html:tag(&amp;quot;span&amp;quot;)&lt;br /&gt;
            :attr(&amp;quot;data-t-role&amp;quot;, &amp;quot;parameter&amp;quot;)&lt;br /&gt;
            :attr(&amp;quot;data-t-index&amp;quot;, i)&lt;br /&gt;
            :wikitext(mw.text.nowiki(&amp;quot;|&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
        if options.multiline then&lt;br /&gt;
            paramHtml:css(&amp;quot;display&amp;quot;, &amp;quot;block&amp;quot;)&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        if components.name then&lt;br /&gt;
            paramHtml:tag(&amp;quot;span&amp;quot;)&lt;br /&gt;
                :attr(&amp;quot;data-t-role&amp;quot;, &amp;quot;parameter-name&amp;quot;)&lt;br /&gt;
                :css(&amp;quot;font-weight&amp;quot;, &amp;quot;bold&amp;quot;)&lt;br /&gt;
                :wikitext(components.name)&lt;br /&gt;
&lt;br /&gt;
            paramHtml:wikitext(&amp;quot; = &amp;quot;)&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        if components.value then&lt;br /&gt;
            paramHtml:tag(&amp;quot;span&amp;quot;)&lt;br /&gt;
                :attr(&amp;quot;data-t-role&amp;quot;, &amp;quot;parameter-value&amp;quot;)&lt;br /&gt;
                :wikitext(components.value)&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        if components.description then&lt;br /&gt;
            paramHtml:tag(&amp;quot;span&amp;quot;)&lt;br /&gt;
                :attr(&amp;quot;data-t-role&amp;quot;, &amp;quot;parameter-description&amp;quot;)&lt;br /&gt;
                :css(&amp;quot;opacity&amp;quot;, &amp;quot;0.65&amp;quot;)&lt;br /&gt;
                :wikitext(mw.text.nowiki(&amp;quot;&amp;lt;&amp;quot;))&lt;br /&gt;
                :wikitext(components.description)&lt;br /&gt;
                :wikitext(mw.text.nowiki(&amp;quot;&amp;gt;&amp;quot;))&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    html:tag(&amp;quot;span&amp;quot;)&lt;br /&gt;
        :attr(&amp;quot;data-t-role&amp;quot;, &amp;quot;closer&amp;quot;)&lt;br /&gt;
        :wikitext(mw.text.nowiki(&amp;quot;}&amp;quot;):rep(2))&lt;br /&gt;
&lt;br /&gt;
    return tostring(html)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Resolves a transclusion according to the MediaWiki&lt;br /&gt;
-- transclusion resolution algorithm.&lt;br /&gt;
--&lt;br /&gt;
-- @param {string} title&lt;br /&gt;
--        The name of the transclusion to resolve.&lt;br /&gt;
-- @return {string}&lt;br /&gt;
--         The resolved transclusion with the namespace prefix.&lt;br /&gt;
-- @see [[w:Template:Transclude]]&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
local function resolveTransclusion(title)&lt;br /&gt;
	checkType(&amp;quot;resolveTransclusion&amp;quot;, 1, title, &amp;quot;string&amp;quot;)&lt;br /&gt;
	local i = mw.ustring.find(title, &amp;quot;%:&amp;quot;)&lt;br /&gt;
	if i == 1 then&lt;br /&gt;
		return mw.ustring.sub(title, 2)&lt;br /&gt;
	elseif i ~= nil then&lt;br /&gt;
		return title&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;quot;Template:&amp;quot; .. title&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Generator for transclusion syntax, e.g. `{{foo}}`, `{{:foo}}`,&lt;br /&gt;
-- or `{{Template:Foo}}`.&lt;br /&gt;
--&lt;br /&gt;
-- @param {string} title&lt;br /&gt;
--     The name of the template to link to.&lt;br /&gt;
-- @param[opt] {table|nil} params&lt;br /&gt;
--     A sequentual table of parameters.&lt;br /&gt;
-- @param[opt] {table|nil} options&lt;br /&gt;
--     A table with configuration flags.&lt;br /&gt;
-- @param[opt] {boolean|nil} options.multiline&lt;br /&gt;
-- @param[opt] {boolean|nil} options.subst&lt;br /&gt;
-- @returns {string}&lt;br /&gt;
--     A blob of wikitext describing a template.&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
function p.transclusion(title, params, options)&lt;br /&gt;
    if type(title) ~= &amp;quot;string&amp;quot; or title == &amp;quot;&amp;quot; then&lt;br /&gt;
        error(&amp;quot;no title specified&amp;quot;, 2)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return builder(&lt;br /&gt;
        &amp;quot;transclusion&amp;quot;,&lt;br /&gt;
        &amp;quot;[[:&amp;quot; .. resolveTransclusion(title) .. &amp;quot;|&amp;quot; .. title .. &amp;quot;]]&amp;quot;,&lt;br /&gt;
        params,&lt;br /&gt;
        options&lt;br /&gt;
    )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Generator for invocation syntax, e.g. `{{#invoke:foo|bar}}`.&lt;br /&gt;
--&lt;br /&gt;
-- @param {string} title&lt;br /&gt;
--     The name of the module to link to, without the namespace prefix.&lt;br /&gt;
-- @param {string} func&lt;br /&gt;
--     The name of the function to call.&lt;br /&gt;
-- @param[opt] {table|nil} params&lt;br /&gt;
--     A sequentual table of parameters.&lt;br /&gt;
-- @param[opt] {table|nil} options&lt;br /&gt;
--     A table with configuration flags.&lt;br /&gt;
-- @param[opt] {boolean|nil} options.multiline&lt;br /&gt;
-- @param[opt] {boolean|nil} options.subst&lt;br /&gt;
-- @returns {string}&lt;br /&gt;
--     A blob of wikitext describing a module.&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
function p.invocation(title, func, params, options)&lt;br /&gt;
    if type(title) ~= &amp;quot;string&amp;quot; or title == &amp;quot;&amp;quot; then&lt;br /&gt;
        error(&amp;quot;no module specified&amp;quot;, 2)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if type(func) ~= &amp;quot;string&amp;quot; or func == &amp;quot;&amp;quot; then&lt;br /&gt;
        error(&amp;quot;no function specified&amp;quot;, 2)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local link = &amp;quot;[[Module:&amp;quot; .. title .. &amp;quot;|&amp;quot; .. title .. &amp;quot;]]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    return builder(&lt;br /&gt;
        &amp;quot;invocation&amp;quot;,&lt;br /&gt;
        &amp;quot;#invoke:&amp;quot; .. link .. mw.text.nowiki(&amp;quot;|&amp;quot;) .. func,&lt;br /&gt;
        params,&lt;br /&gt;
        options&lt;br /&gt;
    )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Entry point from the wikitext side. Determines which generator to use based&lt;br /&gt;
-- on the provided arguments.&lt;br /&gt;
--&lt;br /&gt;
-- @param {table|Frame} frame&lt;br /&gt;
--     A frame object whose arguments will determine the correct generator&lt;br /&gt;
--     to use.&lt;br /&gt;
-- @returns {string}&lt;br /&gt;
--     A blob of wikitext describing any brace-based syntax.&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
    local args = getArgs(frame, {removeBlanks = false})&lt;br /&gt;
    local mode, minimumArity&lt;br /&gt;
&lt;br /&gt;
    if yesno(args.invocation) or yesno(args.i) then&lt;br /&gt;
        mode = &amp;quot;invocation&amp;quot;&lt;br /&gt;
        minimumArity = 2&lt;br /&gt;
    else&lt;br /&gt;
        mode = &amp;quot;transclusion&amp;quot;&lt;br /&gt;
        minimumArity = 1&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local params = {}&lt;br /&gt;
    local options = {&lt;br /&gt;
        multiline = yesno(args.multiline) or yesno(args.m),&lt;br /&gt;
        subst = yesno(args.subst) or yesno(args.s),&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    -- a dynamically-generated list of arguments to the generator&lt;br /&gt;
    -- required arguments are inserted before `params` and `options`&lt;br /&gt;
    local varargs = {params, options}&lt;br /&gt;
&lt;br /&gt;
    for i, value in ipairs(args) do&lt;br /&gt;
        if i &amp;lt;= minimumArity then&lt;br /&gt;
            -- pass the first few values directly to the generator&lt;br /&gt;
            -- these are used to calculate the opener&lt;br /&gt;
            table.insert(varargs, i, value)&lt;br /&gt;
        else&lt;br /&gt;
            -- put the remaining values in a table, and pass it to the generator&lt;br /&gt;
            -- these are shown as parameters in the resulting wikitext&lt;br /&gt;
            params[#params + 1] = value&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local success, response = pcall(p[mode], unpack(varargs))&lt;br /&gt;
&lt;br /&gt;
    return success and response or userError(response)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
	<entry>
		<id>https://nbittrpgwiki.pynappo.xyz/index.php?title=Module:User_error&amp;diff=1065</id>
		<title>Module:User error</title>
		<link rel="alternate" type="text/html" href="https://nbittrpgwiki.pynappo.xyz/index.php?title=Module:User_error&amp;diff=1065"/>
		<updated>2025-03-03T10:46:36Z</updated>

		<summary type="html">&lt;p&gt;Pynappo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- &amp;lt;nowiki&amp;gt;&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- A less intimidating version of the built-in &amp;quot;error()&amp;quot; function, to help&lt;br /&gt;
-- editors fix their mistakes when transcluding a template.&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
local checkType = require(&#039;libraryUtil&#039;).checkType&lt;br /&gt;
&lt;br /&gt;
return function (message, ...)&lt;br /&gt;
    checkType(&#039;Module:User error&#039;, 1, message, &#039;string&#039;)&lt;br /&gt;
&lt;br /&gt;
    local element = mw.html.create(&#039;strong&#039;)&lt;br /&gt;
        :addClass(&#039;error&#039;)&lt;br /&gt;
        :wikitext(&#039;Error: &#039; .. message .. &#039;.&#039;)&lt;br /&gt;
&lt;br /&gt;
    for i = 1, select(&#039;#&#039;, ...) do&lt;br /&gt;
        local category = select(i, ...)&lt;br /&gt;
&lt;br /&gt;
        checkType(&#039;Module:User error&#039;, i + 1, category, &#039;string&#039;)&lt;br /&gt;
&lt;br /&gt;
        if category ~= &#039;&#039; then&lt;br /&gt;
            element:wikitext(&#039;[[Category:&#039; .. category .. &#039;]]&#039;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return tostring(element)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
-- (Add categories here.)&lt;/div&gt;</summary>
		<author><name>Pynappo</name></author>
	</entry>
</feed>