<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://wikisp.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jsmura</id>
	<title>Wikimedia Small Projects - Contribuciones del usuario [es]</title>
	<link rel="self" type="application/atom+xml" href="https://wikisp.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jsmura"/>
	<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/Especial:Contribuciones/Jsmura"/>
	<updated>2026-07-14T12:31:19Z</updated>
	<subtitle>Contribuciones del usuario</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=MediaWiki:Citizen.css&amp;diff=7523</id>
		<title>MediaWiki:Citizen.css</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=MediaWiki:Citizen.css&amp;diff=7523"/>
		<updated>2023-11-02T00:08:47Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* All CSS here will be loaded for users of the Citizen skin */&lt;br /&gt;
/* Courtesy of starcitizen.tools */&lt;br /&gt;
:root {&lt;br /&gt;
	--color-primary__h: 205;&lt;br /&gt;
	--type-important: rgba(200, 0, 0, 0.8);&lt;br /&gt;
    --type-moderate: rgba(233, 124, 47, 0.8);&lt;br /&gt;
    --type-minor: rgba(241, 197, 37, 0.8);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Adjust contrast since we changed primary color */&lt;br /&gt;
:root.skin-citizen-dark {&lt;br /&gt;
	--color-primary__l: 56%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Align icon opacity with skin default */&lt;br /&gt;
.mw-logo-icon {&lt;br /&gt;
	opacity: var( --opacity-icon-base );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Footer icons&lt;br /&gt;
 * We use custom footer icons so we need to fine tune it&lt;br /&gt;
&lt;br /&gt;
/* More space between icons&lt;br /&gt;
#footer-icons ul {&lt;br /&gt;
	gap: var( --space-md );&lt;br /&gt;
}&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
/* Background responsive para las plantillas */&lt;br /&gt;
&lt;br /&gt;
.bgesp {&lt;br /&gt;
	background-color:#f9fafb;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-citizen-dark .bgesp {&lt;br /&gt;
	background-color: #1d2830;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Color de letra Púrpura para las plantillas */&lt;br /&gt;
&lt;br /&gt;
.purpura {&lt;br /&gt;
	color:#520044;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-citizen-dark .purpura {&lt;br /&gt;
	color: #df00b9;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Base CSS classes for demo. If you wish to use Mbox on your wiki, only copy the below. */&lt;br /&gt;
&lt;br /&gt;
.mbox {&lt;br /&gt;
    --type-important: rgba(200, 0, 0, 0.8);&lt;br /&gt;
    --type-moderate: rgba(233, 124, 47, 0.8);&lt;br /&gt;
    --type-minor: rgba(241, 197, 37, 0.8);&lt;br /&gt;
    display: flex;&lt;br /&gt;
    position: relative;&lt;br /&gt;
    background-color: var(--theme-page-background-color--secondary);&lt;br /&gt;
    border: 1px solid var(--theme-border-color);&lt;br /&gt;
    border-left-width: 8px;&lt;br /&gt;
    border-left-color: #d6d6d6;&lt;br /&gt;
    border-radius: 3px;&lt;br /&gt;
    margin-bottom: 5px;&lt;br /&gt;
    min-height: 32px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox.mbox-type-important {&lt;br /&gt;
    border-left-color: var(--type-important);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox.mbox-type-moderate {&lt;br /&gt;
    border-left-color: var(--type-moderate);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox.mbox-type-minor {&lt;br /&gt;
    border-left-color: var(--type-minor);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content {&lt;br /&gt;
    display: table;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    padding: 8px 15px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__image {&lt;br /&gt;
    display: table-cell;&lt;br /&gt;
    width: 40px;&lt;br /&gt;
    height: 100%;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    vertical-align: middle;&lt;br /&gt;
    padding-right: 15px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__wrapper {&lt;br /&gt;
    display: table-cell;&lt;br /&gt;
    vertical-align: middle;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__header {&lt;br /&gt;
    display: block;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__text {&lt;br /&gt;
    display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__text__comment {&lt;br /&gt;
    font-size: small;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__aside {&lt;br /&gt;
    display: table-cell;&lt;br /&gt;
    width: 100px;&lt;br /&gt;
    vertical-align: middle;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 0 15px;&lt;br /&gt;
    border-left: 1px solid #d6d6d6;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__close {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    right: 0;&lt;br /&gt;
    top: 0;&lt;br /&gt;
    padding: 2px 7px;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    font-size: 16px;&lt;br /&gt;
    color: #bbb;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    transition: all .15s ease-in;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__close:hover {&lt;br /&gt;
    color: #777;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__close:after {&lt;br /&gt;
    content: &#039;×&#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-collapsed + .mbox__close {&lt;br /&gt;
    transform: rotate(45deg);&lt;br /&gt;
    padding: 4px 7px 5px 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile skin fixes */&lt;br /&gt;
.skin-fandommobile .mbox__content__image {&lt;br /&gt;
    width: 60px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-fandommobile .mbox__content__image .article-media-thumbnail {&lt;br /&gt;
    margin-bottom: unset;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Wookieepedia-style Mbox demo. */&lt;br /&gt;
.mbox--wook {&lt;br /&gt;
    background-color: #7bb0d8;&lt;br /&gt;
    border: none;&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox--wook .mbox__close {&lt;br /&gt;
    color: #0c8787;&lt;br /&gt;
    font-weight: normal;&lt;br /&gt;
    font-size: 13px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox--wook .mbox__close:after {&lt;br /&gt;
    content: &#039;[hide]&#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox--wook .mw-collapsed + .mbox__close {&lt;br /&gt;
    transform: none;&lt;br /&gt;
    padding: 2px 7px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox--wook .mw-collapsed + .mbox__close:after {&lt;br /&gt;
    content: &#039;[show]&#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Final Fantasy-style Mbox demo. */&lt;br /&gt;
.theme-fandomdesktop-light .mbox--ff {&lt;br /&gt;
    border-top: 1px solid #afaa84;&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
    background: linear-gradient(180deg,rgba(255,255,246,1) 0,rgba(247,219,185,1) 40px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.theme-fandomdesktop-dark .mbox--ff {&lt;br /&gt;
    border-top: 3px solid #1e9de3 !important;&lt;br /&gt;
    border: 0;&lt;br /&gt;
    background: linear-gradient(180deg,rgba(5,37,78,.5) 0,rgba(5,37,78,.5) 75%,rgba(5,37,78,0));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Message Boxes */&lt;br /&gt;
.mbox {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	position: relative;&lt;br /&gt;
	background-color: #23272A;&lt;br /&gt;
	border: 1px solid;&lt;br /&gt;
	border-left-width: 8px;&lt;br /&gt;
	border-color: #5865F2;&lt;br /&gt;
	border-radius: 3px;&lt;br /&gt;
	margin-bottom: 5px;&lt;br /&gt;
	min-height: 32px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox.mbox-type-warn {&lt;br /&gt;
	border-color: #FEE75C;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox.mbox-type-red {&lt;br /&gt;
	border-color: #ED4245;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content {&lt;br /&gt;
	display: table;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	padding: 8px 15px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__image {&lt;br /&gt;
	display: table-cell;&lt;br /&gt;
	width: 40px;&lt;br /&gt;
	height: 100%;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
	padding-right: 15px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__wrapper {&lt;br /&gt;
	display: table-cell;&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__header {&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__text {&lt;br /&gt;
	display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__text__comment {&lt;br /&gt;
	font-size: small;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__aside {&lt;br /&gt;
	display: table-cell;&lt;br /&gt;
	width: 100px;&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding-left: 15px;&lt;br /&gt;
	border-left: 1px solid var(--theme-border-color);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__close {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=MediaWiki:Common.css&amp;diff=7522</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=MediaWiki:Common.css&amp;diff=7522"/>
		<updated>2023-11-02T00:01:56Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;body, #firstHeading, h1, h2, h3, h4, h5,&lt;br /&gt;
.mw-body h1, .mw-body h2, .mw-body #firstHeading, &lt;br /&gt;
body em, body i, body strong {font-family: &#039;Open Sans&#039;, sans-serif;}&lt;br /&gt;
body.page-Página_principal.action-view h1.firstHeading, body.page-Página_principal.action-submit h1.firstHeading { display: none; }&lt;br /&gt;
&lt;br /&gt;
li#footer-info-lastmod,&lt;br /&gt;
li#footer-info-viewcount,&lt;br /&gt;
li#footer-places-about,&lt;br /&gt;
li#footer-places-disclaimer {&lt;br /&gt;
  display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-navigation h5 {&lt;br /&gt;
  display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.nowrap { &lt;br /&gt;
    white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.toggle-head {&lt;br /&gt;
  background:url(//upload.wikimedia.org/wikipedia/commons/thumb/1/1c/HW_open_arrow.svg/10px-HW_open_arrow.svg.png) no-repeat 0% center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.toggle-head:hover {&lt;br /&gt;
  text-decoration:underline;&lt;br /&gt;
  cursor:pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.redirect-in-category, .allpagesredirect a {&lt;br /&gt;
  color: gray;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.nodisplay {&lt;br /&gt;
  display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Ambox: Noticias y páginas de proyecto */&lt;br /&gt;
&lt;br /&gt;
table.ambox {&lt;br /&gt;
  width: 80%; &lt;br /&gt;
  margin: 0 auto; &lt;br /&gt;
  border-collapse: collapse; &lt;br /&gt;
  background: #f8fcff; &lt;br /&gt;
  border: 1px solid #aaa; &lt;br /&gt;
  border-left: 15px solid #39f;       /* Barra azul predeterminada */&lt;br /&gt;
}&lt;br /&gt;
table.ambox th, table.ambox td {      /* Celda(s) de mensajes */&lt;br /&gt;
  padding: 0.25em 0.5em;              /* 0.5em left/right */&lt;br /&gt;
}&lt;br /&gt;
table.ambox td.ambox-image {          /* Celda de img a la izquierda */&lt;br /&gt;
  width: 52px; &lt;br /&gt;
  padding: 2px 0px 2px 0.5em;         /* 0.5em left, 0px right */&lt;br /&gt;
  text-align: center; &lt;br /&gt;
}&lt;br /&gt;
table.ambox td.ambox-imageright {     /* Celda de img a la derecha */&lt;br /&gt;
  width: 52px; &lt;br /&gt;
  padding: 2px 0.5em 2px 0px;         /* 0px left, 0.5em right */&lt;br /&gt;
  text-align: center; &lt;br /&gt;
}&lt;br /&gt;
table.ambox-notice {&lt;br /&gt;
  border-left: 15px solid #0080FF;    /* Azul */&lt;br /&gt;
}&lt;br /&gt;
table.ambox-serious {&lt;br /&gt;
  border-left: 15px solid #C00;       /* Rojo */&lt;br /&gt;
}&lt;br /&gt;
table.ambox-content {&lt;br /&gt;
  border-left: 15px solid #F63;       /* Naranja */&lt;br /&gt;
}&lt;br /&gt;
table.ambox-style {&lt;br /&gt;
  border-left: 15px solid #FC3;       /* Amarillo */&lt;br /&gt;
}&lt;br /&gt;
table.ambox-merge {&lt;br /&gt;
  border-left: 15px solid #95B;       /* Purpura */&lt;br /&gt;
}&lt;br /&gt;
table.ambox-license {&lt;br /&gt;
  border-left: 15px solid #088A08;    /* Verde */&lt;br /&gt;
}&lt;br /&gt;
table.ambox-protection {&lt;br /&gt;
  border-left: 15px solid #BBA;       /* Gris */&lt;br /&gt;
}&lt;br /&gt;
/* Arrow button formatting */&lt;br /&gt;
&lt;br /&gt;
.arrowbutton {&lt;br /&gt;
	color:#ffffff;&lt;br /&gt;
	width:100px;&lt;br /&gt;
	padding:0.4em;&lt;br /&gt;
	line-height:1.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton::before {&lt;br /&gt;
	content:&amp;quot;⇒ &amp;quot;;&lt;br /&gt;
	font-weight:bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-red {&lt;br /&gt;
	background:#990000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-green {&lt;br /&gt;
	background:#339966;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-blue {&lt;br /&gt;
	background:#0063BF;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-gold {&lt;br /&gt;
	background:#E5B921;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-red:hover {&lt;br /&gt;
    background: #ffb3b3 !important;&lt;br /&gt;
    color: #000000 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-green:hover {&lt;br /&gt;
    background: #c6ecd9 !important;&lt;br /&gt;
    color: #000000 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-blue:hover {&lt;br /&gt;
    background: #b3daff !important;&lt;br /&gt;
    color: #000000 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-gold:hover {&lt;br /&gt;
    background: #faefcb !important;&lt;br /&gt;
    color: #000000 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Cortesía de Platonides */&lt;br /&gt;
#p-navigation { display: block; }&lt;br /&gt;
nav.vector-menu-portal { display: none; }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* estilo de tablas */&lt;br /&gt;
&lt;br /&gt;
table.rowlines { &lt;br /&gt;
    border-collapse:collapse;&lt;br /&gt;
    border: 2px solid #BBBDBF;&lt;br /&gt;
    width:  100%;&lt;br /&gt;
    vertical-align: top;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.rowlines th {&lt;br /&gt;
    border-bottom: 1px solid #BBBDBF;&lt;br /&gt;
    border-top:    1px solid #BBBDBF;&lt;br /&gt;
    padding:       5px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.rowlines td {&lt;br /&gt;
    border-bottom: 1px dotted #BBBDBF;&lt;br /&gt;
    padding:       5px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
div.rowlines-wrapper {&lt;br /&gt;
    padding: 0 10px 0 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Header mega template */&lt;br /&gt;
&lt;br /&gt;
#megaheader {&lt;br /&gt;
  position:relative;&lt;br /&gt;
  padding-bottom:1em;&lt;br /&gt;
  border:none;&lt;br /&gt;
  margin-bottom:2em;&lt;br /&gt;
  overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (min-width:982px) {&lt;br /&gt;
  #megaheader {&lt;br /&gt;
    margin-top:-3em;&lt;br /&gt;
    margin-left:-1.5em;&lt;br /&gt;
    margin-right:-1.5em;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (min-width:768px) and (max-width:981px) {&lt;br /&gt;
  #megaheader {&lt;br /&gt;
    margin-top:-2.7em;&lt;br /&gt;
    margin-left:-1em;&lt;br /&gt;
    margin-right:-1em;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (max-width:767px) {&lt;br /&gt;
  #megaheader {&lt;br /&gt;
    margin-top:-3em;&lt;br /&gt;
    margin-left:-1.15em;&lt;br /&gt;
    margin-right:-1.15em;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
@media screen and (min-width:768px) {&lt;br /&gt;
  #megaheader {&lt;br /&gt;
    height:500px;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  #megaheader-short {&lt;br /&gt;
  	height:200px;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (max-width:767px) {&lt;br /&gt;
  #megaheader {&lt;br /&gt;
     height:auto;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#megaheader img {&lt;br /&gt;
  -moz-transition: opacity 2s; /* Firefox 4 */&lt;br /&gt;
  -webkit-transition: opacity 2s; /* Safari and Chrome */&lt;br /&gt;
  -o-transition: opacity 2s;&lt;br /&gt;
  transition: opacity 2s;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Round button formatting */&lt;br /&gt;
&lt;br /&gt;
.roundbutton {&lt;br /&gt;
    display:inline-block; border-radius:50%; color:#ffffff; width:54px; height:54px; padding:12px; margin-right:0.5em; margin-bottom:0.5em; text-align:center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.roundbutton-large {&lt;br /&gt;
    display:inline-block; border-radius:50%; color:#ffffff; width:68px; height:68px; padding:15px; margin-right:0.5em; margin-bottom:0.5em; text-align:center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Copied from Wikivoyage for scalable-width images */&lt;br /&gt;
&lt;br /&gt;
@media screen and (max-width:767px) {&lt;br /&gt;
  .banner-image {&lt;br /&gt;
    position: relative;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    max-width: 1125px; &lt;br /&gt;
    width: 100%;&lt;br /&gt;
    height: auto;&lt;br /&gt;
    margin-bottom: .6em;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding-left: 0 !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image img {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    height: auto;&lt;br /&gt;
    width: auto\9;&lt;br /&gt;
    margin:0 auto;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (min-width:768px) {&lt;br /&gt;
  .banner-image {&lt;br /&gt;
    position: relative;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    max-width: 1125px; &lt;br /&gt;
    height: auto;&lt;br /&gt;
    margin-bottom: .6em;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image img {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    height: auto;&lt;br /&gt;
    width: auto\9;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-left {&lt;br /&gt;
    float: left !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-left img {&lt;br /&gt;
    float: left !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-right {&lt;br /&gt;
    float: right !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-right img {&lt;br /&gt;
    float: right !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-none {&lt;br /&gt;
    float: none !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-none img {&lt;br /&gt;
    float: none !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-center {&lt;br /&gt;
    padding-left: none !important;&lt;br /&gt;
    float: none !important;&lt;br /&gt;
    margin-left: auto !important;&lt;br /&gt;
    margin-right: auto !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-center img {&lt;br /&gt;
    float: none !important;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (max-width:767px) {&lt;br /&gt;
	.no-narrow {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media screen and (min-width:768px) {&lt;br /&gt;
	.narrow-only {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Style for horizontal lists (separator following item).&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/Horizontal_lists&lt;br /&gt;
 * @revision 7 (2015-11-12)&lt;br /&gt;
 * @author [[User:Edokter]]&lt;br /&gt;
 */&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;&lt;br /&gt;
	display: inline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.nonumtoc .tocnumber {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.nonumtoc #toc ul,&lt;br /&gt;
.nonumtoc .toc ul {&lt;br /&gt;
	line-height: 1.5em;&lt;br /&gt;
	list-style: none none;&lt;br /&gt;
	margin: .3em 0 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hlist.nonumtoc #toc ul ul,&lt;br /&gt;
.hlist.nonumtoc .toc ul ul {&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	margin: 0;&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, .hlist dl ol, .hlist dl ul,&lt;br /&gt;
.hlist ol dl, .hlist ol ol, .hlist ol ul,&lt;br /&gt;
.hlist ul dl, .hlist ul ol, .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, .hlist dd dt:first-child:before, .hlist dd li:first-child:before,&lt;br /&gt;
.hlist dt dd:first-child:before, .hlist dt dt:first-child:before, .hlist dt li:first-child:before,&lt;br /&gt;
.hlist li dd:first-child:before, .hlist li dt:first-child:before, .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, .hlist dd dt:last-child:after, .hlist dd li:last-child:after,&lt;br /&gt;
.hlist dt dd:last-child:after, .hlist dt dt:last-child:after, .hlist dt li:last-child:after,&lt;br /&gt;
.hlist li dd:last-child:after, .hlist li dt:last-child:after, .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; &amp;quot;;&lt;br /&gt;
	white-space: nowrap;&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; &amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ----------------------------------------------&lt;br /&gt;
 * Generated by Animista on 2021-9-30 18:30:28&lt;br /&gt;
 * Licensed under FreeBSD License.&lt;br /&gt;
 * See http://animista.net/license for more info. &lt;br /&gt;
 * w: http://animista.net, t: @cssanimista&lt;br /&gt;
 * ---------------------------------------------- */&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 * animation bounce-in-top&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
.bounce-in-top {&lt;br /&gt;
	-webkit-animation: bounce-in-top 1.1s 1s both;&lt;br /&gt;
	        animation: bounce-in-top 1.1s 1s both;&lt;br /&gt;
}&lt;br /&gt;
@-webkit-keyframes bounce-in-top {&lt;br /&gt;
  0% {&lt;br /&gt;
    -webkit-transform: translateY(-500px);&lt;br /&gt;
            transform: translateY(-500px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
  }&lt;br /&gt;
  38% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
  }&lt;br /&gt;
  55% {&lt;br /&gt;
    -webkit-transform: translateY(-65px);&lt;br /&gt;
            transform: translateY(-65px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
  }&lt;br /&gt;
  72% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
  }&lt;br /&gt;
  81% {&lt;br /&gt;
    -webkit-transform: translateY(-28px);&lt;br /&gt;
            transform: translateY(-28px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
  }&lt;br /&gt;
  90% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
  }&lt;br /&gt;
  95% {&lt;br /&gt;
    -webkit-transform: translateY(-8px);&lt;br /&gt;
            transform: translateY(-8px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
  }&lt;br /&gt;
  100% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
@keyframes bounce-in-top {&lt;br /&gt;
  0% {&lt;br /&gt;
    -webkit-transform: translateY(-500px);&lt;br /&gt;
            transform: translateY(-500px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
  }&lt;br /&gt;
  38% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
  }&lt;br /&gt;
  55% {&lt;br /&gt;
    -webkit-transform: translateY(-65px);&lt;br /&gt;
            transform: translateY(-65px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
  }&lt;br /&gt;
  72% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
  }&lt;br /&gt;
  81% {&lt;br /&gt;
    -webkit-transform: translateY(-28px);&lt;br /&gt;
            transform: translateY(-28px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
  }&lt;br /&gt;
  90% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
  }&lt;br /&gt;
  95% {&lt;br /&gt;
    -webkit-transform: translateY(-8px);&lt;br /&gt;
            transform: translateY(-8px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
  }&lt;br /&gt;
  100% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 * animation tracking-in-expand&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
.tracking-in-expand {&lt;br /&gt;
	-webkit-animation: tracking-in-expand 0.7s cubic-bezier(0.215, 0.610, 0.355, 1.000) both;&lt;br /&gt;
	        animation: tracking-in-expand 0.7s cubic-bezier(0.215, 0.610, 0.355, 1.000) both;&lt;br /&gt;
}&lt;br /&gt;
@-webkit-keyframes tracking-in-expand {&lt;br /&gt;
  0% {&lt;br /&gt;
    letter-spacing: -0.5em;&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
  }&lt;br /&gt;
  40% {&lt;br /&gt;
    opacity: 0.6;&lt;br /&gt;
  }&lt;br /&gt;
  100% {&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
@keyframes tracking-in-expand {&lt;br /&gt;
  0% {&lt;br /&gt;
    letter-spacing: -0.5em;&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
  }&lt;br /&gt;
  40% {&lt;br /&gt;
    opacity: 0.6;&lt;br /&gt;
  }&lt;br /&gt;
  100% {&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 * animation text-shadow-pop-bl&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
.text-shadow-pop-bl {&lt;br /&gt;
	-webkit-animation: text-shadow-pop-bl 1s both;&lt;br /&gt;
	        animation: text-shadow-pop-bl 1s both;&lt;br /&gt;
}&lt;br /&gt;
@-webkit-keyframes text-shadow-pop-bl {&lt;br /&gt;
  0% {&lt;br /&gt;
    text-shadow: 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555;&lt;br /&gt;
    -webkit-transform: translateX(0) translateY(0);&lt;br /&gt;
            transform: translateX(0) translateY(0);&lt;br /&gt;
  }&lt;br /&gt;
  100% {&lt;br /&gt;
    text-shadow: -1px 1px #555555, -2px 2px #555555, -3px 3px #555555, -4px 4px #555555, -5px 5px #555555, -6px 6px #555555, -7px 7px #555555, -8px 8px #555555;&lt;br /&gt;
    -webkit-transform: translateX(8px) translateY(-8px);&lt;br /&gt;
            transform: translateX(8px) translateY(-8px);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
@keyframes text-shadow-pop-bl {&lt;br /&gt;
  0% {&lt;br /&gt;
    text-shadow: 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555;&lt;br /&gt;
    -webkit-transform: translateX(0) translateY(0);&lt;br /&gt;
            transform: translateX(0) translateY(0);&lt;br /&gt;
  }&lt;br /&gt;
  100% {&lt;br /&gt;
    text-shadow: -1px 1px #555555, -2px 2px #555555, -3px 3px #555555, -4px 4px #555555, -5px 5px #555555, -6px 6px #555555, -7px 7px #555555, -8px 8px #555555;&lt;br /&gt;
    -webkit-transform: translateX(8px) translateY(-8px);&lt;br /&gt;
            transform: translateX(8px) translateY(-8px);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 * Fondos con imágenes molonas&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
.bgp {&lt;br /&gt;
align-items: center;&lt;br /&gt;
background-image: url(https://upload.wikimedia.org/wikipedia/commons/e/e3/Wikipedia_logo_letters_banner.svg);&lt;br /&gt;
background-position: center;&lt;br /&gt;
background-repeat: no-repeat;&lt;br /&gt;
background-size: cover;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bglogo {&lt;br /&gt;
align-items: center;&lt;br /&gt;
background-image: url(https://upload.wikimedia.org/wikipedia/commons/2/23/Wikisp-logo-icon.svg);&lt;br /&gt;
background-position: right center;&lt;br /&gt;
background-origin: padding-box;&lt;br /&gt;
background-repeat: no-repeat;&lt;br /&gt;
background-size: 50%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* remove border from language bar */&lt;br /&gt;
.mw-pt-languages {&lt;br /&gt;
	border: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Ocultar título, categorías y fecha de la última edición en la Portada */&lt;br /&gt;
body.page-Página_principal h1.firstHeading,&lt;br /&gt;
body.page-Página_principal h1.pagetitle,&lt;br /&gt;
body.page-Página_principal p.subtitle,&lt;br /&gt;
body.page-Página_principal #catlinks,&lt;br /&gt;
body.page-Página_principal #footer-info-lastmod {&lt;br /&gt;
    display:none;&lt;br /&gt;
}&lt;br /&gt;
/* Hide title and edit tools on main page */&lt;br /&gt;
.page-Página_principal .mw-side,&lt;br /&gt;
.page-Página_principal #siteSub {&lt;br /&gt;
	display: none!important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Force override until skin is updated */&lt;br /&gt;
.skin-citizen blockquote {&lt;br /&gt;
	margin: 0.8rem 20px;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=MediaWiki:Common.css&amp;diff=7521</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=MediaWiki:Common.css&amp;diff=7521"/>
		<updated>2023-11-01T23:59:12Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;body, #firstHeading, h1, h2, h3, h4, h5,&lt;br /&gt;
.mw-body h1, .mw-body h2, .mw-body #firstHeading, &lt;br /&gt;
body em, body i, body strong {font-family: &#039;Open Sans&#039;, sans-serif;}&lt;br /&gt;
body.page-Página_principal.action-view h1.firstHeading, body.page-Página_principal.action-submit h1.firstHeading { display: none; }&lt;br /&gt;
&lt;br /&gt;
li#footer-info-lastmod,&lt;br /&gt;
li#footer-info-viewcount,&lt;br /&gt;
li#footer-places-about,&lt;br /&gt;
li#footer-places-disclaimer {&lt;br /&gt;
  display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-navigation h5 {&lt;br /&gt;
  display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.nowrap { &lt;br /&gt;
    white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.toggle-head {&lt;br /&gt;
  background:url(//upload.wikimedia.org/wikipedia/commons/thumb/1/1c/HW_open_arrow.svg/10px-HW_open_arrow.svg.png) no-repeat 0% center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.toggle-head:hover {&lt;br /&gt;
  text-decoration:underline;&lt;br /&gt;
  cursor:pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.redirect-in-category, .allpagesredirect a {&lt;br /&gt;
  color: gray;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.nodisplay {&lt;br /&gt;
  display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Ambox: Noticias y páginas de proyecto */&lt;br /&gt;
&lt;br /&gt;
table.ambox {&lt;br /&gt;
  width: 80%; &lt;br /&gt;
  margin: 0 auto; &lt;br /&gt;
  border-collapse: collapse; &lt;br /&gt;
  background: #f8fcff; &lt;br /&gt;
  border: 1px solid #aaa; &lt;br /&gt;
  border-left: 15px solid #39f;       /* Barra azul predeterminada */&lt;br /&gt;
}&lt;br /&gt;
table.ambox th, table.ambox td {      /* Celda(s) de mensajes */&lt;br /&gt;
  padding: 0.25em 0.5em;              /* 0.5em left/right */&lt;br /&gt;
}&lt;br /&gt;
table.ambox td.ambox-image {          /* Celda de img a la izquierda */&lt;br /&gt;
  width: 52px; &lt;br /&gt;
  padding: 2px 0px 2px 0.5em;         /* 0.5em left, 0px right */&lt;br /&gt;
  text-align: center; &lt;br /&gt;
}&lt;br /&gt;
table.ambox td.ambox-imageright {     /* Celda de img a la derecha */&lt;br /&gt;
  width: 52px; &lt;br /&gt;
  padding: 2px 0.5em 2px 0px;         /* 0px left, 0.5em right */&lt;br /&gt;
  text-align: center; &lt;br /&gt;
}&lt;br /&gt;
table.ambox-notice {&lt;br /&gt;
  border-left: 15px solid #0080FF;    /* Azul */&lt;br /&gt;
}&lt;br /&gt;
table.ambox-serious {&lt;br /&gt;
  border-left: 15px solid #C00;       /* Rojo */&lt;br /&gt;
}&lt;br /&gt;
table.ambox-content {&lt;br /&gt;
  border-left: 15px solid #F63;       /* Naranja */&lt;br /&gt;
}&lt;br /&gt;
table.ambox-style {&lt;br /&gt;
  border-left: 15px solid #FC3;       /* Amarillo */&lt;br /&gt;
}&lt;br /&gt;
table.ambox-merge {&lt;br /&gt;
  border-left: 15px solid #95B;       /* Purpura */&lt;br /&gt;
}&lt;br /&gt;
table.ambox-license {&lt;br /&gt;
  border-left: 15px solid #088A08;    /* Verde */&lt;br /&gt;
}&lt;br /&gt;
table.ambox-protection {&lt;br /&gt;
  border-left: 15px solid #BBA;       /* Gris */&lt;br /&gt;
}&lt;br /&gt;
/* Arrow button formatting */&lt;br /&gt;
&lt;br /&gt;
.arrowbutton {&lt;br /&gt;
	color:#ffffff;&lt;br /&gt;
	width:100px;&lt;br /&gt;
	padding:0.4em;&lt;br /&gt;
	line-height:1.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton::before {&lt;br /&gt;
	content:&amp;quot;⇒ &amp;quot;;&lt;br /&gt;
	font-weight:bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-red {&lt;br /&gt;
	background:#990000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-green {&lt;br /&gt;
	background:#339966;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-blue {&lt;br /&gt;
	background:#0063BF;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-gold {&lt;br /&gt;
	background:#E5B921;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-red:hover {&lt;br /&gt;
    background: #ffb3b3 !important;&lt;br /&gt;
    color: #000000 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-green:hover {&lt;br /&gt;
    background: #c6ecd9 !important;&lt;br /&gt;
    color: #000000 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-blue:hover {&lt;br /&gt;
    background: #b3daff !important;&lt;br /&gt;
    color: #000000 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-gold:hover {&lt;br /&gt;
    background: #faefcb !important;&lt;br /&gt;
    color: #000000 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Cortesía de Platonides */&lt;br /&gt;
#p-navigation { display: block; }&lt;br /&gt;
nav.vector-menu-portal { display: none; }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* estilo de tablas */&lt;br /&gt;
&lt;br /&gt;
table.rowlines { &lt;br /&gt;
    border-collapse:collapse;&lt;br /&gt;
    border: 2px solid #BBBDBF;&lt;br /&gt;
    width:  100%;&lt;br /&gt;
    vertical-align: top;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.rowlines th {&lt;br /&gt;
    border-bottom: 1px solid #BBBDBF;&lt;br /&gt;
    border-top:    1px solid #BBBDBF;&lt;br /&gt;
    padding:       5px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.rowlines td {&lt;br /&gt;
    border-bottom: 1px dotted #BBBDBF;&lt;br /&gt;
    padding:       5px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
div.rowlines-wrapper {&lt;br /&gt;
    padding: 0 10px 0 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Header mega template */&lt;br /&gt;
&lt;br /&gt;
#megaheader {&lt;br /&gt;
  position:relative;&lt;br /&gt;
  padding-bottom:1em;&lt;br /&gt;
  border:none;&lt;br /&gt;
  margin-bottom:2em;&lt;br /&gt;
  overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (min-width:982px) {&lt;br /&gt;
  #megaheader {&lt;br /&gt;
    margin-top:-3em;&lt;br /&gt;
    margin-left:-1.5em;&lt;br /&gt;
    margin-right:-1.5em;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (min-width:768px) and (max-width:981px) {&lt;br /&gt;
  #megaheader {&lt;br /&gt;
    margin-top:-2.7em;&lt;br /&gt;
    margin-left:-1em;&lt;br /&gt;
    margin-right:-1em;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (max-width:767px) {&lt;br /&gt;
  #megaheader {&lt;br /&gt;
    margin-top:-3em;&lt;br /&gt;
    margin-left:-1.15em;&lt;br /&gt;
    margin-right:-1.15em;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
@media screen and (min-width:768px) {&lt;br /&gt;
  #megaheader {&lt;br /&gt;
    height:500px;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  #megaheader-short {&lt;br /&gt;
  	height:200px;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (max-width:767px) {&lt;br /&gt;
  #megaheader {&lt;br /&gt;
     height:auto;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#megaheader img {&lt;br /&gt;
  -moz-transition: opacity 2s; /* Firefox 4 */&lt;br /&gt;
  -webkit-transition: opacity 2s; /* Safari and Chrome */&lt;br /&gt;
  -o-transition: opacity 2s;&lt;br /&gt;
  transition: opacity 2s;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Round button formatting */&lt;br /&gt;
&lt;br /&gt;
.roundbutton {&lt;br /&gt;
    display:inline-block; border-radius:50%; color:#ffffff; width:54px; height:54px; padding:12px; margin-right:0.5em; margin-bottom:0.5em; text-align:center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.roundbutton-large {&lt;br /&gt;
    display:inline-block; border-radius:50%; color:#ffffff; width:68px; height:68px; padding:15px; margin-right:0.5em; margin-bottom:0.5em; text-align:center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Copied from Wikivoyage for scalable-width images */&lt;br /&gt;
&lt;br /&gt;
@media screen and (max-width:767px) {&lt;br /&gt;
  .banner-image {&lt;br /&gt;
    position: relative;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    max-width: 1125px; &lt;br /&gt;
    width: 100%;&lt;br /&gt;
    height: auto;&lt;br /&gt;
    margin-bottom: .6em;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding-left: 0 !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image img {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    height: auto;&lt;br /&gt;
    width: auto\9;&lt;br /&gt;
    margin:0 auto;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (min-width:768px) {&lt;br /&gt;
  .banner-image {&lt;br /&gt;
    position: relative;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    max-width: 1125px; &lt;br /&gt;
    height: auto;&lt;br /&gt;
    margin-bottom: .6em;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image img {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    height: auto;&lt;br /&gt;
    width: auto\9;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-left {&lt;br /&gt;
    float: left !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-left img {&lt;br /&gt;
    float: left !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-right {&lt;br /&gt;
    float: right !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-right img {&lt;br /&gt;
    float: right !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-none {&lt;br /&gt;
    float: none !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-none img {&lt;br /&gt;
    float: none !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-center {&lt;br /&gt;
    padding-left: none !important;&lt;br /&gt;
    float: none !important;&lt;br /&gt;
    margin-left: auto !important;&lt;br /&gt;
    margin-right: auto !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-center img {&lt;br /&gt;
    float: none !important;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (max-width:767px) {&lt;br /&gt;
	.no-narrow {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media screen and (min-width:768px) {&lt;br /&gt;
	.narrow-only {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Style for horizontal lists (separator following item).&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/Horizontal_lists&lt;br /&gt;
 * @revision 7 (2015-11-12)&lt;br /&gt;
 * @author [[User:Edokter]]&lt;br /&gt;
 */&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;&lt;br /&gt;
	display: inline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.nonumtoc .tocnumber {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.nonumtoc #toc ul,&lt;br /&gt;
.nonumtoc .toc ul {&lt;br /&gt;
	line-height: 1.5em;&lt;br /&gt;
	list-style: none none;&lt;br /&gt;
	margin: .3em 0 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hlist.nonumtoc #toc ul ul,&lt;br /&gt;
.hlist.nonumtoc .toc ul ul {&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	margin: 0;&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, .hlist dl ol, .hlist dl ul,&lt;br /&gt;
.hlist ol dl, .hlist ol ol, .hlist ol ul,&lt;br /&gt;
.hlist ul dl, .hlist ul ol, .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, .hlist dd dt:first-child:before, .hlist dd li:first-child:before,&lt;br /&gt;
.hlist dt dd:first-child:before, .hlist dt dt:first-child:before, .hlist dt li:first-child:before,&lt;br /&gt;
.hlist li dd:first-child:before, .hlist li dt:first-child:before, .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, .hlist dd dt:last-child:after, .hlist dd li:last-child:after,&lt;br /&gt;
.hlist dt dd:last-child:after, .hlist dt dt:last-child:after, .hlist dt li:last-child:after,&lt;br /&gt;
.hlist li dd:last-child:after, .hlist li dt:last-child:after, .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; &amp;quot;;&lt;br /&gt;
	white-space: nowrap;&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; &amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ----------------------------------------------&lt;br /&gt;
 * Generated by Animista on 2021-9-30 18:30:28&lt;br /&gt;
 * Licensed under FreeBSD License.&lt;br /&gt;
 * See http://animista.net/license for more info. &lt;br /&gt;
 * w: http://animista.net, t: @cssanimista&lt;br /&gt;
 * ---------------------------------------------- */&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 * animation bounce-in-top&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
.bounce-in-top {&lt;br /&gt;
	-webkit-animation: bounce-in-top 1.1s 1s both;&lt;br /&gt;
	        animation: bounce-in-top 1.1s 1s both;&lt;br /&gt;
}&lt;br /&gt;
@-webkit-keyframes bounce-in-top {&lt;br /&gt;
  0% {&lt;br /&gt;
    -webkit-transform: translateY(-500px);&lt;br /&gt;
            transform: translateY(-500px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
  }&lt;br /&gt;
  38% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
  }&lt;br /&gt;
  55% {&lt;br /&gt;
    -webkit-transform: translateY(-65px);&lt;br /&gt;
            transform: translateY(-65px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
  }&lt;br /&gt;
  72% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
  }&lt;br /&gt;
  81% {&lt;br /&gt;
    -webkit-transform: translateY(-28px);&lt;br /&gt;
            transform: translateY(-28px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
  }&lt;br /&gt;
  90% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
  }&lt;br /&gt;
  95% {&lt;br /&gt;
    -webkit-transform: translateY(-8px);&lt;br /&gt;
            transform: translateY(-8px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
  }&lt;br /&gt;
  100% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
@keyframes bounce-in-top {&lt;br /&gt;
  0% {&lt;br /&gt;
    -webkit-transform: translateY(-500px);&lt;br /&gt;
            transform: translateY(-500px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
  }&lt;br /&gt;
  38% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
  }&lt;br /&gt;
  55% {&lt;br /&gt;
    -webkit-transform: translateY(-65px);&lt;br /&gt;
            transform: translateY(-65px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
  }&lt;br /&gt;
  72% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
  }&lt;br /&gt;
  81% {&lt;br /&gt;
    -webkit-transform: translateY(-28px);&lt;br /&gt;
            transform: translateY(-28px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
  }&lt;br /&gt;
  90% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
  }&lt;br /&gt;
  95% {&lt;br /&gt;
    -webkit-transform: translateY(-8px);&lt;br /&gt;
            transform: translateY(-8px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
  }&lt;br /&gt;
  100% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 * animation tracking-in-expand&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
.tracking-in-expand {&lt;br /&gt;
	-webkit-animation: tracking-in-expand 0.7s cubic-bezier(0.215, 0.610, 0.355, 1.000) both;&lt;br /&gt;
	        animation: tracking-in-expand 0.7s cubic-bezier(0.215, 0.610, 0.355, 1.000) both;&lt;br /&gt;
}&lt;br /&gt;
@-webkit-keyframes tracking-in-expand {&lt;br /&gt;
  0% {&lt;br /&gt;
    letter-spacing: -0.5em;&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
  }&lt;br /&gt;
  40% {&lt;br /&gt;
    opacity: 0.6;&lt;br /&gt;
  }&lt;br /&gt;
  100% {&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
@keyframes tracking-in-expand {&lt;br /&gt;
  0% {&lt;br /&gt;
    letter-spacing: -0.5em;&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
  }&lt;br /&gt;
  40% {&lt;br /&gt;
    opacity: 0.6;&lt;br /&gt;
  }&lt;br /&gt;
  100% {&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 * animation text-shadow-pop-bl&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
.text-shadow-pop-bl {&lt;br /&gt;
	-webkit-animation: text-shadow-pop-bl 1s both;&lt;br /&gt;
	        animation: text-shadow-pop-bl 1s both;&lt;br /&gt;
}&lt;br /&gt;
@-webkit-keyframes text-shadow-pop-bl {&lt;br /&gt;
  0% {&lt;br /&gt;
    text-shadow: 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555;&lt;br /&gt;
    -webkit-transform: translateX(0) translateY(0);&lt;br /&gt;
            transform: translateX(0) translateY(0);&lt;br /&gt;
  }&lt;br /&gt;
  100% {&lt;br /&gt;
    text-shadow: -1px 1px #555555, -2px 2px #555555, -3px 3px #555555, -4px 4px #555555, -5px 5px #555555, -6px 6px #555555, -7px 7px #555555, -8px 8px #555555;&lt;br /&gt;
    -webkit-transform: translateX(8px) translateY(-8px);&lt;br /&gt;
            transform: translateX(8px) translateY(-8px);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
@keyframes text-shadow-pop-bl {&lt;br /&gt;
  0% {&lt;br /&gt;
    text-shadow: 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555;&lt;br /&gt;
    -webkit-transform: translateX(0) translateY(0);&lt;br /&gt;
            transform: translateX(0) translateY(0);&lt;br /&gt;
  }&lt;br /&gt;
  100% {&lt;br /&gt;
    text-shadow: -1px 1px #555555, -2px 2px #555555, -3px 3px #555555, -4px 4px #555555, -5px 5px #555555, -6px 6px #555555, -7px 7px #555555, -8px 8px #555555;&lt;br /&gt;
    -webkit-transform: translateX(8px) translateY(-8px);&lt;br /&gt;
            transform: translateX(8px) translateY(-8px);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 * Fondos con imágenes molonas&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
.bgp {&lt;br /&gt;
align-items: center;&lt;br /&gt;
background-image: url(https://upload.wikimedia.org/wikipedia/commons/e/e3/Wikipedia_logo_letters_banner.svg);&lt;br /&gt;
background-position: center;&lt;br /&gt;
background-repeat: no-repeat;&lt;br /&gt;
background-size: cover;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bglogo {&lt;br /&gt;
align-items: center;&lt;br /&gt;
background-image: url(https://upload.wikimedia.org/wikipedia/commons/2/23/Wikisp-logo-icon.svg);&lt;br /&gt;
background-position: right center;&lt;br /&gt;
background-origin: padding-box;&lt;br /&gt;
background-repeat: no-repeat;&lt;br /&gt;
background-size: 50%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* remove border from language bar */&lt;br /&gt;
.mw-pt-languages {&lt;br /&gt;
	border: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Ocultar título, categorías y fecha de la última edición en la Portada */&lt;br /&gt;
body.page-Página_principal h1.firstHeading,&lt;br /&gt;
body.page-Página_principal h1.pagetitle,&lt;br /&gt;
body.page-Página_principal p.subtitle,&lt;br /&gt;
body.page-Página_principal #catlinks,&lt;br /&gt;
body.page-Página_principal #footer-info-lastmod {&lt;br /&gt;
    display:none;&lt;br /&gt;
}&lt;br /&gt;
/* Hide title and edit tools on main page */&lt;br /&gt;
.page-Página_principal .mw-side,&lt;br /&gt;
.page-Página_principal #siteSub {&lt;br /&gt;
	display: none!important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Force override until skin is updated */&lt;br /&gt;
.skin-citizen blockquote {&lt;br /&gt;
	margin: 0.8rem 20px;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
:root {&lt;br /&gt;
    --type-important: rgba(200, 0, 0, 0.8);&lt;br /&gt;
    --type-moderate: rgba(233, 124, 47, 0.8);&lt;br /&gt;
    --type-minor: rgba(241, 197, 37, 0.8);&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=MediaWiki:Citizen.css&amp;diff=7520</id>
		<title>MediaWiki:Citizen.css</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=MediaWiki:Citizen.css&amp;diff=7520"/>
		<updated>2023-11-01T23:57:42Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* All CSS here will be loaded for users of the Citizen skin */&lt;br /&gt;
/* Courtesy of starcitizen.tools */&lt;br /&gt;
:root {&lt;br /&gt;
	--color-primary__h: 205;&lt;br /&gt;
	--type-important: rgba(200, 0, 0, 0.8);&lt;br /&gt;
    --type-moderate: rgba(233, 124, 47, 0.8);&lt;br /&gt;
    --type-minor: rgba(241, 197, 37, 0.8);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Adjust contrast since we changed primary color */&lt;br /&gt;
:root.skin-citizen-dark {&lt;br /&gt;
	--color-primary__l: 56%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Align icon opacity with skin default */&lt;br /&gt;
.mw-logo-icon {&lt;br /&gt;
	opacity: var( --opacity-icon-base );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Footer icons&lt;br /&gt;
 * We use custom footer icons so we need to fine tune it&lt;br /&gt;
&lt;br /&gt;
/* More space between icons&lt;br /&gt;
#footer-icons ul {&lt;br /&gt;
	gap: var( --space-md );&lt;br /&gt;
}&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
/* Background responsive para las plantillas */&lt;br /&gt;
&lt;br /&gt;
.bgesp {&lt;br /&gt;
	background-color:#f9fafb;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-citizen-dark .bgesp {&lt;br /&gt;
	background-color: #1d2830;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Color de letra Púrpura para las plantillas */&lt;br /&gt;
&lt;br /&gt;
.purpura {&lt;br /&gt;
	color:#520044;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-citizen-dark .purpura {&lt;br /&gt;
	color: #df00b9;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Base CSS classes for demo. If you wish to use Mbox on your wiki, only copy the below. */&lt;br /&gt;
&lt;br /&gt;
.mbox {&lt;br /&gt;
    --type-important: rgba(200, 0, 0, 0.8);&lt;br /&gt;
    --type-moderate: rgba(233, 124, 47, 0.8);&lt;br /&gt;
    --type-minor: rgba(241, 197, 37, 0.8);&lt;br /&gt;
    display: flex;&lt;br /&gt;
    position: relative;&lt;br /&gt;
    background-color: var(--theme-page-background-color--secondary);&lt;br /&gt;
    border: 1px solid var(--theme-border-color);&lt;br /&gt;
    border-left-width: 8px;&lt;br /&gt;
    border-left-color: #d6d6d6;&lt;br /&gt;
    border-radius: 3px;&lt;br /&gt;
    margin-bottom: 5px;&lt;br /&gt;
    min-height: 32px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox.mbox-type-important {&lt;br /&gt;
    border-left-color: var(--type-important);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox.mbox-type-moderate {&lt;br /&gt;
    border-left-color: var(--type-moderate);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox.mbox-type-minor {&lt;br /&gt;
    border-left-color: var(--type-minor);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content {&lt;br /&gt;
    display: table;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    padding: 8px 15px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__image {&lt;br /&gt;
    display: table-cell;&lt;br /&gt;
    width: 40px;&lt;br /&gt;
    height: 100%;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    vertical-align: middle;&lt;br /&gt;
    padding-right: 15px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__wrapper {&lt;br /&gt;
    display: table-cell;&lt;br /&gt;
    vertical-align: middle;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__header {&lt;br /&gt;
    display: block;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__text {&lt;br /&gt;
    display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__text__comment {&lt;br /&gt;
    font-size: small;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__aside {&lt;br /&gt;
    display: table-cell;&lt;br /&gt;
    width: 100px;&lt;br /&gt;
    vertical-align: middle;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 0 15px;&lt;br /&gt;
    border-left: 1px solid #d6d6d6;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__close {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    right: 0;&lt;br /&gt;
    top: 0;&lt;br /&gt;
    padding: 2px 7px;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    font-size: 16px;&lt;br /&gt;
    color: #bbb;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    transition: all .15s ease-in;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__close:hover {&lt;br /&gt;
    color: #777;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__close:after {&lt;br /&gt;
    content: &#039;×&#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-collapsed + .mbox__close {&lt;br /&gt;
    transform: rotate(45deg);&lt;br /&gt;
    padding: 4px 7px 5px 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile skin fixes */&lt;br /&gt;
.skin-fandommobile .mbox__content__image {&lt;br /&gt;
    width: 60px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-fandommobile .mbox__content__image .article-media-thumbnail {&lt;br /&gt;
    margin-bottom: unset;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Wookieepedia-style Mbox demo. */&lt;br /&gt;
.mbox--wook {&lt;br /&gt;
    background-color: #7bb0d8;&lt;br /&gt;
    border: none;&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox--wook .mbox__close {&lt;br /&gt;
    color: #0c8787;&lt;br /&gt;
    font-weight: normal;&lt;br /&gt;
    font-size: 13px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox--wook .mbox__close:after {&lt;br /&gt;
    content: &#039;[hide]&#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox--wook .mw-collapsed + .mbox__close {&lt;br /&gt;
    transform: none;&lt;br /&gt;
    padding: 2px 7px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox--wook .mw-collapsed + .mbox__close:after {&lt;br /&gt;
    content: &#039;[show]&#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Final Fantasy-style Mbox demo. */&lt;br /&gt;
.theme-fandomdesktop-light .mbox--ff {&lt;br /&gt;
    border-top: 1px solid #afaa84;&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
    background: linear-gradient(180deg,rgba(255,255,246,1) 0,rgba(247,219,185,1) 40px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.theme-fandomdesktop-dark .mbox--ff {&lt;br /&gt;
    border-top: 3px solid #1e9de3 !important;&lt;br /&gt;
    border: 0;&lt;br /&gt;
    background: linear-gradient(180deg,rgba(5,37,78,.5) 0,rgba(5,37,78,.5) 75%,rgba(5,37,78,0));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Message Boxes */&lt;br /&gt;
.mbox {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	position: relative;&lt;br /&gt;
	background-color: var(--theme-page-background-color--secondary);&lt;br /&gt;
	border: 1px solid;&lt;br /&gt;
	border-left-width: 8px;&lt;br /&gt;
	border-color: var(--blurple);&lt;br /&gt;
	border-radius: 3px;&lt;br /&gt;
	margin-bottom: 5px;&lt;br /&gt;
	min-height: 32px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox.mbox-type-warn {&lt;br /&gt;
	border-color: var(--yellow);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox.mbox-type-red {&lt;br /&gt;
	border-color: var(--red);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content {&lt;br /&gt;
	display: table;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	padding: 8px 15px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__image {&lt;br /&gt;
	display: table-cell;&lt;br /&gt;
	width: 40px;&lt;br /&gt;
	height: 100%;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
	padding-right: 15px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__wrapper {&lt;br /&gt;
	display: table-cell;&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__header {&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__text {&lt;br /&gt;
	display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__text__comment {&lt;br /&gt;
	font-size: small;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__aside {&lt;br /&gt;
	display: table-cell;&lt;br /&gt;
	width: 100px;&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding-left: 15px;&lt;br /&gt;
	border-left: 1px solid var(--theme-border-color);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__close {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* User badges */&lt;br /&gt;
#userProfileApp .user-identity-header__tag {&lt;br /&gt;
	background-color: var(--theme-accent-color);&lt;br /&gt;
	color: var(--theme-accent-label-color);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Dark theme fixes */&lt;br /&gt;
.theme-fandomdesktop-dark .redirectText li, .theme-fandomdesktop-dark .redirectText a {&lt;br /&gt;
	filter: invert(1);&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=MediaWiki:Citizen.css&amp;diff=7519</id>
		<title>MediaWiki:Citizen.css</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=MediaWiki:Citizen.css&amp;diff=7519"/>
		<updated>2023-11-01T23:56:23Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* All CSS here will be loaded for users of the Citizen skin */&lt;br /&gt;
/* Courtesy of starcitizen.tools */&lt;br /&gt;
:root {&lt;br /&gt;
	--color-primary__h: 205;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Adjust contrast since we changed primary color */&lt;br /&gt;
:root.skin-citizen-dark {&lt;br /&gt;
	--color-primary__l: 56%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Align icon opacity with skin default */&lt;br /&gt;
.mw-logo-icon {&lt;br /&gt;
	opacity: var( --opacity-icon-base );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Footer icons&lt;br /&gt;
 * We use custom footer icons so we need to fine tune it&lt;br /&gt;
&lt;br /&gt;
/* More space between icons&lt;br /&gt;
#footer-icons ul {&lt;br /&gt;
	gap: var( --space-md );&lt;br /&gt;
}&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
/* Background responsive para las plantillas */&lt;br /&gt;
&lt;br /&gt;
.bgesp {&lt;br /&gt;
	background-color:#f9fafb;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-citizen-dark .bgesp {&lt;br /&gt;
	background-color: #1d2830;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Color de letra Púrpura para las plantillas */&lt;br /&gt;
&lt;br /&gt;
.purpura {&lt;br /&gt;
	color:#520044;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-citizen-dark .purpura {&lt;br /&gt;
	color: #df00b9;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Base CSS classes for demo. If you wish to use Mbox on your wiki, only copy the below. */&lt;br /&gt;
&lt;br /&gt;
.mbox {&lt;br /&gt;
    --type-important: rgba(200, 0, 0, 0.8);&lt;br /&gt;
    --type-moderate: rgba(233, 124, 47, 0.8);&lt;br /&gt;
    --type-minor: rgba(241, 197, 37, 0.8);&lt;br /&gt;
    display: flex;&lt;br /&gt;
    position: relative;&lt;br /&gt;
    background-color: var(--theme-page-background-color--secondary);&lt;br /&gt;
    border: 1px solid var(--theme-border-color);&lt;br /&gt;
    border-left-width: 8px;&lt;br /&gt;
    border-left-color: #d6d6d6;&lt;br /&gt;
    border-radius: 3px;&lt;br /&gt;
    margin-bottom: 5px;&lt;br /&gt;
    min-height: 32px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox.mbox-type-important {&lt;br /&gt;
    border-left-color: var(--type-important);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox.mbox-type-moderate {&lt;br /&gt;
    border-left-color: var(--type-moderate);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox.mbox-type-minor {&lt;br /&gt;
    border-left-color: var(--type-minor);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content {&lt;br /&gt;
    display: table;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    padding: 8px 15px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__image {&lt;br /&gt;
    display: table-cell;&lt;br /&gt;
    width: 40px;&lt;br /&gt;
    height: 100%;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    vertical-align: middle;&lt;br /&gt;
    padding-right: 15px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__wrapper {&lt;br /&gt;
    display: table-cell;&lt;br /&gt;
    vertical-align: middle;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__header {&lt;br /&gt;
    display: block;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__text {&lt;br /&gt;
    display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__text__comment {&lt;br /&gt;
    font-size: small;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__aside {&lt;br /&gt;
    display: table-cell;&lt;br /&gt;
    width: 100px;&lt;br /&gt;
    vertical-align: middle;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 0 15px;&lt;br /&gt;
    border-left: 1px solid #d6d6d6;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__close {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    right: 0;&lt;br /&gt;
    top: 0;&lt;br /&gt;
    padding: 2px 7px;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    font-size: 16px;&lt;br /&gt;
    color: #bbb;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    transition: all .15s ease-in;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__close:hover {&lt;br /&gt;
    color: #777;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__close:after {&lt;br /&gt;
    content: &#039;×&#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-collapsed + .mbox__close {&lt;br /&gt;
    transform: rotate(45deg);&lt;br /&gt;
    padding: 4px 7px 5px 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile skin fixes */&lt;br /&gt;
.skin-fandommobile .mbox__content__image {&lt;br /&gt;
    width: 60px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-fandommobile .mbox__content__image .article-media-thumbnail {&lt;br /&gt;
    margin-bottom: unset;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Wookieepedia-style Mbox demo. */&lt;br /&gt;
.mbox--wook {&lt;br /&gt;
    background-color: #7bb0d8;&lt;br /&gt;
    border: none;&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox--wook .mbox__close {&lt;br /&gt;
    color: #0c8787;&lt;br /&gt;
    font-weight: normal;&lt;br /&gt;
    font-size: 13px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox--wook .mbox__close:after {&lt;br /&gt;
    content: &#039;[hide]&#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox--wook .mw-collapsed + .mbox__close {&lt;br /&gt;
    transform: none;&lt;br /&gt;
    padding: 2px 7px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox--wook .mw-collapsed + .mbox__close:after {&lt;br /&gt;
    content: &#039;[show]&#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Final Fantasy-style Mbox demo. */&lt;br /&gt;
.theme-fandomdesktop-light .mbox--ff {&lt;br /&gt;
    border-top: 1px solid #afaa84;&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
    background: linear-gradient(180deg,rgba(255,255,246,1) 0,rgba(247,219,185,1) 40px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.theme-fandomdesktop-dark .mbox--ff {&lt;br /&gt;
    border-top: 3px solid #1e9de3 !important;&lt;br /&gt;
    border: 0;&lt;br /&gt;
    background: linear-gradient(180deg,rgba(5,37,78,.5) 0,rgba(5,37,78,.5) 75%,rgba(5,37,78,0));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Message Boxes */&lt;br /&gt;
.mbox {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	position: relative;&lt;br /&gt;
	background-color: var(--theme-page-background-color--secondary);&lt;br /&gt;
	border: 1px solid;&lt;br /&gt;
	border-left-width: 8px;&lt;br /&gt;
	border-color: var(--blurple);&lt;br /&gt;
	border-radius: 3px;&lt;br /&gt;
	margin-bottom: 5px;&lt;br /&gt;
	min-height: 32px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox.mbox-type-warn {&lt;br /&gt;
	border-color: var(--yellow);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox.mbox-type-red {&lt;br /&gt;
	border-color: var(--red);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content {&lt;br /&gt;
	display: table;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	padding: 8px 15px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__image {&lt;br /&gt;
	display: table-cell;&lt;br /&gt;
	width: 40px;&lt;br /&gt;
	height: 100%;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
	padding-right: 15px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__wrapper {&lt;br /&gt;
	display: table-cell;&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__header {&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__text {&lt;br /&gt;
	display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__text__comment {&lt;br /&gt;
	font-size: small;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__aside {&lt;br /&gt;
	display: table-cell;&lt;br /&gt;
	width: 100px;&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding-left: 15px;&lt;br /&gt;
	border-left: 1px solid var(--theme-border-color);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__close {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* User badges */&lt;br /&gt;
#userProfileApp .user-identity-header__tag {&lt;br /&gt;
	background-color: var(--theme-accent-color);&lt;br /&gt;
	color: var(--theme-accent-label-color);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Dark theme fixes */&lt;br /&gt;
.theme-fandomdesktop-dark .redirectText li, .theme-fandomdesktop-dark .redirectText a {&lt;br /&gt;
	filter: invert(1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
:root {&lt;br /&gt;
    --type-important: rgba(200, 0, 0, 0.8);&lt;br /&gt;
    --type-moderate: rgba(233, 124, 47, 0.8);&lt;br /&gt;
    --type-minor: rgba(241, 197, 37, 0.8);&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=MediaWiki:Citizen.css&amp;diff=7518</id>
		<title>MediaWiki:Citizen.css</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=MediaWiki:Citizen.css&amp;diff=7518"/>
		<updated>2023-11-01T23:55:31Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* All CSS here will be loaded for users of the Citizen skin */&lt;br /&gt;
/* Courtesy of starcitizen.tools */&lt;br /&gt;
:root {&lt;br /&gt;
	--color-primary__h: 205;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Adjust contrast since we changed primary color */&lt;br /&gt;
:root.skin-citizen-dark {&lt;br /&gt;
	--color-primary__l: 56%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Align icon opacity with skin default */&lt;br /&gt;
.mw-logo-icon {&lt;br /&gt;
	opacity: var( --opacity-icon-base );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Footer icons&lt;br /&gt;
 * We use custom footer icons so we need to fine tune it&lt;br /&gt;
&lt;br /&gt;
/* More space between icons&lt;br /&gt;
#footer-icons ul {&lt;br /&gt;
	gap: var( --space-md );&lt;br /&gt;
}&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
/* Background responsive para las plantillas */&lt;br /&gt;
&lt;br /&gt;
.bgesp {&lt;br /&gt;
	background-color:#f9fafb;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-citizen-dark .bgesp {&lt;br /&gt;
	background-color: #1d2830;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Color de letra Púrpura para las plantillas */&lt;br /&gt;
&lt;br /&gt;
.purpura {&lt;br /&gt;
	color:#520044;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-citizen-dark .purpura {&lt;br /&gt;
	color: #df00b9;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Base CSS classes for demo. If you wish to use Mbox on your wiki, only copy the below. */&lt;br /&gt;
&lt;br /&gt;
.mbox {&lt;br /&gt;
    --type-important: rgba(200, 0, 0, 0.8);&lt;br /&gt;
    --type-moderate: rgba(233, 124, 47, 0.8);&lt;br /&gt;
    --type-minor: rgba(241, 197, 37, 0.8);&lt;br /&gt;
    display: flex;&lt;br /&gt;
    position: relative;&lt;br /&gt;
    background-color: var(--theme-page-background-color--secondary);&lt;br /&gt;
    border: 1px solid var(--theme-border-color);&lt;br /&gt;
    border-left-width: 8px;&lt;br /&gt;
    border-left-color: #d6d6d6;&lt;br /&gt;
    border-radius: 3px;&lt;br /&gt;
    margin-bottom: 5px;&lt;br /&gt;
    min-height: 32px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox.mbox-type-important {&lt;br /&gt;
    border-left-color: var(--type-important);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox.mbox-type-moderate {&lt;br /&gt;
    border-left-color: var(--type-moderate);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox.mbox-type-minor {&lt;br /&gt;
    border-left-color: var(--type-minor);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content {&lt;br /&gt;
    display: table;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    padding: 8px 15px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__image {&lt;br /&gt;
    display: table-cell;&lt;br /&gt;
    width: 40px;&lt;br /&gt;
    height: 100%;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    vertical-align: middle;&lt;br /&gt;
    padding-right: 15px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__wrapper {&lt;br /&gt;
    display: table-cell;&lt;br /&gt;
    vertical-align: middle;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__header {&lt;br /&gt;
    display: block;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__text {&lt;br /&gt;
    display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__text__comment {&lt;br /&gt;
    font-size: small;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__aside {&lt;br /&gt;
    display: table-cell;&lt;br /&gt;
    width: 100px;&lt;br /&gt;
    vertical-align: middle;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 0 15px;&lt;br /&gt;
    border-left: 1px solid #d6d6d6;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__close {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    right: 0;&lt;br /&gt;
    top: 0;&lt;br /&gt;
    padding: 2px 7px;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    font-size: 16px;&lt;br /&gt;
    color: #bbb;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    transition: all .15s ease-in;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__close:hover {&lt;br /&gt;
    color: #777;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__close:after {&lt;br /&gt;
    content: &#039;×&#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-collapsed + .mbox__close {&lt;br /&gt;
    transform: rotate(45deg);&lt;br /&gt;
    padding: 4px 7px 5px 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile skin fixes */&lt;br /&gt;
.skin-fandommobile .mbox__content__image {&lt;br /&gt;
    width: 60px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-fandommobile .mbox__content__image .article-media-thumbnail {&lt;br /&gt;
    margin-bottom: unset;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Wookieepedia-style Mbox demo. */&lt;br /&gt;
.mbox--wook {&lt;br /&gt;
    background-color: #7bb0d8;&lt;br /&gt;
    border: none;&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox--wook .mbox__close {&lt;br /&gt;
    color: #0c8787;&lt;br /&gt;
    font-weight: normal;&lt;br /&gt;
    font-size: 13px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox--wook .mbox__close:after {&lt;br /&gt;
    content: &#039;[hide]&#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox--wook .mw-collapsed + .mbox__close {&lt;br /&gt;
    transform: none;&lt;br /&gt;
    padding: 2px 7px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox--wook .mw-collapsed + .mbox__close:after {&lt;br /&gt;
    content: &#039;[show]&#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Final Fantasy-style Mbox demo. */&lt;br /&gt;
.theme-fandomdesktop-light .mbox--ff {&lt;br /&gt;
    border-top: 1px solid #afaa84;&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
    background: linear-gradient(180deg,rgba(255,255,246,1) 0,rgba(247,219,185,1) 40px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.theme-fandomdesktop-dark .mbox--ff {&lt;br /&gt;
    border-top: 3px solid #1e9de3 !important;&lt;br /&gt;
    border: 0;&lt;br /&gt;
    background: linear-gradient(180deg,rgba(5,37,78,.5) 0,rgba(5,37,78,.5) 75%,rgba(5,37,78,0));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Message Boxes */&lt;br /&gt;
.mbox {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	position: relative;&lt;br /&gt;
	background-color: var(--theme-page-background-color--secondary);&lt;br /&gt;
	border: 1px solid;&lt;br /&gt;
	border-left-width: 8px;&lt;br /&gt;
	border-color: var(--blurple);&lt;br /&gt;
	border-radius: 3px;&lt;br /&gt;
	margin-bottom: 5px;&lt;br /&gt;
	min-height: 32px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox.mbox-type-warn {&lt;br /&gt;
	border-color: var(--yellow);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox.mbox-type-red {&lt;br /&gt;
	border-color: var(--red);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content {&lt;br /&gt;
	display: table;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	padding: 8px 15px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__image {&lt;br /&gt;
	display: table-cell;&lt;br /&gt;
	width: 40px;&lt;br /&gt;
	height: 100%;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
	padding-right: 15px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__wrapper {&lt;br /&gt;
	display: table-cell;&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__header {&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__text {&lt;br /&gt;
	display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__text__comment {&lt;br /&gt;
	font-size: small;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__aside {&lt;br /&gt;
	display: table-cell;&lt;br /&gt;
	width: 100px;&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding-left: 15px;&lt;br /&gt;
	border-left: 1px solid var(--theme-border-color);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__close {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* User badges */&lt;br /&gt;
#userProfileApp .user-identity-header__tag {&lt;br /&gt;
	background-color: var(--theme-accent-color);&lt;br /&gt;
	color: var(--theme-accent-label-color);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Dark theme fixes */&lt;br /&gt;
.theme-fandomdesktop-dark .redirectText li, .theme-fandomdesktop-dark .redirectText a {&lt;br /&gt;
	filter: invert(1);&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=M%C3%B3dulo:Arguments/i18n&amp;diff=7517</id>
		<title>Módulo:Arguments/i18n</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=M%C3%B3dulo:Arguments/i18n&amp;diff=7517"/>
		<updated>2023-11-01T23:53:51Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: Página creada con «-- &amp;lt;nowiki&amp;gt; return {     [&amp;quot;en&amp;quot;] = {         [&amp;quot;error-value-func&amp;quot;] = &amp;quot;bad value assigned to option \&amp;quot;valueFunc\&amp;quot; (function expected, got $1)&amp;quot;,         [&amp;quot;error-overwrite-permission&amp;quot;] = &amp;quot;could not write to argument table key \&amp;quot;$1\&amp;quot;; overwriting existing arguments is not permitted&amp;quot;,         [&amp;quot;error-write-permission&amp;quot;] = &amp;quot;could not write to argument table key \&amp;quot;$1\&amp;quot;; the table is read-only&amp;quot;     },     [&amp;quot;qqq&amp;quot;] = {         [&amp;quot;error-value-func&amp;quot;] = &amp;quot;Error thrown when options.valu…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- &amp;lt;nowiki&amp;gt;&lt;br /&gt;
return {&lt;br /&gt;
    [&amp;quot;en&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;error-value-func&amp;quot;] = &amp;quot;bad value assigned to option \&amp;quot;valueFunc\&amp;quot; (function expected, got $1)&amp;quot;,&lt;br /&gt;
        [&amp;quot;error-overwrite-permission&amp;quot;] = &amp;quot;could not write to argument table key \&amp;quot;$1\&amp;quot;; overwriting existing arguments is not permitted&amp;quot;,&lt;br /&gt;
        [&amp;quot;error-write-permission&amp;quot;] = &amp;quot;could not write to argument table key \&amp;quot;$1\&amp;quot;; the table is read-only&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;qqq&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;error-value-func&amp;quot;] = &amp;quot;Error thrown when options.valueFunc is not a function&amp;quot;,&lt;br /&gt;
        [&amp;quot;error-overwrite-permission&amp;quot;] = &amp;quot;Error thrown after write attempt to existing arguments when options.noOverwrite is true&amp;quot;,&lt;br /&gt;
        [&amp;quot;error-write-permission&amp;quot;] = &amp;quot;Error thrown after write attempt to arguments when options.readOnly is true&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;bn&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;error-value-func&amp;quot;] = &amp;quot;\&amp;quot;valueFunc\&amp;quot; কে খারাপ ভ্যালু দেয়া হয়েছে। (fফাঙ্কশনের অপক্ষা করতে $1 পেয়েছে)&amp;quot;,&lt;br /&gt;
        [&amp;quot;error-overwrite-permission&amp;quot;] = &amp;quot;আর্গুমেন্ট টেবিল কী \&amp;quot;$1\&amp;quot; কে লিখতে পারেনি ; আগের থেকে থাকা আর্গুমেন্ট কে ওভাররাইট করার অনুমতি নাই&amp;quot;,&lt;br /&gt;
        [&amp;quot;error-write-permission&amp;quot;] = &amp;quot;আর্গুমেন্ট টেবিল কী \&amp;quot;$1\&amp;quot; কে ওভাররাইট করতে পৰ যায়নি; এই টেবিলটি রিড-অনলি&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;de&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;error-value-func&amp;quot;] = &amp;quot;der Option „valueFunc“ wurde ein falscher Wert zugewiesen (Funktion erwartet, erhielt $1)&amp;quot;,&lt;br /&gt;
        [&amp;quot;error-overwrite-permission&amp;quot;] = &amp;quot;konnte nicht in den Argument Tabellenschlüssel „$1“ schreiben; das Überschreiben vorhandener Argumente ist nicht erlaubt&amp;quot;,&lt;br /&gt;
        [&amp;quot;error-write-permission&amp;quot;] = &amp;quot;konnte nicht in das Argument Tabellenschlüssel „$1“ schreiben; die Tabelle ist schreibgeschützt&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;fr&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;error-value-func&amp;quot;] = &amp;quot;valeur invalide assignée à une option \&amp;quot;valueFunc\&amp;quot; (fonction espérée, donne $1)&amp;quot;,&lt;br /&gt;
        [&amp;quot;error-overwrite-permission&amp;quot;] = &amp;quot;impossible d&#039;écrire dans la clé du tableau des arguments \&amp;quot;$1\&amp;quot;; l&#039;écrasement des arguments existants n&#039;est pas autorisé&amp;quot;,&lt;br /&gt;
        [&amp;quot;error-write-permission&amp;quot;] = &amp;quot;impossible d&#039;écrire dans la clé du tableau des arguments \&amp;quot;$1\&amp;quot;; le tableau est en mode lecture-seule&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;hi&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;error-value-func&amp;quot;] = &amp;quot;\&amp;quot;valueFunc\&amp;quot; फंक्शन को बुरा वैल्यू निर्धारित किया गया है (फंक्शन की अपेक्षा की, $1 पाया)&amp;quot;,&lt;br /&gt;
        [&amp;quot;error-overwrite-permission&amp;quot;] = &amp;quot;तर्क टेबल की \&amp;quot;$1\&amp;quot; पर ओवर्राइट नहीं किया जा सका; मौजूदा तर्कों को ओवर्राइट करने की अनुमति नहीं है&amp;quot;,&lt;br /&gt;
        [&amp;quot;error-write-permission&amp;quot;] = &amp;quot;तर्क टेबल की \&amp;quot;$1\&amp;quot; पर ओवर्राइट नहीं किया जा सका; टेबल केवल पठन के लिए है&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ru&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;error-value-func&amp;quot;] = &amp;quot;параметру \&amp;quot;valueFunc\&amp;quot; присвоено неверное значение (ожидается функция, предоставлено $1)&amp;quot;,&lt;br /&gt;
        [&amp;quot;error-overwrite-permission&amp;quot;] = &amp;quot;невозможно записать аргумент \&amp;quot;$1\&amp;quot;: перезаписывать существующие аргументы запрещено&amp;quot;,&lt;br /&gt;
        [&amp;quot;error-write-permission&amp;quot;] = &amp;quot;невозможно записать аргумент \&amp;quot;$1\&amp;quot;: таблица находится в режиме \&amp;quot;только чтение\&amp;quot;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;tr&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;error-value-func&amp;quot;] = &amp;quot;\&amp;quot;valueFunc\&amp;quot; seçeneğine atanan hatalı değer (işlev beklendi, $1 alındı)&amp;quot;,&lt;br /&gt;
        [&amp;quot;error-overwrite-permission&amp;quot;] = &amp;quot;\&amp;quot;$1\&amp;quot; bağımsız değişken tablosu anahtarına yazılamadı; mevcut bağımsız değişkenlerin üzerine yazılmasına izin verilmez&amp;quot;,&lt;br /&gt;
        [&amp;quot;error-write-permission&amp;quot;] = &amp;quot;\&amp;quot;$1\&amp;quot; bağımsız değişken tablosu anahtarına yazılamadı; tablo salt okunurdur&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=M%C3%B3dulo:Entrypoint&amp;diff=7516</id>
		<title>Módulo:Entrypoint</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=M%C3%B3dulo:Entrypoint&amp;diff=7516"/>
		<updated>2023-11-01T23:52:42Z</updated>

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

		<summary type="html">&lt;p&gt;Jsmura: Página creada con «-- Language fallback rules for other Lua modules. -- @see       https://commons.wikimedia.org/wiki/Module:Fallbacklist -- @release   2017-01-01T20:33:00.000Z -- @submodule return {      -- crh (Crimean Tatar) cluster: crh-cyrl , crh-latn -&amp;gt; crh (Crimean Tatar)     [&amp;#039;crh&amp;#039;]          = {&amp;#039;crh-latn&amp;#039;},     [&amp;#039;crh-cyrl&amp;#039;]     = {&amp;#039;crh&amp;#039;, &amp;#039;ru&amp;#039;},      [&amp;#039;crh-latn&amp;#039;]     = {&amp;#039;crh&amp;#039;},      -- de (German) cluster:     [&amp;#039;als&amp;#039;]          = {&amp;#039;gsw&amp;#039;, &amp;#039;de&amp;#039;},                       -- Alemannisch…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Language fallback rules for other Lua modules.&lt;br /&gt;
-- @see       https://commons.wikimedia.org/wiki/Module:Fallbacklist&lt;br /&gt;
-- @release   2017-01-01T20:33:00.000Z&lt;br /&gt;
-- @submodule&lt;br /&gt;
return {&lt;br /&gt;
&lt;br /&gt;
    -- crh (Crimean Tatar) cluster: crh-cyrl , crh-latn -&amp;gt; crh (Crimean Tatar)&lt;br /&gt;
    [&#039;crh&#039;]          = {&#039;crh-latn&#039;},&lt;br /&gt;
    [&#039;crh-cyrl&#039;]     = {&#039;crh&#039;, &#039;ru&#039;}, &lt;br /&gt;
    [&#039;crh-latn&#039;]     = {&#039;crh&#039;},&lt;br /&gt;
&lt;br /&gt;
    -- de (German) cluster:&lt;br /&gt;
    [&#039;als&#039;]          = {&#039;gsw&#039;, &#039;de&#039;},                       -- Alemannisch&lt;br /&gt;
    [&#039;bar&#039;]          = {&#039;de&#039;},                              -- Bavarian&lt;br /&gt;
    [&#039;de-at&#039;]        = {&#039;de&#039;},                              -- Austrian German&lt;br /&gt;
    [&#039;de-ch&#039;]        = {&#039;de&#039;},                              -- Swiss High German&lt;br /&gt;
    [&#039;de-formal&#039;]    = {&#039;de&#039;},                              -- German (formal address)&lt;br /&gt;
    [&#039;dsb&#039;]          = {&#039;de&#039;},                              -- Lower Sorbian&lt;br /&gt;
    [&#039;frr&#039;]          = {&#039;de&#039;},                              -- Northern Frisian&lt;br /&gt;
    [&#039;hsb&#039;]          = {&#039;de&#039;},                              -- Upper Sorbian&lt;br /&gt;
    [&#039;ksh&#039;]          = {&#039;de&#039;},                              -- Colognian&lt;br /&gt;
    [&#039;lb&#039;]           = {&#039;de&#039;},                              -- Luxembourgish&lt;br /&gt;
    [&#039;nds&#039;]          = {&#039;nds-nl&#039;, &#039;de&#039;},                    -- Low German&lt;br /&gt;
    [&#039;nds-nl&#039;]       = {&#039;nds&#039;, &#039;nl&#039;},                       -- Low Saxon (Netherlands)&lt;br /&gt;
    [&#039;pdc&#039;]          = {&#039;de&#039;},                              -- Deitsch&lt;br /&gt;
    [&#039;pdt&#039;]          = {&#039;nds&#039;, &#039;de&#039;},                       -- Plautdietsch&lt;br /&gt;
    [&#039;pfl&#039;]          = {&#039;de&#039;},                              -- Pälzisch&lt;br /&gt;
    [&#039;sli&#039;]          = {&#039;de&#039;},                              -- Lower Silesian&lt;br /&gt;
    [&#039;stq&#039;]          = {&#039;de&#039;},                              -- Seeltersk&lt;br /&gt;
    [&#039;vmf&#039;]          = {&#039;de&#039;},                              -- Upper Franconian&lt;br /&gt;
&lt;br /&gt;
    -- es (Spanish) cluster&lt;br /&gt;
    [&#039;an&#039;]           = {&#039;es&#039;},                              -- Aragonese&lt;br /&gt;
    [&#039;arn&#039;]          = {&#039;es&#039;},                              -- Mapuche&lt;br /&gt;
    [&#039;ay&#039;]           = {&#039;es&#039;},                              -- Aymara&lt;br /&gt;
    [&#039;cbk-zam&#039;]      = {&#039;es&#039;},                              -- Chavacano de Zamboanga&lt;br /&gt;
    [&#039;gn&#039;]           = {&#039;es&#039;},                              -- Guarani&lt;br /&gt;
    [&#039;lad&#039;]          = {&#039;es&#039;},                              -- Ladino&lt;br /&gt;
    [&#039;nah&#039;]          = {&#039;es&#039;},                              -- Nahuatl&lt;br /&gt;
    [&#039;qu&#039;]           = {&#039;es&#039;},                              -- Quechua&lt;br /&gt;
    [&#039;qug&#039;]          = {&#039;qu&#039;, &#039;es&#039;},                        -- Runa shimi&lt;br /&gt;
&lt;br /&gt;
    -- et (Estonian) cluster&lt;br /&gt;
    [&#039;liv&#039;]          = {&#039;et&#039;},                              -- Līvõ kēļ&lt;br /&gt;
    [&#039;vep&#039;]          = {&#039;et&#039;},                              -- Veps&lt;br /&gt;
    [&#039;vro&#039;]          = {&#039;et&#039;},                              -- Võro&lt;br /&gt;
    [&#039;fiu-vro&#039;]      = {&#039;vro&#039;, &#039;et&#039;},                       -- Võro&lt;br /&gt;
&lt;br /&gt;
    -- fa (Persian) cluster&lt;br /&gt;
    [&#039;bcc&#039;]          = {&#039;fa&#039;},                              -- Southern Balochi&lt;br /&gt;
    [&#039;bqi&#039;]          = {&#039;fa&#039;},                              -- Bakhtiari&lt;br /&gt;
    [&#039;glk&#039;]          = {&#039;fa&#039;},                              -- Gilaki&lt;br /&gt;
    [&#039;mzn&#039;]          = {&#039;fa&#039;},                              -- Mazandarani&lt;br /&gt;
&lt;br /&gt;
    -- fi (Finnish) cluster:&lt;br /&gt;
    [&#039;fit&#039;]          = {&#039;fi&#039;},                              -- meänkieli&lt;br /&gt;
    [&#039;vot&#039;]          = {&#039;fi&#039;},                              -- Votic&lt;br /&gt;
&lt;br /&gt;
    -- fr (French) cluster:&lt;br /&gt;
    [&#039;bm&#039;]           = {&#039;fr&#039;},                              -- Bambara&lt;br /&gt;
    [&#039;br&#039;]           = {&#039;fr&#039;},                              -- Breton&lt;br /&gt;
    [&#039;co&#039;]           = {&#039;fr&#039;},                              -- Corsican&lt;br /&gt;
    [&#039;ff&#039;]           = {&#039;fr&#039;},                              -- Fulah&lt;br /&gt;
    [&#039;frc&#039;]          = {&#039;fr&#039;},                              -- Cajun French&lt;br /&gt;
    [&#039;frp&#039;]          = {&#039;fr&#039;},                              -- Franco-Provençal&lt;br /&gt;
    [&#039;ht&#039;]           = {&#039;fr&#039;},                              -- Haitian&lt;br /&gt;
    [&#039;ln&#039;]           = {&#039;fr&#039;},                              -- Lingala&lt;br /&gt;
    [&#039;mg&#039;]           = {&#039;fr&#039;},                              -- Malagasy&lt;br /&gt;
    [&#039;pcd&#039;]          = {&#039;fr&#039;},                              -- Picard&lt;br /&gt;
    [&#039;sg&#039;]           = {&#039;fr&#039;},                              -- Sango&lt;br /&gt;
    [&#039;ty&#039;]           = {&#039;fr&#039;},                              -- Tahitian&lt;br /&gt;
    [&#039;wa&#039;]           = {&#039;fr&#039;},                              -- Walloon&lt;br /&gt;
    [&#039;wo&#039;]           = {&#039;fr&#039;},                              -- Wolof&lt;br /&gt;
&lt;br /&gt;
    -- hi (Hindi) cluster&lt;br /&gt;
    [&#039;anp&#039;]          = {&#039;hi&#039;},                              -- Angika&lt;br /&gt;
    [&#039;mai&#039;]          = {&#039;hi&#039;},                              -- Maithili&lt;br /&gt;
    [&#039;sa&#039;]           = {&#039;hi&#039;},                              -- Sanskrit&lt;br /&gt;
&lt;br /&gt;
    -- hif (Fiji Hindi) cluster: hif-deva , hif-latn -&amp;gt; hif (Fiji Hindi)&lt;br /&gt;
    [&#039;hif&#039;]          = {&#039;hif-latn&#039;},&lt;br /&gt;
    [&#039;hif-deva&#039;]     = {&#039;hif&#039;}, &lt;br /&gt;
    [&#039;hif-latn&#039;]     = {&#039;hif&#039;},&lt;br /&gt;
&lt;br /&gt;
    -- id (Indonesian) cluster&lt;br /&gt;
    [&#039;min&#039;]          = {&#039;id&#039;},                              -- Minangkabau&lt;br /&gt;
    [&#039;ace&#039;]          = {&#039;id&#039;},                              -- Achinese&lt;br /&gt;
    [&#039;bug&#039;]          = {&#039;id&#039;},                              -- Buginese&lt;br /&gt;
    [&#039;bjn&#039;]          = {&#039;id&#039;},                              -- Banjar&lt;br /&gt;
    [&#039;jv&#039;]           = {&#039;id&#039;},                              -- Javanese&lt;br /&gt;
    [&#039;su&#039;]           = {&#039;id&#039;},                              -- Sundanese&lt;br /&gt;
    [&#039;map-bms&#039;]      = {&#039;jv&#039;, &#039;id&#039;},                        -- Basa Banyumasan&lt;br /&gt;
&lt;br /&gt;
    -- ike (Eastern Canadian Inuktitut) cluster: ike-cans , ike-latn -&amp;gt; ike (Eastern Canadian Inuktitut)&lt;br /&gt;
    [&#039;ike-cans&#039;]     = {&#039;ik&#039;}, &lt;br /&gt;
    [&#039;ike-latn&#039;]     = {&#039;ik&#039;}, &lt;br /&gt;
&lt;br /&gt;
    -- it (Italian) cluster&lt;br /&gt;
    [&#039;egl&#039;]          = {&#039;it&#039;},                              -- Emiliàn&lt;br /&gt;
    [&#039;eml&#039;]          = {&#039;it&#039;},                              -- Emiliano-Romagnolo&lt;br /&gt;
    [&#039;fur&#039;]          = {&#039;it&#039;},                              -- Friulian&lt;br /&gt;
    [&#039;lij&#039;]          = {&#039;it&#039;},                              -- Ligure&lt;br /&gt;
    [&#039;lmo&#039;]          = {&#039;it&#039;},                              -- lumbaart&lt;br /&gt;
    [&#039;nap&#039;]          = {&#039;it&#039;},                              -- Neapolitan&lt;br /&gt;
    [&#039;pms&#039;]          = {&#039;it&#039;},                              -- Piedmontese&lt;br /&gt;
    [&#039;rgn&#039;]          = {&#039;it&#039;},                              -- Romagnol&lt;br /&gt;
    [&#039;scn&#039;]          = {&#039;it&#039;},                              -- Sicilian&lt;br /&gt;
    [&#039;vec&#039;]          = {&#039;it&#039;},                              -- vèneto&lt;br /&gt;
&lt;br /&gt;
    -- kk (Kazakh) cluster:&lt;br /&gt;
    -- kk-arab , kk-cyrl , kk-latn , kk-cn , kk-kz , kk-tr -&amp;gt; kk (Kazakh)&lt;br /&gt;
    [&#039;kk&#039;]           = {&#039;kk-cyrl&#039;},                         -- Kazakh&lt;br /&gt;
    [&#039;kk-arab&#039;]      = {&#039;kk-cyrl&#039;, &#039;kk&#039;},                   -- Kazakh (Arabic script)&lt;br /&gt;
    [&#039;kk-cn&#039;]        = {&#039;kk-arab&#039;, &#039;kk-cyrl&#039;, &#039;kk&#039;},        -- Kazakh (China)&lt;br /&gt;
    [&#039;kk-cyrl&#039;]      = {&#039;kk&#039;},                              -- Kazakh (Cyrillic script)&lt;br /&gt;
    [&#039;kk-kz&#039;]        = {&#039;kk&#039;, &#039;kk-cyrl&#039;},                   -- Kazakh (Kazakhstan)&lt;br /&gt;
    [&#039;kk-latn&#039;]      = {&#039;kk-cyrl&#039;, &#039;kk&#039;},                   -- Kazakh (Latin script)&lt;br /&gt;
    [&#039;kk-tr&#039;]        = {&#039;kk-latn&#039;, &#039;kk-cyrl&#039;, &#039;kk&#039;},        -- Kazakh (Turkey)&lt;br /&gt;
    [&#039;kaa&#039;]          = {&#039;kk-latn&#039;, &#039;kk-cyrl&#039;},              -- Kara-Kalpak&lt;br /&gt;
&lt;br /&gt;
    -- ku (Kurdish) cluster: ku-latn , ku-arab -&amp;gt; ku (Kurdish)&lt;br /&gt;
    [&#039;ku&#039;]           = {&#039;ku-latn&#039;},&lt;br /&gt;
    [&#039;ku-arab&#039;]      = {&#039;ckb&#039;, &#039;ckb-arab&#039;, &#039;ku&#039;},           -- كوردي (عەرەبی)&lt;br /&gt;
    [&#039;ku-latn&#039;]      = {&#039;ku&#039;},&lt;br /&gt;
    [&#039;ckb&#039;]          = {&#039;ckb-arab&#039;, &#039;ku&#039;},&lt;br /&gt;
&lt;br /&gt;
    -- nl (Dutch) cluster&lt;br /&gt;
    [&#039;af&#039;]           = {&#039;nl&#039;},                              -- Afrikaans&lt;br /&gt;
    [&#039;fy&#039;]           = {&#039;nl&#039;},                              -- Western Frisian&lt;br /&gt;
    [&#039;li&#039;]           = {&#039;nl&#039;},                              -- Liechtenstein&lt;br /&gt;
    [&#039;nl-informal&#039;]  = {&#039;nl&#039;},                              -- Nederlands (informeel)&lt;br /&gt;
    [&#039;vls&#039;]          = {&#039;nl&#039;},                              -- Vlaams&lt;br /&gt;
    [&#039;zea&#039;]          = {&#039;nl&#039;},                              -- Zeeuws&lt;br /&gt;
&lt;br /&gt;
    --pl (Polish) cluster&lt;br /&gt;
    [&#039;csb&#039;]          = {&#039;pl&#039;},                              -- Kashubian&lt;br /&gt;
    [&#039;szl&#039;]          = {&#039;pl&#039;},                              -- Silesian&lt;br /&gt;
&lt;br /&gt;
    -- pt (Portuguese) cluster&lt;br /&gt;
    [&#039;gl&#039;]           = {&#039;pt&#039;},                              -- Galician&lt;br /&gt;
    [&#039;mwl&#039;]          = {&#039;pt&#039;},                              -- Mirandese&lt;br /&gt;
    [&#039;pt-br&#039;]        = {&#039;pt&#039;},                              -- Brazilian Portuguese&lt;br /&gt;
&lt;br /&gt;
    -- ro (Romanian) cluster&lt;br /&gt;
    [&#039;mo&#039;]           = {&#039;ro&#039;},                              -- Moldavian&lt;br /&gt;
    [&#039;rmy&#039;]          = {&#039;ro&#039;},                              -- Romani&lt;br /&gt;
&lt;br /&gt;
    -- ru (Russian) cluster&lt;br /&gt;
    [&#039;ab&#039;]           = {&#039;ru&#039;},                              -- Abkhazian&lt;br /&gt;
    [&#039;av&#039;]           = {&#039;ru&#039;},                              -- Avaric&lt;br /&gt;
    [&#039;ba&#039;]           = {&#039;ru&#039;},                              -- Bashkir&lt;br /&gt;
    [&#039;be-tarask&#039;]    = {&#039;ru&#039;},                              -- Belorussian&lt;br /&gt;
    [&#039;ce&#039;]           = {&#039;ru&#039;},                              -- Chechen&lt;br /&gt;
    [&#039;crh-cyrl&#039;]     = {&#039;ru&#039;},                              -- Crimean Tatar (Cyrillic script)&lt;br /&gt;
    [&#039;cv&#039;]           = {&#039;ru&#039;},                              -- Chuvash&lt;br /&gt;
    [&#039;inh&#039;]          = {&#039;ru&#039;},                              -- Ingush&lt;br /&gt;
    [&#039;koi&#039;]          = {&#039;ru&#039;},                              -- Komi-Permyak&lt;br /&gt;
    [&#039;krc&#039;]          = {&#039;ru&#039;},                              -- Karachay-Balkar&lt;br /&gt;
    [&#039;kv&#039;]           = {&#039;ru&#039;},                              -- Komi&lt;br /&gt;
    [&#039;lbe&#039;]          = {&#039;ru&#039;},                              -- лакку&lt;br /&gt;
    [&#039;lez&#039;]          = {&#039;ru&#039;},                              -- Lezghian&lt;br /&gt;
    [&#039;mhr&#039;]          = {&#039;ru&#039;},                              -- Eastern Mari&lt;br /&gt;
    [&#039;mrj&#039;]          = {&#039;ru&#039;},                              -- Hill Mari&lt;br /&gt;
    [&#039;myv&#039;]          = {&#039;ru&#039;},                              -- Erzya&lt;br /&gt;
    [&#039;os&#039;]           = {&#039;ru&#039;},                              -- Ossetic&lt;br /&gt;
    [&#039;rue&#039;]          = {&#039;uk&#039;, &#039;ru&#039;},                        -- Rusyn&lt;br /&gt;
    [&#039;sah&#039;]          = {&#039;ru&#039;},                              -- Sakha&lt;br /&gt;
    [&#039;tt&#039;]           = {&#039;tt-cyrl&#039;, &#039;ru&#039;},                   -- Tatar&lt;br /&gt;
    [&#039;tt-cyrl&#039;]      = {&#039;ru&#039;},                              -- Tatar (Cyrillic script)&lt;br /&gt;
    [&#039;udm&#039;]          = {&#039;ru&#039;},                              -- Udmurt&lt;br /&gt;
    [&#039;uk&#039;]           = {&#039;ru&#039;},                              -- Ukranian&lt;br /&gt;
    [&#039;xal&#039;]          = {&#039;ru&#039;},                              -- Kalmyk&lt;br /&gt;
    [&#039;tt&#039;]           = {&#039;tt-cyrl&#039;, &#039;ru&#039;},                   -- Tatar&lt;br /&gt;
&lt;br /&gt;
    -- ruq (Megleno Romanian) cluster: ruq-cyrl , ruq-grek , ruq-latn -&amp;gt; ruq (Megleno Romanian)&lt;br /&gt;
    [&#039;ruq&#039;]          = {&#039;ruq-latn&#039;, &#039;ro&#039;},                  -- Megleno-Romanian&lt;br /&gt;
    [&#039;ruq-cyrl&#039;]     = {&#039;ruq&#039;, &#039;mk&#039;},                       -- Megleno-Romanian (Cyrillic script)&lt;br /&gt;
    [&#039;ruq-grek&#039;]     = {&#039;ruq&#039;},                             -- Megleno-Romanian (Greek script)&lt;br /&gt;
    [&#039;ruq-latn&#039;]     = {&#039;ro&#039;, &#039;ruq&#039;},                       -- Megleno-Romanian (Latin script)&lt;br /&gt;
&lt;br /&gt;
    -- sr (Serbian) cluster: sr-ec , sr-el -&amp;gt; sr (Serbian)&lt;br /&gt;
    [&#039;sr&#039;]           = {&#039;sr-ec&#039;},&lt;br /&gt;
    [&#039;sr-ec&#039;]        = {&#039;sr&#039;}, &lt;br /&gt;
    [&#039;sr-el&#039;]        = {&#039;sr&#039;}, &lt;br /&gt;
&lt;br /&gt;
    -- tg (Tajik) cluster: tg-cyrl , tg-latn -&amp;gt; tg (Tajik)&lt;br /&gt;
    [&#039;tg&#039;]           = {&#039;tg-cyrl&#039;},&lt;br /&gt;
    [&#039;tg-cyrl&#039;]      = {&#039;tg&#039;}, &lt;br /&gt;
    [&#039;tg-latn&#039;]      = {&#039;tg&#039;}, &lt;br /&gt;
&lt;br /&gt;
    -- tr (Turkish) cluster&lt;br /&gt;
    [&#039;gag&#039;]          = {&#039;tr&#039;},                              -- Gagauz&lt;br /&gt;
    [&#039;kiu&#039;]          = {&#039;tr&#039;},                              -- Kirmanjki&lt;br /&gt;
    [&#039;lzz&#039;]          = {&#039;tr&#039;},                              -- Lazuri&lt;br /&gt;
&lt;br /&gt;
    -- tt (Tatar) cluster: tt-cyrl , tt-latn -&amp;gt; tt (Tatar)&lt;br /&gt;
    [&#039;tt-cyrl&#039;]      = {&#039;tt&#039;},&lt;br /&gt;
    [&#039;tt-latn&#039;]      = {&#039;tt&#039;},&lt;br /&gt;
&lt;br /&gt;
    -- zh (Chinese) cluster&lt;br /&gt;
    -- /includes/language/converters/ZhConverter.php&lt;br /&gt;
    -- https://gerrit.wikimedia.org/r/703560&lt;br /&gt;
    [&#039;cdo&#039;]          = {&#039;nan&#039;, &#039;zh-hant&#039;, &#039;zh&#039;, &#039;zh-hans&#039;}, -- Min Dong Chinese&lt;br /&gt;
    [&#039;gan&#039;]          = {&#039;gan-hant&#039;, &#039;gan-hans&#039;, &#039;zh-hant&#039;, &#039;zh-hans&#039;, &#039;zh&#039;}, -- Gan &lt;br /&gt;
    [&#039;gan-hans&#039;]     = {&#039;gan&#039;, &#039;gan-hant&#039;, &#039;zh-hans&#039;, &#039;zh&#039;, &#039;zh-hant&#039;},      -- Simplified Gan script&lt;br /&gt;
    [&#039;gan-hant&#039;]     = {&#039;gan&#039;, &#039;gan-hans&#039;, &#039;zh-hant&#039;, &#039;zh&#039;, &#039;zh-hans&#039;},      -- Traditional Gan script&lt;br /&gt;
    [&#039;hak&#039;]          = {&#039;zh-hant&#039;, &#039;zh&#039;, &#039;zh-hans&#039;},        -- Hakka&lt;br /&gt;
    [&#039;ii&#039;]           = {&#039;zh-cn&#039;, &#039;zh-hans&#039;, &#039;zh&#039;, &#039;zh-hant&#039;}, -- Sichuan Yi&lt;br /&gt;
    [&#039;lzh&#039;]          = {&#039;zh-hant&#039;, &#039;zh&#039;, &#039;zh-hans&#039;},        -- Literary Chinese&lt;br /&gt;
    [&#039;nan&#039;]          = {&#039;cdo&#039;, &#039;zh-hant&#039;, &#039;zh&#039;, &#039;zh-hans&#039;}, -- Min Nan Chinese&lt;br /&gt;
    [&#039;szy&#039;]          = {&#039;zh-tw&#039;, &#039;zh-hant&#039;, &#039;zh&#039;, &#039;zh-hans&#039;}, -- Sakizaya&lt;br /&gt;
    [&#039;tay&#039;]          = {&#039;zh-tw&#039;, &#039;zh-hant&#039;, &#039;zh&#039;, &#039;zh-hans&#039;}, -- Atayal&lt;br /&gt;
    [&#039;trv&#039;]          = {&#039;zh-tw&#039;, &#039;zh-hant&#039;, &#039;zh&#039;, &#039;zh-hans&#039;}, -- Seediq&lt;br /&gt;
    [&#039;wuu&#039;]          = {&#039;zh-hans&#039;, &#039;zh-hant&#039;, &#039;zh&#039;},        -- Wu&lt;br /&gt;
    -- https://phabricator.wikimedia.org/T59138&lt;br /&gt;
    -- [&#039;wuu&#039;]          = {&#039;wuu-hans, &#039;wuu-hant&#039;, &#039;zh-hans&#039;, &#039;zh-hant&#039;, &#039;zh&#039;}, -- Wu&lt;br /&gt;
    -- [&#039;wuu-hans&#039;]     = {&#039;wuu&#039;, &#039;wuu-hant&#039;, &#039;zh-hans&#039;, &#039;zh&#039;, &#039;zh-hant&#039;},     -- Simplified Wu&lt;br /&gt;
    -- [&#039;wuu-hant&#039;]     = {&#039;wuu&#039;, &#039;wuu-hans&#039;, &#039;zh-hant&#039;, &#039;zh&#039;, &#039;zh-hans&#039;},     -- Traditional Wu&lt;br /&gt;
    [&#039;yue&#039;]          = {&#039;zh-hk&#039;, &#039;zh-hant&#039;, &#039;zh-hans&#039;, &#039;zh&#039;}, -- Cantonese&lt;br /&gt;
    -- https://phabricator.wikimedia.org/T59106&lt;br /&gt;
    -- [&#039;yue&#039;]          = {&#039;yue-hant&#039;, &#039;yue-hans, &#039;zh-hk&#039;, &#039;zh-hant&#039;, &#039;zh-hans&#039;, &#039;zh&#039;}, -- Cantonese&lt;br /&gt;
    -- [&#039;yue-hans&#039;]     = {&#039;yue&#039;, &#039;yue-hant&#039;, &#039;zh-hans&#039;, &#039;zh&#039;, &#039;zh-hk&#039;, &#039;zh-hant&#039;},     -- Simplified Cantonese&lt;br /&gt;
    -- [&#039;yue-hant&#039;]     = {&#039;yue&#039;, &#039;yue-hans&#039;, &#039;zh-hk&#039;, &#039;zh-hant&#039;, &#039;zh&#039;, &#039;zh-hans&#039;},     -- Traditional Cantonese&lt;br /&gt;
    [&#039;za&#039;]           = {&#039;zh-hans&#039;, &#039;zh-hant&#039;, &#039;zh&#039;},        -- Zhuang&lt;br /&gt;
    -- The time allocated for running scripts has expired.&lt;br /&gt;
    -- [&#039;zh&#039;]           = {&#039;zh-hans&#039;, &#039;zh-hant&#039;, &#039;zh-cn&#039;, &#039;zh-tw&#039;, &#039;zh-hk&#039;}, -- Chinese&lt;br /&gt;
    -- [&#039;zh-hans&#039;]      = {&#039;zh-cn&#039;, &#039;zh&#039;, &#039;zh-hant&#039;},   -- Simplified Chinese&lt;br /&gt;
    -- [&#039;zh-hant&#039;]      = {&#039;zh-tw&#039;, &#039;zh-hk&#039;, &#039;zh&#039;, &#039;zh-hans&#039;},   -- Traditional Chinese&lt;br /&gt;
    -- [&#039;zh-tw&#039;]        = {&#039;zh-hant&#039;, &#039;zh-hk&#039;, &#039;zh&#039;, &#039;zh-hans&#039;}, -- Chinese (Taiwan)&lt;br /&gt;
    -- [&#039;zh-hk&#039;]        = {&#039;zh-hant&#039;, &#039;zh-tw&#039;, &#039;zh&#039;, &#039;zh-hans&#039;}, -- Chinese (Hong Kong)&lt;br /&gt;
    [&#039;zh&#039;]           = {&#039;zh-hans&#039;, &#039;zh-hant&#039;, &#039;zh-hk&#039;}, -- Chinese&lt;br /&gt;
    [&#039;zh-hans&#039;]      = {&#039;zh-hant&#039;, &#039;zh-hk&#039;},   -- Simplified Chinese&lt;br /&gt;
    [&#039;zh-hant&#039;]      = {&#039;zh-hk&#039;, &#039;zh-hans&#039;},   -- Traditional Chinese&lt;br /&gt;
    [&#039;zh-cn&#039;]        = {&#039;zh-hans&#039;, &#039;zh&#039;, &#039;zh-hant&#039;}, -- Chinese (Mainland China)&lt;br /&gt;
    [&#039;zh-sg&#039;]        = {&#039;zh-hans&#039;, &#039;zh-cn&#039;, &#039;zh&#039;, &#039;zh-hant&#039;}, -- Chinese (Singapore)&lt;br /&gt;
    [&#039;zh-my&#039;]        = {&#039;zh-hans&#039;, &#039;zh-sg&#039;, &#039;zh-cn&#039;, &#039;zh&#039;, &#039;zh-hant&#039;}, -- Chinese (Malaysia)&lt;br /&gt;
    [&#039;zh-tw&#039;]        = {&#039;zh-hant&#039;, &#039;zh-hk&#039;, &#039;zh-hans&#039;}, -- Chinese (Taiwan)&lt;br /&gt;
    [&#039;zh-hk&#039;]        = {&#039;zh-hant&#039;, &#039;zh-hans&#039;}, -- Chinese (Hong Kong)&lt;br /&gt;
    [&#039;zh-mo&#039;]        = {&#039;zh-hant&#039;, &#039;zh-hk&#039;, &#039;zh-tw&#039;, &#039;zh&#039;, &#039;zh-hans&#039;}, -- Chinese (Macau)&lt;br /&gt;
    [&#039;zh-classical&#039;] = {&#039;lzh&#039;, &#039;zh-hant&#039;, &#039;zh&#039;, &#039;zh-hans&#039;}, -- Classical Chinese -&amp;gt; Literary Chinese&lt;br /&gt;
    [&#039;zh-min-nan&#039;]   = {&#039;nan&#039;, &#039;cdo&#039;, &#039;zh-hant&#039;, &#039;zh&#039;, &#039;zh-hans&#039;},   -- Chinese (Min Nan) -&amp;gt; Min Nan Chinese&lt;br /&gt;
    [&#039;zh-yue&#039;]       = {&#039;yue&#039;, &#039;zh-hk&#039;, &#039;zh-hant&#039;, &#039;zh-hans&#039;, &#039;zh&#039;}, -- Yue Chinese -&amp;gt; Cantonese&lt;br /&gt;
&lt;br /&gt;
    ------------------------&lt;br /&gt;
    --------- misc ---------&lt;br /&gt;
    ------------------------&lt;br /&gt;
    [&#039;arz&#039;]          = {&#039;ar&#039;},                              -- Egyptian Arabic -&amp;gt; Arabic&lt;br /&gt;
    [&#039;azb&#039;]          = {&#039;az&#039;},                              -- Southern Azerbaijani -&amp;gt; Azerbaijani &lt;br /&gt;
    [&#039;be-x-old&#039;]     = {&#039;be-tarask&#039;},                       -- be-x-old -&amp;gt; be-tarask (wrong to correct Taraškievica form of Belarusian orthography)&lt;br /&gt;
    [&#039;bh&#039;]           = {&#039;bho&#039;},                             -- Bihari -&amp;gt; Bhojpuri&lt;br /&gt;
    [&#039;bpy&#039;]          = {&#039;bn&#039;},                              -- Bishnupria Manipuri -&amp;gt; Bengali&lt;br /&gt;
&lt;br /&gt;
    -- da&lt;br /&gt;
    [&#039;jut&#039;]          = {&#039;da&#039;},                              -- Jutish -&amp;gt; Danish&lt;br /&gt;
    [&#039;kl&#039;]           = {&#039;da&#039;},                              -- Kalaallisut -&amp;gt; Danish&lt;br /&gt;
&lt;br /&gt;
    [&#039;en-gb&#039;]        = {&#039;en&#039;},                              -- Brexit -&amp;gt; English&lt;br /&gt;
    [&#039;yi&#039;]           = {&#039;he&#039;},                              -- Yiddish -&amp;gt; Hebrew&lt;br /&gt;
    [&#039;iu&#039;]           = {&#039;ike-cans&#039;},                        -- Inuktitut -&amp;gt; Eastern Canadian (Aboriginal syllabics)&lt;br /&gt;
    [&#039;xmf&#039;]          = {&#039;ka&#039;},                              -- Mingrelian -&amp;gt; Georgian&lt;br /&gt;
    [&#039;kbd&#039;]          = {&#039;kbd-cyrl&#039;, &#039;ru&#039;},                  -- Kabardian -&amp;gt; Адыгэбзэ&lt;br /&gt;
    [&#039;tcy&#039;]          = {&#039;kn&#039;},                              -- Tulu -&amp;gt; Kannada&lt;br /&gt;
    [&#039;ko-kp&#039;]        = {&#039;ko&#039;},                              -- 한국어 (조선) -&amp;gt; Korean&lt;br /&gt;
    [&#039;ks&#039;]           = {&#039;ks-arab&#039;},                         -- Kashmiri -&amp;gt; Kashmiri (Arabic script)&lt;br /&gt;
&lt;br /&gt;
    -- lt&lt;br /&gt;
    [&#039;bat-smg&#039;]      = {&#039;sgs&#039;, &#039;lt&#039;},                       -- Samogitian -&amp;gt; Lithuanian&lt;br /&gt;
    [&#039;sgs&#039;]          = {&#039;lt&#039;},                              -- Samogitian -&amp;gt; Lithuanian&lt;br /&gt;
&lt;br /&gt;
    [&#039;ltg&#039;]          = {&#039;lv&#039;},                              -- Latvian -&amp;gt; Latgalian&lt;br /&gt;
    [&#039;dtp&#039;]          = {&#039;ms&#039;},                              -- Central Dusun -&amp;gt; Malay&lt;br /&gt;
    [&#039;no&#039;]           = {&#039;nb&#039;},                              -- Norwegian (bokmål) -&amp;gt; Norwegian Bokmål&lt;br /&gt;
    [&#039;roa-rup&#039;]      = {&#039;rup&#039;},                             -- Aromanian (other Romance) -&amp;gt; Aromanian&lt;br /&gt;
    [&#039;aln&#039;]          = {&#039;sq&#039;},                              -- Gheg Albanian -&amp;gt; Albanian&lt;br /&gt;
    [&#039;ug&#039;]           = {&#039;ug-arab&#039;},                         -- Uyghur -&amp;gt; Uyghur (Arabic script)&lt;br /&gt;
    [&#039;khw&#039;]          = {&#039;ur&#039;},                              -- Khowar -&amp;gt; Urdu&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=M%C3%B3dulo:I18n&amp;diff=7514</id>
		<title>Módulo:I18n</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=M%C3%B3dulo:I18n&amp;diff=7514"/>
		<updated>2023-11-01T23:51:11Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--- I18n library for message storage in Lua datastores.&lt;br /&gt;
--  The module is designed to enable message separation from modules &amp;amp;&lt;br /&gt;
--  templates. It has support for handling language fallbacks. This&lt;br /&gt;
--  module is a Lua port of [[I18n-js]] and i18n modules that can be loaded&lt;br /&gt;
--  by it are editable through [[I18nEdit]].&lt;br /&gt;
--  &lt;br /&gt;
--  @module         i18n&lt;br /&gt;
--  @version        1.4.0&lt;br /&gt;
--  @require        Module:Entrypoint&lt;br /&gt;
--  @require        Module:Fallbacklist&lt;br /&gt;
--  @author         [[User:KockaAdmiralac|KockaAdmiralac]]&lt;br /&gt;
--  @author         [[User:Speedit|Speedit]]&lt;br /&gt;
--  @attribution    [[User:Cqm|Cqm]]&lt;br /&gt;
--  @release        stable&lt;br /&gt;
--  @see            [[I18n|I18n guide]]&lt;br /&gt;
--  @see            [[I18n-js]]&lt;br /&gt;
--  @see            [[I18nEdit]]&lt;br /&gt;
--  &amp;lt;nowiki&amp;gt;&lt;br /&gt;
local i18n, _i18n = {}, {}&lt;br /&gt;
&lt;br /&gt;
--  Module variables &amp;amp; dependencies.&lt;br /&gt;
local title = mw.title.getCurrentTitle()&lt;br /&gt;
local fallbacks = require(&#039;Module:Fallbacklist&#039;)&lt;br /&gt;
local entrypoint = require(&#039;Module:Entrypoint&#039;)&lt;br /&gt;
local uselang&lt;br /&gt;
&lt;br /&gt;
--- Argument substitution as $n where n &amp;gt; 0.&lt;br /&gt;
--  @function           _i18n.handleArgs&lt;br /&gt;
--  @param              {string} msg Message to substitute arguments into.&lt;br /&gt;
--  @param              {table} args Arguments table to substitute.&lt;br /&gt;
--  @return             {string} Resulting message.&lt;br /&gt;
--  @local&lt;br /&gt;
function _i18n.handleArgs(msg, args)&lt;br /&gt;
    for i, a in ipairs(args) do&lt;br /&gt;
        msg = (string.gsub(msg, &#039;%$&#039; .. tostring(i), tostring(a)))&lt;br /&gt;
    end&lt;br /&gt;
    return msg&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Checks whether a language code is valid.&lt;br /&gt;
--  @function           _i18n.isValidCode&lt;br /&gt;
--  @param              {string} code Language code to check.&lt;br /&gt;
--  @return             {boolean} Whether the language code is valid.&lt;br /&gt;
--  @local&lt;br /&gt;
function _i18n.isValidCode(code)&lt;br /&gt;
    return type(code) == &#039;string&#039; and #mw.language.fetchLanguageName(code) ~= 0&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Checks whether a message contains unprocessed wikitext.&lt;br /&gt;
--  Used to optimise message getter by not preprocessing pure text.&lt;br /&gt;
--  @function           _i18n.isWikitext&lt;br /&gt;
--  @param              {string} msg Message to check.&lt;br /&gt;
--  @return             {boolean} Whether the message contains wikitext.&lt;br /&gt;
function _i18n.isWikitext(msg)&lt;br /&gt;
    return&lt;br /&gt;
        type(msg) == &#039;string&#039; and&lt;br /&gt;
        (&lt;br /&gt;
            msg:find(&#039;%-%-%-%-&#039;) or&lt;br /&gt;
            msg:find(&#039;%f[^\n%z][;:*#] &#039;) or&lt;br /&gt;
            msg:find(&#039;%f[^\n%z]==* *[^\n|]+ =*=%f[\n]&#039;) or&lt;br /&gt;
            msg:find(&#039;%b&amp;lt;&amp;gt;&#039;) or msg:find(&#039;\&#039;\&#039;&#039;) or&lt;br /&gt;
            msg:find(&#039;%[%b[]%]&#039;) or msg:find(&#039;{%b{}}&#039;)&lt;br /&gt;
        )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- I18n datastore class.&lt;br /&gt;
--  This is used to control language translation and access to individual&lt;br /&gt;
--  messages. The datastore instance provides language and message&lt;br /&gt;
--  getter-setter methods, which can be used to internationalize Lua modules.&lt;br /&gt;
--  The language methods (any ending in `Lang`) are all **chainable**.&lt;br /&gt;
--  @type            Data&lt;br /&gt;
local Data = {}&lt;br /&gt;
Data.__index = Data&lt;br /&gt;
&lt;br /&gt;
--- Datastore message getter utility.&lt;br /&gt;
--  This method returns localized messages from the datastore corresponding&lt;br /&gt;
--  to a `key`. These messages may have `$n` parameters, which can be&lt;br /&gt;
--  replaced by optional argument strings supplied by the `msg` call.&lt;br /&gt;
--  &lt;br /&gt;
--  This function supports [[Lua reference manual#named_arguments|named&lt;br /&gt;
--  arguments]]. The named argument syntax is more versatile despite its&lt;br /&gt;
--  verbosity; it can be used to select message language &amp;amp; source(s).&lt;br /&gt;
--  @function           Data:msg&lt;br /&gt;
--  @usage&lt;br /&gt;
--  &lt;br /&gt;
--      ds:msg{&lt;br /&gt;
--          key = &#039;message-name&#039;,&lt;br /&gt;
--          lang = &#039;&#039;,&lt;br /&gt;
--          args = {...},&lt;br /&gt;
--          sources = {}&lt;br /&gt;
--      }&lt;br /&gt;
--  &lt;br /&gt;
--  @usage&lt;br /&gt;
--  &lt;br /&gt;
--      ds:msg(&#039;message-name&#039;, ...)&lt;br /&gt;
--  &lt;br /&gt;
--  @param              {string|table} opts Message configuration or key.&lt;br /&gt;
--  @param[opt]         {string} opts.key Message key to return from the&lt;br /&gt;
--                      datastore.&lt;br /&gt;
--  @param[opt]         {table} opts.args Arguments to substitute into the&lt;br /&gt;
--                      message (`$n`).&lt;br /&gt;
--  @param[opt]         {table} opts.sources Source names to limit to (see&lt;br /&gt;
--                      `Data:fromSources`).&lt;br /&gt;
--  @param[opt]         {table} opts.lang Temporary language to use (see&lt;br /&gt;
--                      `Data:inLang`).&lt;br /&gt;
--  @param[opt]         {string} ... Arguments to substitute into the message&lt;br /&gt;
--                      (`$n`).&lt;br /&gt;
--  @error[115]         {string} &#039;missing arguments in Data:msg&#039;&lt;br /&gt;
--  @return             {string} Localised datastore message or `&#039;&amp;lt;key&amp;gt;&#039;`.&lt;br /&gt;
function Data:msg(opts, ...)&lt;br /&gt;
    local frame = mw.getCurrentFrame()&lt;br /&gt;
    -- Argument normalization.&lt;br /&gt;
    if not self or not opts then&lt;br /&gt;
        error(&#039;missing arguments in Data:msg&#039;)&lt;br /&gt;
    end&lt;br /&gt;
    local key = type(opts) == &#039;table&#039; and opts.key or opts&lt;br /&gt;
    local args = opts.args or {...}&lt;br /&gt;
    -- Configuration parameters.&lt;br /&gt;
    if opts.sources then&lt;br /&gt;
        self:fromSources(unpack(opts.sources))&lt;br /&gt;
    end&lt;br /&gt;
    if opts.lang then&lt;br /&gt;
        self:inLang(opts.lang)&lt;br /&gt;
    end&lt;br /&gt;
    -- Source handling.&lt;br /&gt;
    local source_n = self.tempSources or self._sources&lt;br /&gt;
    local source_i = {}&lt;br /&gt;
    for n, i in pairs(source_n) do&lt;br /&gt;
        source_i[i] = n&lt;br /&gt;
    end&lt;br /&gt;
    self.tempSources = nil&lt;br /&gt;
    -- Language handling.&lt;br /&gt;
    local lang = self.tempLang or self.defaultLang&lt;br /&gt;
    self.tempLang = nil&lt;br /&gt;
    -- Message fetching.&lt;br /&gt;
    local msg&lt;br /&gt;
    for i, messages in ipairs(self._messages) do&lt;br /&gt;
        -- Message data.&lt;br /&gt;
        local msg = (messages[lang] or {})[key]&lt;br /&gt;
        -- Fallback support (experimental).&lt;br /&gt;
        for _, l in ipairs((fallbacks[lang] or {})) do&lt;br /&gt;
            if msg == nil then&lt;br /&gt;
                msg = (messages[l] or {})[key]&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        -- Internal fallback to &#039;en&#039;.&lt;br /&gt;
        msg = msg ~= nil and msg or messages.en[key]&lt;br /&gt;
        -- Handling argument substitution from Lua.&lt;br /&gt;
        if msg and source_i[i] and #args &amp;gt; 0 then&lt;br /&gt;
            msg = _i18n.handleArgs(msg, args)&lt;br /&gt;
        end&lt;br /&gt;
        if msg and source_i[i] and lang ~= &#039;qqx&#039; then&lt;br /&gt;
            return frame and _i18n.isWikitext(msg)&lt;br /&gt;
                and frame:preprocess(mw.text.trim(msg))&lt;br /&gt;
                or  mw.text.trim(msg)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    return mw.text.nowiki(&#039;&amp;lt;&#039; .. key .. &#039;&amp;gt;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Datastore template parameter getter utility.&lt;br /&gt;
--  This method, given a table of arguments, tries to find a parameter&#039;s&lt;br /&gt;
--  localized name in the datastore and returns its value, or nil if&lt;br /&gt;
--  not present.&lt;br /&gt;
--&lt;br /&gt;
--  This method always uses the wiki&#039;s content language.&lt;br /&gt;
--  @function           Data:parameter&lt;br /&gt;
--  @param              {string} parameter Parameter&#039;s key in the datastore&lt;br /&gt;
--  @param              {table} args Arguments to find the parameter in&lt;br /&gt;
--  @error[176]         {string} &#039;missing arguments in Data:parameter&#039;&lt;br /&gt;
--  @return             {string|nil} Parameter&#039;s value or nil if not present&lt;br /&gt;
function Data:parameter(key, args)&lt;br /&gt;
    -- Argument normalization.&lt;br /&gt;
    if not self or not key or not args then&lt;br /&gt;
        error(&#039;missing arguments in Data:parameter&#039;)&lt;br /&gt;
    end&lt;br /&gt;
    local contentLang = mw.language.getContentLanguage():getCode()&lt;br /&gt;
    -- Message fetching.&lt;br /&gt;
    for i, messages in ipairs(self._messages) do&lt;br /&gt;
        local msg = (messages[contentLang] or {})[key]&lt;br /&gt;
        if msg ~= nil and args[msg] ~= nil then&lt;br /&gt;
            return args[msg]&lt;br /&gt;
        end&lt;br /&gt;
        for _, l in ipairs((fallbacks[contentLang] or {})) do&lt;br /&gt;
            if msg == nil or args[msg] == nil then&lt;br /&gt;
                -- Check next fallback.&lt;br /&gt;
                msg = (messages[l] or {})[key]&lt;br /&gt;
            else&lt;br /&gt;
                -- A localized message was found.&lt;br /&gt;
                return args[msg]&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        -- Fallback to English.&lt;br /&gt;
        msg = messages.en[key]&lt;br /&gt;
        if msg ~= nil and args[msg] ~= nil then&lt;br /&gt;
            return args[msg]&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Datastore temporary source setter to a specificed subset of datastores.&lt;br /&gt;
--  By default, messages are fetched from the datastore in the same&lt;br /&gt;
--  order of priority as `i18n.loadMessages`.&lt;br /&gt;
--  @function           Data:fromSource&lt;br /&gt;
--  @param              {string} ... Source name(s) to use.&lt;br /&gt;
--  @return             {Data} Datastore instance.&lt;br /&gt;
function Data:fromSource(...)&lt;br /&gt;
    local c = select(&#039;#&#039;, ...)&lt;br /&gt;
    if c ~= 0 then&lt;br /&gt;
        self.tempSources = {}&lt;br /&gt;
        for i = 1, c do&lt;br /&gt;
            local n = select(i, ...)&lt;br /&gt;
            if type(n) == &#039;string&#039; and type(self._sources[n]) == &#039;number&#039; then&lt;br /&gt;
                self.tempSources[n] = self._sources[n]&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    return self&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Datastore default language getter.&lt;br /&gt;
--  @function           Data:getLang&lt;br /&gt;
--  @return             {string} Default language to serve datastore messages in.&lt;br /&gt;
function Data:getLang()&lt;br /&gt;
    return self.defaultLang&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Datastore language setter to `wgUserLanguage`.&lt;br /&gt;
--  @function           Data:useUserLang&lt;br /&gt;
--  @return             {Data} Datastore instance.&lt;br /&gt;
--  @note               Scribunto only registers `wgUserLanguage` when an&lt;br /&gt;
--                      invocation is at the top of the call stack.&lt;br /&gt;
function Data:useUserLang()&lt;br /&gt;
    self.defaultLang = i18n.getLang() or self.defaultLang&lt;br /&gt;
    return self&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Datastore language setter to `wgContentLanguage`.&lt;br /&gt;
--  @function           Data:useContentLang&lt;br /&gt;
--  @return             {Data} Datastore instance.&lt;br /&gt;
function Data:useContentLang()&lt;br /&gt;
    self.defaultLang = mw.language.getContentLanguage():getCode()&lt;br /&gt;
    return self&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Datastore language setter to specificed language.&lt;br /&gt;
--  @function           Data:useLang&lt;br /&gt;
--  @param              {string} code Language code to use.&lt;br /&gt;
--  @return             {Data} Datastore instance.&lt;br /&gt;
function Data:useLang(code)&lt;br /&gt;
    self.defaultLang = _i18n.isValidCode(code)&lt;br /&gt;
        and code&lt;br /&gt;
        or  self.defaultLang&lt;br /&gt;
    return self&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Temporary datastore language setter to `wgUserLanguage`.&lt;br /&gt;
--  The datastore language reverts to the default language in the next&lt;br /&gt;
--  @{Data:msg} call.&lt;br /&gt;
--  @function           Data:inUserLang&lt;br /&gt;
--  @return             {Data} Datastore instance.&lt;br /&gt;
function Data:inUserLang()&lt;br /&gt;
    self.tempLang = i18n.getLang() or self.tempLang&lt;br /&gt;
    return self&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Temporary datastore language setter to `wgContentLanguage`.&lt;br /&gt;
--  Only affects the next @{Data:msg} call.&lt;br /&gt;
--  @function           Data:inContentLang&lt;br /&gt;
--  @return             {Data} Datastore instance.&lt;br /&gt;
function Data:inContentLang()&lt;br /&gt;
    self.tempLang = mw.language.getContentLanguage():getCode()&lt;br /&gt;
    return self&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Temporary datastore language setter to a specificed language.&lt;br /&gt;
--  Only affects the next @{Data:msg} call.&lt;br /&gt;
--  @function           Data:inLang&lt;br /&gt;
--  @param              {string} code Language code to use.&lt;br /&gt;
--  @return             {Data} Datastore instance.&lt;br /&gt;
function Data:inLang(code)&lt;br /&gt;
    self.tempLang = _i18n.isValidCode(code)&lt;br /&gt;
        and code&lt;br /&gt;
        or  self.tempLang&lt;br /&gt;
    return self&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--  Package functions.&lt;br /&gt;
&lt;br /&gt;
--- Localized message getter by key.&lt;br /&gt;
--  Can be used to fetch messages in a specific language code through `uselang`&lt;br /&gt;
--  parameter. Extra numbered parameters can be supplied for substitution into&lt;br /&gt;
--  the datastore message.&lt;br /&gt;
--  @function           i18n.getMsg&lt;br /&gt;
--  @param              {table} frame Frame table from invocation.&lt;br /&gt;
--  @param              {table} frame.args Metatable containing arguments.&lt;br /&gt;
--  @param              {string} frame.args[1] ROOTPAGENAME of i18n submodule.&lt;br /&gt;
--  @param              {string} frame.args[2] Key of i18n message.&lt;br /&gt;
--  @param[opt]         {string} frame.args.lang Default language of message.&lt;br /&gt;
--  @error[271]         &#039;missing arguments in i18n.getMsg&#039;&lt;br /&gt;
--  @return             {string} I18n message in localised language.&lt;br /&gt;
--  @usage              {{i18n|getMsg|source|key|arg1|arg2|uselang {{=}} code}}&lt;br /&gt;
function i18n.getMsg(frame)&lt;br /&gt;
    if&lt;br /&gt;
        not frame or&lt;br /&gt;
        not frame.args or&lt;br /&gt;
        not frame.args[1] or&lt;br /&gt;
        not frame.args[2]&lt;br /&gt;
    then&lt;br /&gt;
        error(&#039;missing arguments in i18n.getMsg&#039;)&lt;br /&gt;
    end&lt;br /&gt;
    local source = frame.args[1]&lt;br /&gt;
    local key = frame.args[2]&lt;br /&gt;
    -- Pass through extra arguments.&lt;br /&gt;
    local repl = {}&lt;br /&gt;
    for i, a in ipairs(frame.args) do&lt;br /&gt;
        if i &amp;gt;= 3 then&lt;br /&gt;
            repl[i-2] = a&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    -- Load message data.&lt;br /&gt;
    local ds = i18n.loadMessages(source)&lt;br /&gt;
    -- Pass through language argument.&lt;br /&gt;
    ds:inLang(frame.args.uselang)&lt;br /&gt;
    -- Return message.&lt;br /&gt;
    return ds:msg { key = key, args = repl }&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
--- I18n message datastore loader.&lt;br /&gt;
--  @function           i18n.loadMessages&lt;br /&gt;
--  @param              {string} ... ROOTPAGENAME/path for target i18n&lt;br /&gt;
--                      submodules.&lt;br /&gt;
--  @error[322]         {string} &#039;no source supplied to i18n.loadMessages&#039;&lt;br /&gt;
--  @return             {table} I18n datastore instance.&lt;br /&gt;
--  @usage              require(&#039;Dev:I18n&#039;).loadMessages(&#039;1&#039;, &#039;2&#039;)&lt;br /&gt;
function i18n.loadMessages(...)&lt;br /&gt;
    local ds&lt;br /&gt;
    local i = 0&lt;br /&gt;
    local s = {}&lt;br /&gt;
    for j = 1, select(&#039;#&#039;, ...) do&lt;br /&gt;
        local source = select(j, ...)&lt;br /&gt;
        if type(source) == &#039;string&#039; and source ~= &#039;&#039; then&lt;br /&gt;
            i = i + 1&lt;br /&gt;
            s[source] = i&lt;br /&gt;
            if not ds then&lt;br /&gt;
                -- Instantiate datastore.&lt;br /&gt;
                ds = {}&lt;br /&gt;
                ds._messages = {}&lt;br /&gt;
                -- Set default language.&lt;br /&gt;
                setmetatable(ds, Data)&lt;br /&gt;
                ds:useUserLang()&lt;br /&gt;
            end&lt;br /&gt;
            source = string.gsub(source, &#039;^.&#039;, mw.ustring.upper)&lt;br /&gt;
            source = mw.ustring.find(source, &#039;:&#039;)&lt;br /&gt;
                and source&lt;br /&gt;
                or  &#039;Module:&#039; .. source .. &#039;/i18n&#039;&lt;br /&gt;
            ds._messages[i] = mw.loadData(source)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    if not ds then&lt;br /&gt;
        error(&#039;no source supplied to i18n.loadMessages&#039;)&lt;br /&gt;
    else&lt;br /&gt;
        -- Attach source index map.&lt;br /&gt;
        ds._sources = s&lt;br /&gt;
        -- Return datastore instance.&lt;br /&gt;
        return ds&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Language code getter.&lt;br /&gt;
--  Can validate a template&#039;s language code through `uselang` parameter.&lt;br /&gt;
--  @function           i18n.getLang&lt;br /&gt;
--  @usage              {{i18n|getLang|uselang {{=}} code}}&lt;br /&gt;
--  @return             {string} Language code.&lt;br /&gt;
function i18n.getLang()&lt;br /&gt;
    local frame = mw.getCurrentFrame() or {}&lt;br /&gt;
    local parentFrame = frame.getParent and frame:getParent() or {}&lt;br /&gt;
&lt;br /&gt;
    local code = mw.language.getContentLanguage():getCode()&lt;br /&gt;
    local subPage = title.subpageText&lt;br /&gt;
&lt;br /&gt;
    -- Language argument test.&lt;br /&gt;
    local langOverride =&lt;br /&gt;
        (frame.args or {}).uselang or&lt;br /&gt;
        (parentFrame.args or {}).uselang&lt;br /&gt;
    if _i18n.isValidCode(langOverride) then&lt;br /&gt;
        code = langOverride&lt;br /&gt;
&lt;br /&gt;
    -- Subpage language test.&lt;br /&gt;
    elseif title.isSubpage and _i18n.isValidCode(subPage) then&lt;br /&gt;
        code = _i18n.isValidCode(subPage) and subPage or code&lt;br /&gt;
&lt;br /&gt;
    -- User language test.&lt;br /&gt;
    elseif parentFrame.preprocess or frame.preprocess then&lt;br /&gt;
        uselang = uselang&lt;br /&gt;
            or  parentFrame.preprocess&lt;br /&gt;
                and parentFrame:preprocess(&#039;{{int:lang}}&#039;)&lt;br /&gt;
                or  frame:preprocess(&#039;{{int:lang}}&#039;)&lt;br /&gt;
        local decodedLang = mw.text.decode(uselang) &lt;br /&gt;
        if decodedLang ~= &#039;&amp;lt;lang&amp;gt;&#039; and decodedLang ~= &#039;⧼lang⧽&#039; then&lt;br /&gt;
            code = decodedLang == &#039;(lang)&#039;&lt;br /&gt;
                and &#039;qqx&#039;&lt;br /&gt;
                or  uselang&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return code&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Template wrapper for [[Template:I18n]].&lt;br /&gt;
--  @function           i18n.main&lt;br /&gt;
--  @param              {table} frame Frame invocation object.&lt;br /&gt;
--  @return             {string} Module output in template context.&lt;br /&gt;
--  @usage              {{#invoke:i18n|main}}&lt;br /&gt;
i18n.main = entrypoint(i18n)&lt;br /&gt;
&lt;br /&gt;
return i18n&lt;br /&gt;
-- &amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=M%C3%B3dulo:Mbox/i18n&amp;diff=7513</id>
		<title>Módulo:Mbox/i18n</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=M%C3%B3dulo:Mbox/i18n&amp;diff=7513"/>
		<updated>2023-11-01T23:03:45Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: Página creada con «-- &amp;lt;nowiki&amp;gt; return {     [&amp;quot;_metadata&amp;quot;] = {         [&amp;quot;order&amp;quot;] = {             &amp;quot;aside&amp;quot;,             &amp;quot;bgcolor&amp;quot;,             &amp;quot;bordercolor&amp;quot;,             &amp;quot;class&amp;quot;,             &amp;quot;collapsed&amp;quot;,             &amp;quot;comment&amp;quot;,             &amp;quot;dismiss&amp;quot;,             &amp;quot;header&amp;quot;,             &amp;quot;id&amp;quot;,             &amp;quot;image&amp;quot;,             &amp;quot;imagelink&amp;quot;,             &amp;quot;imagewidth&amp;quot;,             &amp;quot;style&amp;quot;,             &amp;quot;text&amp;quot;,             &amp;quot;type&amp;quot;         }     },     [&amp;quot;en&amp;quot;] = {         [&amp;quot;aside&amp;quot;] = &amp;quot;aside&amp;quot;,         [&amp;quot;b…»&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;aside&amp;quot;,&lt;br /&gt;
            &amp;quot;bgcolor&amp;quot;,&lt;br /&gt;
            &amp;quot;bordercolor&amp;quot;,&lt;br /&gt;
            &amp;quot;class&amp;quot;,&lt;br /&gt;
            &amp;quot;collapsed&amp;quot;,&lt;br /&gt;
            &amp;quot;comment&amp;quot;,&lt;br /&gt;
            &amp;quot;dismiss&amp;quot;,&lt;br /&gt;
            &amp;quot;header&amp;quot;,&lt;br /&gt;
            &amp;quot;id&amp;quot;,&lt;br /&gt;
            &amp;quot;image&amp;quot;,&lt;br /&gt;
            &amp;quot;imagelink&amp;quot;,&lt;br /&gt;
            &amp;quot;imagewidth&amp;quot;,&lt;br /&gt;
            &amp;quot;style&amp;quot;,&lt;br /&gt;
            &amp;quot;text&amp;quot;,&lt;br /&gt;
            &amp;quot;type&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;en&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;aside&amp;quot;] = &amp;quot;aside&amp;quot;,&lt;br /&gt;
        [&amp;quot;bgcolor&amp;quot;] = &amp;quot;bgcolor&amp;quot;,&lt;br /&gt;
        [&amp;quot;bordercolor&amp;quot;] = &amp;quot;bordercolor&amp;quot;,&lt;br /&gt;
        [&amp;quot;class&amp;quot;] = &amp;quot;class&amp;quot;,&lt;br /&gt;
        [&amp;quot;collapsed&amp;quot;] = &amp;quot;collapsed&amp;quot;,&lt;br /&gt;
        [&amp;quot;comment&amp;quot;] = &amp;quot;comment&amp;quot;,&lt;br /&gt;
        [&amp;quot;dismiss&amp;quot;] = &amp;quot;Dismiss&amp;quot;,&lt;br /&gt;
        [&amp;quot;header&amp;quot;] = &amp;quot;header&amp;quot;,&lt;br /&gt;
        [&amp;quot;id&amp;quot;] = &amp;quot;id&amp;quot;,&lt;br /&gt;
        [&amp;quot;image&amp;quot;] = &amp;quot;image&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagelink&amp;quot;] = &amp;quot;imagelink&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagewidth&amp;quot;] = &amp;quot;imagewidth&amp;quot;,&lt;br /&gt;
        [&amp;quot;style&amp;quot;] = &amp;quot;style&amp;quot;,&lt;br /&gt;
        [&amp;quot;text&amp;quot;] = &amp;quot;text&amp;quot;,&lt;br /&gt;
        [&amp;quot;type&amp;quot;] = &amp;quot;type&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;de&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;aside&amp;quot;] = &amp;quot;nebenbemerkung&amp;quot;,&lt;br /&gt;
        [&amp;quot;bgcolor&amp;quot;] = &amp;quot;hintergrundfarbe&amp;quot;,&lt;br /&gt;
        [&amp;quot;bordercolor&amp;quot;] = &amp;quot;randfarbe&amp;quot;,&lt;br /&gt;
        [&amp;quot;class&amp;quot;] = &amp;quot;klasse&amp;quot;,&lt;br /&gt;
        [&amp;quot;collapsed&amp;quot;] = &amp;quot;eingeklappt&amp;quot;,&lt;br /&gt;
        [&amp;quot;comment&amp;quot;] = &amp;quot;Kommentar&amp;quot;,&lt;br /&gt;
        [&amp;quot;dismiss&amp;quot;] = &amp;quot;Verstecken&amp;quot;,&lt;br /&gt;
        [&amp;quot;header&amp;quot;] = &amp;quot;Titel&amp;quot;,&lt;br /&gt;
        [&amp;quot;id&amp;quot;] = &amp;quot;id&amp;quot;,&lt;br /&gt;
        [&amp;quot;image&amp;quot;] = &amp;quot;bild&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagelink&amp;quot;] = &amp;quot;bildlink&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagewidth&amp;quot;] = &amp;quot;bildbreite&amp;quot;,&lt;br /&gt;
        [&amp;quot;style&amp;quot;] = &amp;quot;style&amp;quot;,&lt;br /&gt;
        [&amp;quot;text&amp;quot;] = &amp;quot;Text&amp;quot;,&lt;br /&gt;
        [&amp;quot;type&amp;quot;] = &amp;quot;typ&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;et&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;aside&amp;quot;] = &amp;quot;kõrval&amp;quot;,&lt;br /&gt;
        [&amp;quot;bgcolor&amp;quot;] = &amp;quot;taustavärv&amp;quot;,&lt;br /&gt;
        [&amp;quot;bordercolor&amp;quot;] = &amp;quot;piirivärv&amp;quot;,&lt;br /&gt;
        [&amp;quot;class&amp;quot;] = &amp;quot;klass&amp;quot;,&lt;br /&gt;
        [&amp;quot;comment&amp;quot;] = &amp;quot;kommentaar&amp;quot;,&lt;br /&gt;
        [&amp;quot;dismiss&amp;quot;] = &amp;quot;Loobu&amp;quot;,&lt;br /&gt;
        [&amp;quot;id&amp;quot;] = &amp;quot;id&amp;quot;,&lt;br /&gt;
        [&amp;quot;image&amp;quot;] = &amp;quot;pilt&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagelink&amp;quot;] = &amp;quot;pildilink&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagewidth&amp;quot;] = &amp;quot;pildisuurus&amp;quot;,&lt;br /&gt;
        [&amp;quot;style&amp;quot;] = &amp;quot;stiil&amp;quot;,&lt;br /&gt;
        [&amp;quot;text&amp;quot;] = &amp;quot;tekst&amp;quot;,&lt;br /&gt;
        [&amp;quot;type&amp;quot;] = &amp;quot;tüüp&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;hi&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;aside&amp;quot;] = &amp;quot;अलग&amp;quot;,&lt;br /&gt;
        [&amp;quot;bgcolor&amp;quot;] = &amp;quot;bgcolor&amp;quot;,&lt;br /&gt;
        [&amp;quot;bordercolor&amp;quot;] = &amp;quot;bordercolour&amp;quot;,&lt;br /&gt;
        [&amp;quot;class&amp;quot;] = &amp;quot;क्लास&amp;quot;,&lt;br /&gt;
        [&amp;quot;collapsed&amp;quot;] = &amp;quot;छोटा&amp;quot;,&lt;br /&gt;
        [&amp;quot;comment&amp;quot;] = &amp;quot;टिप्पणी&amp;quot;,&lt;br /&gt;
        [&amp;quot;dismiss&amp;quot;] = &amp;quot;हटाएँ&amp;quot;,&lt;br /&gt;
        [&amp;quot;header&amp;quot;] = &amp;quot;हैडर&amp;quot;,&lt;br /&gt;
        [&amp;quot;id&amp;quot;] = &amp;quot;id&amp;quot;,&lt;br /&gt;
        [&amp;quot;image&amp;quot;] = &amp;quot;चित्र&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagelink&amp;quot;] = &amp;quot;imagelink&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagewidth&amp;quot;] = &amp;quot;imagewidth&amp;quot;,&lt;br /&gt;
        [&amp;quot;style&amp;quot;] = &amp;quot;स्टाइल&amp;quot;,&lt;br /&gt;
        [&amp;quot;text&amp;quot;] = &amp;quot;टेक्स्ट&amp;quot;,&lt;br /&gt;
        [&amp;quot;type&amp;quot;] = &amp;quot;प्रकार&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ja&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;aside&amp;quot;] = &amp;quot;アサイド&amp;quot;,&lt;br /&gt;
        [&amp;quot;bgcolor&amp;quot;] = &amp;quot;背景色&amp;quot;,&lt;br /&gt;
        [&amp;quot;bordercolor&amp;quot;] = &amp;quot;境界線の色&amp;quot;,&lt;br /&gt;
        [&amp;quot;class&amp;quot;] = &amp;quot;クラス&amp;quot;,&lt;br /&gt;
        [&amp;quot;collapsed&amp;quot;] = &amp;quot;折り畳む&amp;quot;,&lt;br /&gt;
        [&amp;quot;comment&amp;quot;] = &amp;quot;コメント&amp;quot;,&lt;br /&gt;
        [&amp;quot;dismiss&amp;quot;] = &amp;quot;後で見る&amp;quot;,&lt;br /&gt;
        [&amp;quot;header&amp;quot;] = &amp;quot;ヘッダー&amp;quot;,&lt;br /&gt;
        [&amp;quot;id&amp;quot;] = &amp;quot;ID&amp;quot;,&lt;br /&gt;
        [&amp;quot;image&amp;quot;] = &amp;quot;画像&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagelink&amp;quot;] = &amp;quot;画像リンク&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagewidth&amp;quot;] = &amp;quot;画像の幅&amp;quot;,&lt;br /&gt;
        [&amp;quot;style&amp;quot;] = &amp;quot;スタイル&amp;quot;,&lt;br /&gt;
        [&amp;quot;text&amp;quot;] = &amp;quot;テキスト&amp;quot;,&lt;br /&gt;
        [&amp;quot;type&amp;quot;] = &amp;quot;種類&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;pl&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;aside&amp;quot;] = &amp;quot;aside&amp;quot;,&lt;br /&gt;
        [&amp;quot;bgcolor&amp;quot;] = &amp;quot;tło&amp;quot;,&lt;br /&gt;
        [&amp;quot;bordercolor&amp;quot;] = &amp;quot;krawędź&amp;quot;,&lt;br /&gt;
        [&amp;quot;class&amp;quot;] = &amp;quot;klasa&amp;quot;,&lt;br /&gt;
        [&amp;quot;collapsed&amp;quot;] = &amp;quot;zwinięty&amp;quot;,&lt;br /&gt;
        [&amp;quot;comment&amp;quot;] = &amp;quot;komentarz&amp;quot;,&lt;br /&gt;
        [&amp;quot;dismiss&amp;quot;] = &amp;quot;Odrzuć&amp;quot;,&lt;br /&gt;
        [&amp;quot;header&amp;quot;] = &amp;quot;nagłówek&amp;quot;,&lt;br /&gt;
        [&amp;quot;id&amp;quot;] = &amp;quot;id&amp;quot;,&lt;br /&gt;
        [&amp;quot;image&amp;quot;] = &amp;quot;obraz&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagelink&amp;quot;] = &amp;quot;link obrazu&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagewidth&amp;quot;] = &amp;quot;szerokość obrazu&amp;quot;,&lt;br /&gt;
        [&amp;quot;style&amp;quot;] = &amp;quot;style&amp;quot;,&lt;br /&gt;
        [&amp;quot;text&amp;quot;] = &amp;quot;tekst&amp;quot;,&lt;br /&gt;
        [&amp;quot;type&amp;quot;] = &amp;quot;typ&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;pt-br&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;aside&amp;quot;] = &amp;quot;de lado&amp;quot;,&lt;br /&gt;
        [&amp;quot;bgcolor&amp;quot;] = &amp;quot;bgcolor&amp;quot;,&lt;br /&gt;
        [&amp;quot;bordercolor&amp;quot;] = &amp;quot;cor da borda&amp;quot;,&lt;br /&gt;
        [&amp;quot;class&amp;quot;] = &amp;quot;class&amp;quot;,&lt;br /&gt;
        [&amp;quot;collapsed&amp;quot;] = &amp;quot;recolher&amp;quot;,&lt;br /&gt;
        [&amp;quot;comment&amp;quot;] = &amp;quot;comentário&amp;quot;,&lt;br /&gt;
        [&amp;quot;dismiss&amp;quot;] = &amp;quot;Dispensar&amp;quot;,&lt;br /&gt;
        [&amp;quot;header&amp;quot;] = &amp;quot;cabeçalho&amp;quot;,&lt;br /&gt;
        [&amp;quot;id&amp;quot;] = &amp;quot;id&amp;quot;,&lt;br /&gt;
        [&amp;quot;image&amp;quot;] = &amp;quot;imagem&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagelink&amp;quot;] = &amp;quot;link imagem&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagewidth&amp;quot;] = &amp;quot;largura da imagem&amp;quot;,&lt;br /&gt;
        [&amp;quot;style&amp;quot;] = &amp;quot;estilo&amp;quot;,&lt;br /&gt;
        [&amp;quot;text&amp;quot;] = &amp;quot;texto&amp;quot;,&lt;br /&gt;
        [&amp;quot;type&amp;quot;] = &amp;quot;tipo&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ru&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;aside&amp;quot;] = &amp;quot;текст справа&amp;quot;,&lt;br /&gt;
        [&amp;quot;bgcolor&amp;quot;] = &amp;quot;bgcolor&amp;quot;,&lt;br /&gt;
        [&amp;quot;bordercolor&amp;quot;] = &amp;quot;bordercolor&amp;quot;,&lt;br /&gt;
        [&amp;quot;class&amp;quot;] = &amp;quot;class&amp;quot;,&lt;br /&gt;
        [&amp;quot;collapsed&amp;quot;] = &amp;quot;collapsed&amp;quot;,&lt;br /&gt;
        [&amp;quot;comment&amp;quot;] = &amp;quot;дополнение&amp;quot;,&lt;br /&gt;
        [&amp;quot;dismiss&amp;quot;] = &amp;quot;dismiss&amp;quot;,&lt;br /&gt;
        [&amp;quot;header&amp;quot;] = &amp;quot;заголовок&amp;quot;,&lt;br /&gt;
        [&amp;quot;id&amp;quot;] = &amp;quot;id&amp;quot;,&lt;br /&gt;
        [&amp;quot;image&amp;quot;] = &amp;quot;изображение&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagelink&amp;quot;] = &amp;quot;ссылка в изображении&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagewidth&amp;quot;] = &amp;quot;ширина изображения&amp;quot;,&lt;br /&gt;
        [&amp;quot;style&amp;quot;] = &amp;quot;style&amp;quot;,&lt;br /&gt;
        [&amp;quot;text&amp;quot;] = &amp;quot;текст&amp;quot;,&lt;br /&gt;
        [&amp;quot;type&amp;quot;] = &amp;quot;type&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;tr&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;aside&amp;quot;] = &amp;quot;kenar&amp;quot;,&lt;br /&gt;
        [&amp;quot;bgcolor&amp;quot;] = &amp;quot;aprengi&amp;quot;,&lt;br /&gt;
        [&amp;quot;bordercolor&amp;quot;] = &amp;quot;kenarlıkrengi&amp;quot;,&lt;br /&gt;
        [&amp;quot;class&amp;quot;] = &amp;quot;sınıf&amp;quot;,&lt;br /&gt;
        [&amp;quot;collapsed&amp;quot;] = &amp;quot;daratılmış&amp;quot;,&lt;br /&gt;
        [&amp;quot;comment&amp;quot;] = &amp;quot;yorum&amp;quot;,&lt;br /&gt;
        [&amp;quot;dismiss&amp;quot;] = &amp;quot;Kapat&amp;quot;,&lt;br /&gt;
        [&amp;quot;header&amp;quot;] = &amp;quot;başlık&amp;quot;,&lt;br /&gt;
        [&amp;quot;id&amp;quot;] = &amp;quot;kimlik&amp;quot;,&lt;br /&gt;
        [&amp;quot;image&amp;quot;] = &amp;quot;resim&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagelink&amp;quot;] = &amp;quot;resimbağlantısı&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagewidth&amp;quot;] = &amp;quot;resimgenişliği&amp;quot;,&lt;br /&gt;
        [&amp;quot;style&amp;quot;] = &amp;quot;stil&amp;quot;,&lt;br /&gt;
        [&amp;quot;text&amp;quot;] = &amp;quot;metin&amp;quot;,&lt;br /&gt;
        [&amp;quot;type&amp;quot;] = &amp;quot;tür&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;vi&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;aside&amp;quot;] = &amp;quot;phía bên&amp;quot;,&lt;br /&gt;
        [&amp;quot;bgcolor&amp;quot;] = &amp;quot;màu nền&amp;quot;,&lt;br /&gt;
        [&amp;quot;bordercolor&amp;quot;] = &amp;quot;màu viền&amp;quot;,&lt;br /&gt;
        [&amp;quot;class&amp;quot;] = &amp;quot;lớp&amp;quot;,&lt;br /&gt;
        [&amp;quot;collapsed&amp;quot;] = &amp;quot;đã đóng&amp;quot;,&lt;br /&gt;
        [&amp;quot;comment&amp;quot;] = &amp;quot;bình luận&amp;quot;,&lt;br /&gt;
        [&amp;quot;dismiss&amp;quot;] = &amp;quot;Bỏ qua&amp;quot;,&lt;br /&gt;
        [&amp;quot;header&amp;quot;] = &amp;quot;tiêu đề&amp;quot;,&lt;br /&gt;
        [&amp;quot;id&amp;quot;] = &amp;quot;id&amp;quot;,&lt;br /&gt;
        [&amp;quot;image&amp;quot;] = &amp;quot;hình ảnh&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagelink&amp;quot;] = &amp;quot;liên kết ảnh&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagewidth&amp;quot;] = &amp;quot;độ rộng ảnh&amp;quot;,&lt;br /&gt;
        [&amp;quot;style&amp;quot;] = &amp;quot;phong cách&amp;quot;,&lt;br /&gt;
        [&amp;quot;text&amp;quot;] = &amp;quot;văn bản&amp;quot;,&lt;br /&gt;
        [&amp;quot;type&amp;quot;] = &amp;quot;loại&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;zh&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;aside&amp;quot;] = &amp;quot;侧栏&amp;quot;,&lt;br /&gt;
        [&amp;quot;bgcolor&amp;quot;] = &amp;quot;背景颜色&amp;quot;,&lt;br /&gt;
        [&amp;quot;bordercolor&amp;quot;] = &amp;quot;边框颜色&amp;quot;,&lt;br /&gt;
        [&amp;quot;class&amp;quot;] = &amp;quot;类&amp;quot;,&lt;br /&gt;
        [&amp;quot;collapsed&amp;quot;] = &amp;quot;折叠&amp;quot;,&lt;br /&gt;
        [&amp;quot;comment&amp;quot;] = &amp;quot;备注&amp;quot;,&lt;br /&gt;
        [&amp;quot;dismiss&amp;quot;] = &amp;quot;关闭&amp;quot;,&lt;br /&gt;
        [&amp;quot;header&amp;quot;] = &amp;quot;标题&amp;quot;,&lt;br /&gt;
        [&amp;quot;id&amp;quot;] = &amp;quot;id&amp;quot;,&lt;br /&gt;
        [&amp;quot;image&amp;quot;] = &amp;quot;图像&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagelink&amp;quot;] = &amp;quot;图像链接&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagewidth&amp;quot;] = &amp;quot;图像宽度&amp;quot;,&lt;br /&gt;
        [&amp;quot;style&amp;quot;] = &amp;quot;样式&amp;quot;,&lt;br /&gt;
        [&amp;quot;text&amp;quot;] = &amp;quot;文字&amp;quot;,&lt;br /&gt;
        [&amp;quot;type&amp;quot;] = &amp;quot;类型&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;zh-tw&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;aside&amp;quot;] = &amp;quot;邊界&amp;quot;,&lt;br /&gt;
        [&amp;quot;bgcolor&amp;quot;] = &amp;quot;背景色彩&amp;quot;,&lt;br /&gt;
        [&amp;quot;bordercolor&amp;quot;] = &amp;quot;邊框色彩&amp;quot;,&lt;br /&gt;
        [&amp;quot;class&amp;quot;] = &amp;quot;屬性&amp;quot;,&lt;br /&gt;
        [&amp;quot;collapsed&amp;quot;] = &amp;quot;摺疊&amp;quot;,&lt;br /&gt;
        [&amp;quot;comment&amp;quot;] = &amp;quot;評論&amp;quot;,&lt;br /&gt;
        [&amp;quot;dismiss&amp;quot;] = &amp;quot;忽略&amp;quot;,&lt;br /&gt;
        [&amp;quot;header&amp;quot;] = &amp;quot;標頭&amp;quot;,&lt;br /&gt;
        [&amp;quot;id&amp;quot;] = &amp;quot;ID&amp;quot;,&lt;br /&gt;
        [&amp;quot;image&amp;quot;] = &amp;quot;圖片&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagelink&amp;quot;] = &amp;quot;圖片連結&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagewidth&amp;quot;] = &amp;quot;圖片長度&amp;quot;,&lt;br /&gt;
        [&amp;quot;style&amp;quot;] = &amp;quot;樣式&amp;quot;,&lt;br /&gt;
        [&amp;quot;text&amp;quot;] = &amp;quot;文字&amp;quot;,&lt;br /&gt;
        [&amp;quot;type&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>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=M%C3%B3dulo:I18n&amp;diff=7512</id>
		<title>Módulo:I18n</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=M%C3%B3dulo:I18n&amp;diff=7512"/>
		<updated>2023-11-01T23:02:48Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--- I18n library for message storage in Lua datastores.&lt;br /&gt;
--  The module is designed to enable message separation from modules &amp;amp;&lt;br /&gt;
--  templates. It has support for handling language fallbacks. This&lt;br /&gt;
--  module is a Lua port of [[I18n-js]] and i18n modules that can be loaded&lt;br /&gt;
--  by it are editable through [[I18nEdit]].&lt;br /&gt;
--  &lt;br /&gt;
--  @module         i18n&lt;br /&gt;
--  @version        1.4.0&lt;br /&gt;
--  @require        Module:Entrypoint&lt;br /&gt;
--  @require        Module:Fallbacklist&lt;br /&gt;
--  @author         [[User:KockaAdmiralac|KockaAdmiralac]]&lt;br /&gt;
--  @author         [[User:Speedit|Speedit]]&lt;br /&gt;
--  @attribution    [[User:Cqm|Cqm]]&lt;br /&gt;
--  @release        stable&lt;br /&gt;
--  @see            [[I18n|I18n guide]]&lt;br /&gt;
--  @see            [[I18n-js]]&lt;br /&gt;
--  @see            [[I18nEdit]]&lt;br /&gt;
--  &amp;lt;nowiki&amp;gt;&lt;br /&gt;
local i18n, _i18n = {}, {}&lt;br /&gt;
&lt;br /&gt;
--  Module variables &amp;amp; dependencies.&lt;br /&gt;
local title = mw.title.getCurrentTitle()&lt;br /&gt;
local fallbacks = require(&#039;Dev:Fallbacklist&#039;)&lt;br /&gt;
local entrypoint = require(&#039;Dev:Entrypoint&#039;)&lt;br /&gt;
local uselang&lt;br /&gt;
&lt;br /&gt;
--- Argument substitution as $n where n &amp;gt; 0.&lt;br /&gt;
--  @function           _i18n.handleArgs&lt;br /&gt;
--  @param              {string} msg Message to substitute arguments into.&lt;br /&gt;
--  @param              {table} args Arguments table to substitute.&lt;br /&gt;
--  @return             {string} Resulting message.&lt;br /&gt;
--  @local&lt;br /&gt;
function _i18n.handleArgs(msg, args)&lt;br /&gt;
    for i, a in ipairs(args) do&lt;br /&gt;
        msg = (string.gsub(msg, &#039;%$&#039; .. tostring(i), tostring(a)))&lt;br /&gt;
    end&lt;br /&gt;
    return msg&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Checks whether a language code is valid.&lt;br /&gt;
--  @function           _i18n.isValidCode&lt;br /&gt;
--  @param              {string} code Language code to check.&lt;br /&gt;
--  @return             {boolean} Whether the language code is valid.&lt;br /&gt;
--  @local&lt;br /&gt;
function _i18n.isValidCode(code)&lt;br /&gt;
    return type(code) == &#039;string&#039; and #mw.language.fetchLanguageName(code) ~= 0&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Checks whether a message contains unprocessed wikitext.&lt;br /&gt;
--  Used to optimise message getter by not preprocessing pure text.&lt;br /&gt;
--  @function           _i18n.isWikitext&lt;br /&gt;
--  @param              {string} msg Message to check.&lt;br /&gt;
--  @return             {boolean} Whether the message contains wikitext.&lt;br /&gt;
function _i18n.isWikitext(msg)&lt;br /&gt;
    return&lt;br /&gt;
        type(msg) == &#039;string&#039; and&lt;br /&gt;
        (&lt;br /&gt;
            msg:find(&#039;%-%-%-%-&#039;) or&lt;br /&gt;
            msg:find(&#039;%f[^\n%z][;:*#] &#039;) or&lt;br /&gt;
            msg:find(&#039;%f[^\n%z]==* *[^\n|]+ =*=%f[\n]&#039;) or&lt;br /&gt;
            msg:find(&#039;%b&amp;lt;&amp;gt;&#039;) or msg:find(&#039;\&#039;\&#039;&#039;) or&lt;br /&gt;
            msg:find(&#039;%[%b[]%]&#039;) or msg:find(&#039;{%b{}}&#039;)&lt;br /&gt;
        )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- I18n datastore class.&lt;br /&gt;
--  This is used to control language translation and access to individual&lt;br /&gt;
--  messages. The datastore instance provides language and message&lt;br /&gt;
--  getter-setter methods, which can be used to internationalize Lua modules.&lt;br /&gt;
--  The language methods (any ending in `Lang`) are all **chainable**.&lt;br /&gt;
--  @type            Data&lt;br /&gt;
local Data = {}&lt;br /&gt;
Data.__index = Data&lt;br /&gt;
&lt;br /&gt;
--- Datastore message getter utility.&lt;br /&gt;
--  This method returns localized messages from the datastore corresponding&lt;br /&gt;
--  to a `key`. These messages may have `$n` parameters, which can be&lt;br /&gt;
--  replaced by optional argument strings supplied by the `msg` call.&lt;br /&gt;
--  &lt;br /&gt;
--  This function supports [[Lua reference manual#named_arguments|named&lt;br /&gt;
--  arguments]]. The named argument syntax is more versatile despite its&lt;br /&gt;
--  verbosity; it can be used to select message language &amp;amp; source(s).&lt;br /&gt;
--  @function           Data:msg&lt;br /&gt;
--  @usage&lt;br /&gt;
--  &lt;br /&gt;
--      ds:msg{&lt;br /&gt;
--          key = &#039;message-name&#039;,&lt;br /&gt;
--          lang = &#039;&#039;,&lt;br /&gt;
--          args = {...},&lt;br /&gt;
--          sources = {}&lt;br /&gt;
--      }&lt;br /&gt;
--  &lt;br /&gt;
--  @usage&lt;br /&gt;
--  &lt;br /&gt;
--      ds:msg(&#039;message-name&#039;, ...)&lt;br /&gt;
--  &lt;br /&gt;
--  @param              {string|table} opts Message configuration or key.&lt;br /&gt;
--  @param[opt]         {string} opts.key Message key to return from the&lt;br /&gt;
--                      datastore.&lt;br /&gt;
--  @param[opt]         {table} opts.args Arguments to substitute into the&lt;br /&gt;
--                      message (`$n`).&lt;br /&gt;
--  @param[opt]         {table} opts.sources Source names to limit to (see&lt;br /&gt;
--                      `Data:fromSources`).&lt;br /&gt;
--  @param[opt]         {table} opts.lang Temporary language to use (see&lt;br /&gt;
--                      `Data:inLang`).&lt;br /&gt;
--  @param[opt]         {string} ... Arguments to substitute into the message&lt;br /&gt;
--                      (`$n`).&lt;br /&gt;
--  @error[115]         {string} &#039;missing arguments in Data:msg&#039;&lt;br /&gt;
--  @return             {string} Localised datastore message or `&#039;&amp;lt;key&amp;gt;&#039;`.&lt;br /&gt;
function Data:msg(opts, ...)&lt;br /&gt;
    local frame = mw.getCurrentFrame()&lt;br /&gt;
    -- Argument normalization.&lt;br /&gt;
    if not self or not opts then&lt;br /&gt;
        error(&#039;missing arguments in Data:msg&#039;)&lt;br /&gt;
    end&lt;br /&gt;
    local key = type(opts) == &#039;table&#039; and opts.key or opts&lt;br /&gt;
    local args = opts.args or {...}&lt;br /&gt;
    -- Configuration parameters.&lt;br /&gt;
    if opts.sources then&lt;br /&gt;
        self:fromSources(unpack(opts.sources))&lt;br /&gt;
    end&lt;br /&gt;
    if opts.lang then&lt;br /&gt;
        self:inLang(opts.lang)&lt;br /&gt;
    end&lt;br /&gt;
    -- Source handling.&lt;br /&gt;
    local source_n = self.tempSources or self._sources&lt;br /&gt;
    local source_i = {}&lt;br /&gt;
    for n, i in pairs(source_n) do&lt;br /&gt;
        source_i[i] = n&lt;br /&gt;
    end&lt;br /&gt;
    self.tempSources = nil&lt;br /&gt;
    -- Language handling.&lt;br /&gt;
    local lang = self.tempLang or self.defaultLang&lt;br /&gt;
    self.tempLang = nil&lt;br /&gt;
    -- Message fetching.&lt;br /&gt;
    local msg&lt;br /&gt;
    for i, messages in ipairs(self._messages) do&lt;br /&gt;
        -- Message data.&lt;br /&gt;
        local msg = (messages[lang] or {})[key]&lt;br /&gt;
        -- Fallback support (experimental).&lt;br /&gt;
        for _, l in ipairs((fallbacks[lang] or {})) do&lt;br /&gt;
            if msg == nil then&lt;br /&gt;
                msg = (messages[l] or {})[key]&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        -- Internal fallback to &#039;en&#039;.&lt;br /&gt;
        msg = msg ~= nil and msg or messages.en[key]&lt;br /&gt;
        -- Handling argument substitution from Lua.&lt;br /&gt;
        if msg and source_i[i] and #args &amp;gt; 0 then&lt;br /&gt;
            msg = _i18n.handleArgs(msg, args)&lt;br /&gt;
        end&lt;br /&gt;
        if msg and source_i[i] and lang ~= &#039;qqx&#039; then&lt;br /&gt;
            return frame and _i18n.isWikitext(msg)&lt;br /&gt;
                and frame:preprocess(mw.text.trim(msg))&lt;br /&gt;
                or  mw.text.trim(msg)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    return mw.text.nowiki(&#039;&amp;lt;&#039; .. key .. &#039;&amp;gt;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Datastore template parameter getter utility.&lt;br /&gt;
--  This method, given a table of arguments, tries to find a parameter&#039;s&lt;br /&gt;
--  localized name in the datastore and returns its value, or nil if&lt;br /&gt;
--  not present.&lt;br /&gt;
--&lt;br /&gt;
--  This method always uses the wiki&#039;s content language.&lt;br /&gt;
--  @function           Data:parameter&lt;br /&gt;
--  @param              {string} parameter Parameter&#039;s key in the datastore&lt;br /&gt;
--  @param              {table} args Arguments to find the parameter in&lt;br /&gt;
--  @error[176]         {string} &#039;missing arguments in Data:parameter&#039;&lt;br /&gt;
--  @return             {string|nil} Parameter&#039;s value or nil if not present&lt;br /&gt;
function Data:parameter(key, args)&lt;br /&gt;
    -- Argument normalization.&lt;br /&gt;
    if not self or not key or not args then&lt;br /&gt;
        error(&#039;missing arguments in Data:parameter&#039;)&lt;br /&gt;
    end&lt;br /&gt;
    local contentLang = mw.language.getContentLanguage():getCode()&lt;br /&gt;
    -- Message fetching.&lt;br /&gt;
    for i, messages in ipairs(self._messages) do&lt;br /&gt;
        local msg = (messages[contentLang] or {})[key]&lt;br /&gt;
        if msg ~= nil and args[msg] ~= nil then&lt;br /&gt;
            return args[msg]&lt;br /&gt;
        end&lt;br /&gt;
        for _, l in ipairs((fallbacks[contentLang] or {})) do&lt;br /&gt;
            if msg == nil or args[msg] == nil then&lt;br /&gt;
                -- Check next fallback.&lt;br /&gt;
                msg = (messages[l] or {})[key]&lt;br /&gt;
            else&lt;br /&gt;
                -- A localized message was found.&lt;br /&gt;
                return args[msg]&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        -- Fallback to English.&lt;br /&gt;
        msg = messages.en[key]&lt;br /&gt;
        if msg ~= nil and args[msg] ~= nil then&lt;br /&gt;
            return args[msg]&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Datastore temporary source setter to a specificed subset of datastores.&lt;br /&gt;
--  By default, messages are fetched from the datastore in the same&lt;br /&gt;
--  order of priority as `i18n.loadMessages`.&lt;br /&gt;
--  @function           Data:fromSource&lt;br /&gt;
--  @param              {string} ... Source name(s) to use.&lt;br /&gt;
--  @return             {Data} Datastore instance.&lt;br /&gt;
function Data:fromSource(...)&lt;br /&gt;
    local c = select(&#039;#&#039;, ...)&lt;br /&gt;
    if c ~= 0 then&lt;br /&gt;
        self.tempSources = {}&lt;br /&gt;
        for i = 1, c do&lt;br /&gt;
            local n = select(i, ...)&lt;br /&gt;
            if type(n) == &#039;string&#039; and type(self._sources[n]) == &#039;number&#039; then&lt;br /&gt;
                self.tempSources[n] = self._sources[n]&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    return self&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Datastore default language getter.&lt;br /&gt;
--  @function           Data:getLang&lt;br /&gt;
--  @return             {string} Default language to serve datastore messages in.&lt;br /&gt;
function Data:getLang()&lt;br /&gt;
    return self.defaultLang&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Datastore language setter to `wgUserLanguage`.&lt;br /&gt;
--  @function           Data:useUserLang&lt;br /&gt;
--  @return             {Data} Datastore instance.&lt;br /&gt;
--  @note               Scribunto only registers `wgUserLanguage` when an&lt;br /&gt;
--                      invocation is at the top of the call stack.&lt;br /&gt;
function Data:useUserLang()&lt;br /&gt;
    self.defaultLang = i18n.getLang() or self.defaultLang&lt;br /&gt;
    return self&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Datastore language setter to `wgContentLanguage`.&lt;br /&gt;
--  @function           Data:useContentLang&lt;br /&gt;
--  @return             {Data} Datastore instance.&lt;br /&gt;
function Data:useContentLang()&lt;br /&gt;
    self.defaultLang = mw.language.getContentLanguage():getCode()&lt;br /&gt;
    return self&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Datastore language setter to specificed language.&lt;br /&gt;
--  @function           Data:useLang&lt;br /&gt;
--  @param              {string} code Language code to use.&lt;br /&gt;
--  @return             {Data} Datastore instance.&lt;br /&gt;
function Data:useLang(code)&lt;br /&gt;
    self.defaultLang = _i18n.isValidCode(code)&lt;br /&gt;
        and code&lt;br /&gt;
        or  self.defaultLang&lt;br /&gt;
    return self&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Temporary datastore language setter to `wgUserLanguage`.&lt;br /&gt;
--  The datastore language reverts to the default language in the next&lt;br /&gt;
--  @{Data:msg} call.&lt;br /&gt;
--  @function           Data:inUserLang&lt;br /&gt;
--  @return             {Data} Datastore instance.&lt;br /&gt;
function Data:inUserLang()&lt;br /&gt;
    self.tempLang = i18n.getLang() or self.tempLang&lt;br /&gt;
    return self&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Temporary datastore language setter to `wgContentLanguage`.&lt;br /&gt;
--  Only affects the next @{Data:msg} call.&lt;br /&gt;
--  @function           Data:inContentLang&lt;br /&gt;
--  @return             {Data} Datastore instance.&lt;br /&gt;
function Data:inContentLang()&lt;br /&gt;
    self.tempLang = mw.language.getContentLanguage():getCode()&lt;br /&gt;
    return self&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Temporary datastore language setter to a specificed language.&lt;br /&gt;
--  Only affects the next @{Data:msg} call.&lt;br /&gt;
--  @function           Data:inLang&lt;br /&gt;
--  @param              {string} code Language code to use.&lt;br /&gt;
--  @return             {Data} Datastore instance.&lt;br /&gt;
function Data:inLang(code)&lt;br /&gt;
    self.tempLang = _i18n.isValidCode(code)&lt;br /&gt;
        and code&lt;br /&gt;
        or  self.tempLang&lt;br /&gt;
    return self&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--  Package functions.&lt;br /&gt;
&lt;br /&gt;
--- Localized message getter by key.&lt;br /&gt;
--  Can be used to fetch messages in a specific language code through `uselang`&lt;br /&gt;
--  parameter. Extra numbered parameters can be supplied for substitution into&lt;br /&gt;
--  the datastore message.&lt;br /&gt;
--  @function           i18n.getMsg&lt;br /&gt;
--  @param              {table} frame Frame table from invocation.&lt;br /&gt;
--  @param              {table} frame.args Metatable containing arguments.&lt;br /&gt;
--  @param              {string} frame.args[1] ROOTPAGENAME of i18n submodule.&lt;br /&gt;
--  @param              {string} frame.args[2] Key of i18n message.&lt;br /&gt;
--  @param[opt]         {string} frame.args.lang Default language of message.&lt;br /&gt;
--  @error[271]         &#039;missing arguments in i18n.getMsg&#039;&lt;br /&gt;
--  @return             {string} I18n message in localised language.&lt;br /&gt;
--  @usage              {{i18n|getMsg|source|key|arg1|arg2|uselang {{=}} code}}&lt;br /&gt;
function i18n.getMsg(frame)&lt;br /&gt;
    if&lt;br /&gt;
        not frame or&lt;br /&gt;
        not frame.args or&lt;br /&gt;
        not frame.args[1] or&lt;br /&gt;
        not frame.args[2]&lt;br /&gt;
    then&lt;br /&gt;
        error(&#039;missing arguments in i18n.getMsg&#039;)&lt;br /&gt;
    end&lt;br /&gt;
    local source = frame.args[1]&lt;br /&gt;
    local key = frame.args[2]&lt;br /&gt;
    -- Pass through extra arguments.&lt;br /&gt;
    local repl = {}&lt;br /&gt;
    for i, a in ipairs(frame.args) do&lt;br /&gt;
        if i &amp;gt;= 3 then&lt;br /&gt;
            repl[i-2] = a&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    -- Load message data.&lt;br /&gt;
    local ds = i18n.loadMessages(source)&lt;br /&gt;
    -- Pass through language argument.&lt;br /&gt;
    ds:inLang(frame.args.uselang)&lt;br /&gt;
    -- Return message.&lt;br /&gt;
    return ds:msg { key = key, args = repl }&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
--- I18n message datastore loader.&lt;br /&gt;
--  @function           i18n.loadMessages&lt;br /&gt;
--  @param              {string} ... ROOTPAGENAME/path for target i18n&lt;br /&gt;
--                      submodules.&lt;br /&gt;
--  @error[322]         {string} &#039;no source supplied to i18n.loadMessages&#039;&lt;br /&gt;
--  @return             {table} I18n datastore instance.&lt;br /&gt;
--  @usage              require(&#039;Dev:I18n&#039;).loadMessages(&#039;1&#039;, &#039;2&#039;)&lt;br /&gt;
function i18n.loadMessages(...)&lt;br /&gt;
    local ds&lt;br /&gt;
    local i = 0&lt;br /&gt;
    local s = {}&lt;br /&gt;
    for j = 1, select(&#039;#&#039;, ...) do&lt;br /&gt;
        local source = select(j, ...)&lt;br /&gt;
        if type(source) == &#039;string&#039; and source ~= &#039;&#039; then&lt;br /&gt;
            i = i + 1&lt;br /&gt;
            s[source] = i&lt;br /&gt;
            if not ds then&lt;br /&gt;
                -- Instantiate datastore.&lt;br /&gt;
                ds = {}&lt;br /&gt;
                ds._messages = {}&lt;br /&gt;
                -- Set default language.&lt;br /&gt;
                setmetatable(ds, Data)&lt;br /&gt;
                ds:useUserLang()&lt;br /&gt;
            end&lt;br /&gt;
            source = string.gsub(source, &#039;^.&#039;, mw.ustring.upper)&lt;br /&gt;
            source = mw.ustring.find(source, &#039;:&#039;)&lt;br /&gt;
                and source&lt;br /&gt;
                or  &#039;Dev:&#039; .. source .. &#039;/i18n&#039;&lt;br /&gt;
            ds._messages[i] = mw.loadData(source)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    if not ds then&lt;br /&gt;
        error(&#039;no source supplied to i18n.loadMessages&#039;)&lt;br /&gt;
    else&lt;br /&gt;
        -- Attach source index map.&lt;br /&gt;
        ds._sources = s&lt;br /&gt;
        -- Return datastore instance.&lt;br /&gt;
        return ds&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Language code getter.&lt;br /&gt;
--  Can validate a template&#039;s language code through `uselang` parameter.&lt;br /&gt;
--  @function           i18n.getLang&lt;br /&gt;
--  @usage              {{i18n|getLang|uselang {{=}} code}}&lt;br /&gt;
--  @return             {string} Language code.&lt;br /&gt;
function i18n.getLang()&lt;br /&gt;
    local frame = mw.getCurrentFrame() or {}&lt;br /&gt;
    local parentFrame = frame.getParent and frame:getParent() or {}&lt;br /&gt;
&lt;br /&gt;
    local code = mw.language.getContentLanguage():getCode()&lt;br /&gt;
    local subPage = title.subpageText&lt;br /&gt;
&lt;br /&gt;
    -- Language argument test.&lt;br /&gt;
    local langOverride =&lt;br /&gt;
        (frame.args or {}).uselang or&lt;br /&gt;
        (parentFrame.args or {}).uselang&lt;br /&gt;
    if _i18n.isValidCode(langOverride) then&lt;br /&gt;
        code = langOverride&lt;br /&gt;
&lt;br /&gt;
    -- Subpage language test.&lt;br /&gt;
    elseif title.isSubpage and _i18n.isValidCode(subPage) then&lt;br /&gt;
        code = _i18n.isValidCode(subPage) and subPage or code&lt;br /&gt;
&lt;br /&gt;
    -- User language test.&lt;br /&gt;
    elseif parentFrame.preprocess or frame.preprocess then&lt;br /&gt;
        uselang = uselang&lt;br /&gt;
            or  parentFrame.preprocess&lt;br /&gt;
                and parentFrame:preprocess(&#039;{{int:lang}}&#039;)&lt;br /&gt;
                or  frame:preprocess(&#039;{{int:lang}}&#039;)&lt;br /&gt;
        local decodedLang = mw.text.decode(uselang) &lt;br /&gt;
        if decodedLang ~= &#039;&amp;lt;lang&amp;gt;&#039; and decodedLang ~= &#039;⧼lang⧽&#039; then&lt;br /&gt;
            code = decodedLang == &#039;(lang)&#039;&lt;br /&gt;
                and &#039;qqx&#039;&lt;br /&gt;
                or  uselang&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return code&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Template wrapper for [[Template:I18n]].&lt;br /&gt;
--  @function           i18n.main&lt;br /&gt;
--  @param              {table} frame Frame invocation object.&lt;br /&gt;
--  @return             {string} Module output in template context.&lt;br /&gt;
--  @usage              {{#invoke:i18n|main}}&lt;br /&gt;
i18n.main = entrypoint(i18n)&lt;br /&gt;
&lt;br /&gt;
return i18n&lt;br /&gt;
-- &amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=M%C3%B3dulo:Arguments&amp;diff=7511</id>
		<title>Módulo:Arguments</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=M%C3%B3dulo:Arguments&amp;diff=7511"/>
		<updated>2023-11-01T22:58:50Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--- Arguments invocation argument extractor for Scribunto modules.&lt;br /&gt;
--  It is intended for use by other Lua modules, and should not be&lt;br /&gt;
--  called from an invocation (`#invoke`) directly.&lt;br /&gt;
--  &lt;br /&gt;
--  This module supports the following features:&lt;br /&gt;
--   * Trimming and blank argument removal.&lt;br /&gt;
--   * Argument inheritance between child and parent frames.&lt;br /&gt;
--   * Argument extraction for external modules and console input.&lt;br /&gt;
--   * Options to customise argument extraction behaviour.&lt;br /&gt;
--  &lt;br /&gt;
--  @script             arguments&lt;br /&gt;
--  @release            stable&lt;br /&gt;
--  @note               The `args` table from the @{arguments.getArgs}&lt;br /&gt;
--                      function is a metatable for performance reasons.&lt;br /&gt;
--                      Thus, the table will not permit Lua table methods&lt;br /&gt;
--                      such as `#args`, @{next|next(args)}, and @{table}&lt;br /&gt;
--                      library functions.&lt;br /&gt;
--  @note               This module will eventually be adapted as a&lt;br /&gt;
--                      library in [[mw:gerrit:q/158323|MediaWiki&lt;br /&gt;
--                      core]], called as `require(&#039;getArgs&#039;)`. The core&lt;br /&gt;
--                      library will remove `options.parentOnly`.&lt;br /&gt;
--  @author             [[wikipedia:User:Mr. Stradivarius|Mr. Stradivarius]] (Wikipedia)&lt;br /&gt;
--  @author             [[wikipedia:User:Anomie|Anomie]] (Wikipedia)&lt;br /&gt;
--  @author             [[wikipedia:User:Jackmcbarn|Jackmcbarn]] (Wikipedia)&lt;br /&gt;
--  @author             [[User:Dessamator|Dessamator]]&lt;br /&gt;
--  @author             [[User:DarthKitty|DarthKitty]]&lt;br /&gt;
--  @attribution        [[wikipedia:Module:Arguments|Module:Arguments]] (Wikipedia)&lt;br /&gt;
--  @see                [[wikipedia:Module:Arguments|Original module on Wikipedia]]&lt;br /&gt;
--  @see                [[Module:Arguments/testcases|Test cases for this module]]&lt;br /&gt;
local arguments = {}&lt;br /&gt;
&lt;br /&gt;
--  Module dependencies.&lt;br /&gt;
local i18n = require(&#039;Module:I18n&#039;).loadMessages(&#039;Arguments&#039;)&lt;br /&gt;
local util = require(&#039;libraryUtil&#039;)&lt;br /&gt;
local checkType = util.checkType&lt;br /&gt;
&lt;br /&gt;
-- Four different value tidying functions.&lt;br /&gt;
-- This way, we don&#039;t have to check the options every time we call them.&lt;br /&gt;
&lt;br /&gt;
--- Default value tidying function.&lt;br /&gt;
--  Trims parameter values automatically if they are defined strings.&lt;br /&gt;
--  Treats blank strings as `nil`.&lt;br /&gt;
--  @function           tidyValDefault&lt;br /&gt;
--  @param              {string|number} key MediaWiki parameter key.&lt;br /&gt;
--  @param              {string|nil} val MediaWiki parameter value,&lt;br /&gt;
--                      or nil if `key` is an empty string or nil.&lt;br /&gt;
--  @local&lt;br /&gt;
local function tidyValDefault(key, val)&lt;br /&gt;
    if type(val) == &#039;string&#039; then&lt;br /&gt;
        val = val:match(&#039;^%s*(.-)%s*$&#039;)&lt;br /&gt;
        if val == &#039;&#039; then&lt;br /&gt;
            return nil&lt;br /&gt;
        else&lt;br /&gt;
            return val&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        return val&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Value tidying function that trims values.&lt;br /&gt;
--  Trims parameter values automatically if they are defined strings.&lt;br /&gt;
--  @function           tidyValTrimOnly&lt;br /&gt;
--  @param              {string|number} key MediaWiki parameter key.&lt;br /&gt;
--  @param              {string|nil} val MediaWiki parameter value.&lt;br /&gt;
--  @local&lt;br /&gt;
local function tidyValTrimOnly(key, val)&lt;br /&gt;
    if type(val) == &#039;string&#039; then&lt;br /&gt;
        return val:match(&#039;^%s*(.-)%s*$&#039;)&lt;br /&gt;
    else&lt;br /&gt;
        return val&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Value tidying function that removes blanks.&lt;br /&gt;
--  Removes blank values from the arguments table.&lt;br /&gt;
--  @function           tidyValRemoveBlanksOnly&lt;br /&gt;
--  @param              {string|number} key MediaWiki parameter key.&lt;br /&gt;
--  @param              {string|nil} val MediaWiki parameter value,&lt;br /&gt;
--                      or nil if `key` is whitespace or nil.&lt;br /&gt;
--  @local&lt;br /&gt;
local function tidyValRemoveBlanksOnly(key, val)&lt;br /&gt;
    if type(val) == &#039;string&#039; then&lt;br /&gt;
        if val:find(&#039;%S&#039;) then&lt;br /&gt;
            return val&lt;br /&gt;
        else&lt;br /&gt;
            return nil&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        return val&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Value tidying function that returns original value.&lt;br /&gt;
--  Effectively a NOOP function that does no value processing.&lt;br /&gt;
--  @function           tidyValNoChange&lt;br /&gt;
--  @param              {string|number} key MediaWiki parameter key.&lt;br /&gt;
--  @param              {string|nil} val MediaWiki parameter value.&lt;br /&gt;
--  @local&lt;br /&gt;
local function tidyValNoChange(key, val)&lt;br /&gt;
    return val&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Parent template title match checker.&lt;br /&gt;
--  @function           matchesTitle&lt;br /&gt;
--  @param              {string|number|nil} given Local prefixed page&lt;br /&gt;
--                      title, or MediaWiki article ID (`wgArticleId`).&lt;br /&gt;
--  @param              {string} title Title of parent template.&lt;br /&gt;
--  @return             {boolean} Whether the `given` ID/title matches&lt;br /&gt;
--                      the title of the parent template.&lt;br /&gt;
local function matchesTitle(given, title)&lt;br /&gt;
    local tp = type( given )&lt;br /&gt;
    return (tp == &#039;string&#039; or tp == &#039;number&#039;) and mw.title.new( given ).prefixedText == title&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Default argument translation metatable.&lt;br /&gt;
--  @table              translate_mt&lt;br /&gt;
--  @local&lt;br /&gt;
local translate_mt = { __index = function(t, k) return k end }&lt;br /&gt;
&lt;br /&gt;
--- Main argument extraction utility.&lt;br /&gt;
--  Arguments are memoized once fetched for optimal performance,&lt;br /&gt;
--  as with the `frame.args` metatable in Scribunto core.&lt;br /&gt;
--  &lt;br /&gt;
--  The default argument lookup behaviour uses the child frame arguments&lt;br /&gt;
--  first, then the parent frame arguments. There are numerous frame&lt;br /&gt;
--  options to change this behaviour.&lt;br /&gt;
--  &lt;br /&gt;
--  The default value tidying behaviour trims parameter values if they&lt;br /&gt;
--  are defined strings and treats blank strings as `nil`. This can be&lt;br /&gt;
--  customised in the `getArgs` options.&lt;br /&gt;
--  &lt;br /&gt;
--  @param              {frame|table} frame Scribunto frame object or&lt;br /&gt;
--                      Lua arguments table, passed from an invocation&lt;br /&gt;
--                      or Lua logic such as `frame:getParent()`.&lt;br /&gt;
--                      If this parameter does not have an `args` field&lt;br /&gt;
--                      and a `getParent` method, `frame` is assumed&lt;br /&gt;
--                      to be a Lua arguments table, such as the&lt;br /&gt;
--                      arguments from a named arguments call.&lt;br /&gt;
--  @param[opt]         {table} options Extraction/processing options.&lt;br /&gt;
--  @param[opt]         {boolean} options.trim&lt;br /&gt;
--                      Whether to trim the blank arguments present in&lt;br /&gt;
--                      the arguments table. Accepts `false` only.&lt;br /&gt;
--                      Default: `true`.&lt;br /&gt;
--  @param[opt]         {boolean} options.removeBlanks&lt;br /&gt;
--                      Whether to remove blank arguments from the&lt;br /&gt;
--                      arguments table. Does not shift sequential&lt;br /&gt;
--                      arguments removed by the processing stage.&lt;br /&gt;
--                      Accepts `false` only. Default: `true`.&lt;br /&gt;
--  @param[opt]         {function} options.valueFunc&lt;br /&gt;
--                      Custom value tidying function for use if the&lt;br /&gt;
--                      `trim` and `removeBlanks` options don&#039;t cover&lt;br /&gt;
--                      the developer&#039;s argument processing use case.&lt;br /&gt;
--  @param[opt]         {boolean} options.frameOnly&lt;br /&gt;
--                      Only read arguments from child frame (the&lt;br /&gt;
--                      `frame` parameter - usually invocation frame).&lt;br /&gt;
--  @param[opt]         {boolean} options.parentOnly&lt;br /&gt;
--                      Only read arguments from `frame` parent (the&lt;br /&gt;
--                      `frame` parameter - usually template frame).&lt;br /&gt;
--  @param[opt]         {boolean} options.parentFirst&lt;br /&gt;
--                      Argument lookup in the `frame` parent first,&lt;br /&gt;
--                      prioritised over the invocation frame arguments.&lt;br /&gt;
--  @param[opt]         {table} options.wrappers&lt;br /&gt;
--                      Individual value or array of values, listing&lt;br /&gt;
--                      wrapper title name(s) or article ID(s) to permit&lt;br /&gt;
--                      parent argument lookup from.&lt;br /&gt;
--  @param[opt]         {string|number} options.wrapper&lt;br /&gt;
--                      Alias of `options.wrappers` - contains title&lt;br /&gt;
--                      name or article ID to permit parent argument&lt;br /&gt;
--                      lookup from.&lt;br /&gt;
--  @param[opt]         {boolean} options.readOnly&lt;br /&gt;
--                      Whether to restrict write permissions to the&lt;br /&gt;
--                      arguments table. When set to a truthy value,&lt;br /&gt;
--                      an error will be thrown on any write attempt.&lt;br /&gt;
--  @param[opt]         {boolean} options.noOverwrite&lt;br /&gt;
--                      Whether to restrict overwrite attempts on&lt;br /&gt;
--                      existing argument keys in the arguments table.&lt;br /&gt;
--                      When set to a truthy value, an error will be&lt;br /&gt;
--                      thrown on any write attempt that would result&lt;br /&gt;
--                      in an existing argument being overwritten.&lt;br /&gt;
--  @param[opt]         {table} options.translate&lt;br /&gt;
--                      Map of parameter name aliases to their canonical&lt;br /&gt;
--                      argument parameter names.&lt;br /&gt;
--  @param[opt]         {table} options.backtranslate&lt;br /&gt;
--                      Map of canonical parameter names to their&lt;br /&gt;
--                      argument parameter aliases.&lt;br /&gt;
--                      Supersedes `options.translate` if both options&lt;br /&gt;
--                      are in use.&lt;br /&gt;
--  @error[opt,317]     &#039;bad value assigned to option &amp;quot;valueFunc&amp;quot;&lt;br /&gt;
--                      (function expected, got $type)&#039;&lt;br /&gt;
--  @error[opt,407]     &#039;could not write to argument table key &amp;quot;$key&amp;quot;;&lt;br /&gt;
--                      the table is read-only&#039;&lt;br /&gt;
--  @error[opt,409]     &#039;could not write to argument table key &amp;quot;$key&amp;quot;;&lt;br /&gt;
--                      overwriting existing arguments is not permitted&#039;&lt;br /&gt;
--  @return             {table} Arguments extracted from invocation.&lt;br /&gt;
--                      The argument data is embedded as a metatable in&lt;br /&gt;
--                      the exported table and cannot be accessed with&lt;br /&gt;
--                      the `#` operator or @{table} library methods.&lt;br /&gt;
--                      However, the exported table can be written to if&lt;br /&gt;
--                      the `options.readOnly` flag parameter is not&lt;br /&gt;
--                      truthy.&lt;br /&gt;
--  @usage&lt;br /&gt;
--      &lt;br /&gt;
--      local getArgs = require(&#039;Module:Arguments&#039;).getArgs&lt;br /&gt;
--      function p.main(frame)&lt;br /&gt;
--          local args = getArgs(frame, {&lt;br /&gt;
--              wrapper = &#039;Template:&amp;lt;TEMPLATE&amp;gt;&#039;&lt;br /&gt;
--          })&lt;br /&gt;
--          -- Use the args table here.&lt;br /&gt;
--          -- A common paradigm is `return p._main(args)`.&lt;br /&gt;
--          -- This allows other Lua modules to access the&lt;br /&gt;
--          -- main logic in a performant manner without a&lt;br /&gt;
--          -- frame object.&lt;br /&gt;
--      end&lt;br /&gt;
--      &lt;br /&gt;
--  @note               Reference tags in the form of `&amp;lt;ref&amp;gt;` will&lt;br /&gt;
--                      generate phantom references when calling the&lt;br /&gt;
--                      @{pairs} iterator on the arguments table,&lt;br /&gt;
--                      **IF** the `&amp;lt;ref&amp;gt;` tag does not appear in the&lt;br /&gt;
--                      dependent module&#039;s wikitext output.&lt;br /&gt;
function arguments.getArgs(frame, options)&lt;br /&gt;
    checkType(&#039;getArgs&#039;, 1, frame, &#039;table&#039;, true)&lt;br /&gt;
    checkType(&#039;getArgs&#039;, 2, options, &#039;table&#039;, true)&lt;br /&gt;
    frame = frame or {}&lt;br /&gt;
    options = options or {}&lt;br /&gt;
&lt;br /&gt;
    -- Set up argument translation.&lt;br /&gt;
    options.translate = options.translate or {}&lt;br /&gt;
    if getmetatable(options.translate) == nil then&lt;br /&gt;
        setmetatable(options.translate, translate_mt)&lt;br /&gt;
    end&lt;br /&gt;
    if options.backtranslate == nil then&lt;br /&gt;
        options.backtranslate = {}&lt;br /&gt;
        for k,v in pairs(options.translate) do&lt;br /&gt;
            options.backtranslate[v] = k&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    if options.backtranslate and getmetatable(options.backtranslate) == nil then&lt;br /&gt;
        setmetatable(options.backtranslate, {&lt;br /&gt;
            __index = function(t, k)&lt;br /&gt;
                if options.translate[k] ~= k then&lt;br /&gt;
                    return nil&lt;br /&gt;
                else&lt;br /&gt;
                    return k&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        })&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Get the argument tables. If we were passed a valid frame object,&lt;br /&gt;
    -- get the frame arguments (fargs) and the parent frame arguments&lt;br /&gt;
    -- (pargs), depending on the options set and on the parent frame&#039;s&lt;br /&gt;
    -- availability. If we weren&#039;t passed a valid frame object, we are&lt;br /&gt;
    -- being called from another Lua module or from the debug console,&lt;br /&gt;
    -- so assume that we were passed a table of args directly, and&lt;br /&gt;
    -- assign it to a new variable (luaArgs).&lt;br /&gt;
    local fargs, pargs, luaArgs&lt;br /&gt;
    options.wrappers = options.wrappers or options.wrapper&lt;br /&gt;
    if&lt;br /&gt;
        type(frame.args) == &#039;table&#039; and&lt;br /&gt;
        type(frame.getParent) == &#039;function&#039;&lt;br /&gt;
    then&lt;br /&gt;
        -- The wrappers option makes Module:Arguments look up&lt;br /&gt;
        -- arguments in either the frame argument table or the&lt;br /&gt;
        -- parent argument table, but not both. This means that&lt;br /&gt;
        -- users can use either the #invoke syntax or a wrapper&lt;br /&gt;
        -- template without the loss of performance associated&lt;br /&gt;
        -- with looking arguments up in both the frame and the&lt;br /&gt;
        -- parent frame.&lt;br /&gt;
        -- The arguments will be fetched from the parent frame if&lt;br /&gt;
        -- the parent frame&#039;s title is present in options.wrapper;&lt;br /&gt;
        -- otherwise it will look up arguments in the frame object&lt;br /&gt;
        -- passed to getArgs.&lt;br /&gt;
        if options.wrappers then&lt;br /&gt;
            local parent = frame:getParent()&lt;br /&gt;
            if not parent then&lt;br /&gt;
                fargs = frame.args&lt;br /&gt;
            else&lt;br /&gt;
                local title = parent:getTitle():gsub(&#039;/sandbox$&#039;, &#039;&#039;)&lt;br /&gt;
                local found = false&lt;br /&gt;
                if matchesTitle(options.wrappers, title) then&lt;br /&gt;
                    found = true&lt;br /&gt;
                elseif type(options.wrappers) == &#039;table&#039; then&lt;br /&gt;
                    for _,v in pairs(options.wrappers) do&lt;br /&gt;
                        if matchesTitle(v, title) then&lt;br /&gt;
                            found = true&lt;br /&gt;
                            break&lt;br /&gt;
                        end&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
&lt;br /&gt;
                -- We test for false specifically here so that nil (the&lt;br /&gt;
                -- default) acts like true.&lt;br /&gt;
                if found or options.frameOnly == false then&lt;br /&gt;
                    pargs = parent.args&lt;br /&gt;
                end&lt;br /&gt;
                if not found or options.parentOnly == false then&lt;br /&gt;
                    fargs = frame.args&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        -- When options.wrapper isn&#039;t set, check the other options.&lt;br /&gt;
        else&lt;br /&gt;
            if not options.parentOnly then&lt;br /&gt;
                fargs = frame.args&lt;br /&gt;
            end&lt;br /&gt;
            if not options.frameOnly then&lt;br /&gt;
                local parent = frame:getParent()&lt;br /&gt;
                pargs = parent and parent.args or nil&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        if options.parentFirst then&lt;br /&gt;
            fargs, pargs = pargs, fargs&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        luaArgs = frame&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Set the order of precedence of the argument tables. If the variables are&lt;br /&gt;
    -- nil, nothing will be added to the table, which is how we avoid clashes&lt;br /&gt;
    -- between the frame/parent args and the Lua args.&lt;br /&gt;
    local argTables = {fargs}&lt;br /&gt;
    argTables[#argTables + 1] = pargs&lt;br /&gt;
    argTables[#argTables + 1] = luaArgs&lt;br /&gt;
&lt;br /&gt;
    -- Generate the tidyVal function. If it has been specified by the user, we&lt;br /&gt;
    -- use that; if not, we choose one of four functions depending on the&lt;br /&gt;
    -- options chosen. This is so that we don&#039;t have to call the options table&lt;br /&gt;
    -- every time the function is called.&lt;br /&gt;
    local tidyVal = options.valueFunc&lt;br /&gt;
    if tidyVal then&lt;br /&gt;
        if type(tidyVal) ~= &#039;function&#039; then&lt;br /&gt;
            error(i18n:msg(&#039;error-value-func&#039;, type(tidyVal)), 2)&lt;br /&gt;
        end&lt;br /&gt;
    elseif options.trim ~= false then&lt;br /&gt;
        if options.removeBlanks ~= false then&lt;br /&gt;
            tidyVal = tidyValDefault&lt;br /&gt;
        else&lt;br /&gt;
            tidyVal = tidyValTrimOnly&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        if options.removeBlanks ~= false then&lt;br /&gt;
            tidyVal = tidyValRemoveBlanksOnly&lt;br /&gt;
        else&lt;br /&gt;
            tidyVal = tidyValNoChange&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Set up the args, metaArgs and nilArgs tables. args will be the one&lt;br /&gt;
    -- accessed from functions, and metaArgs will hold the actual arguments. Nil&lt;br /&gt;
    -- arguments are memoized in nilArgs, and the metatable connects all of them&lt;br /&gt;
    -- together.&lt;br /&gt;
    local args, metaArgs, nilArgs, metatable = {}, {}, {}, {}&lt;br /&gt;
    setmetatable(args, metatable)&lt;br /&gt;
&lt;br /&gt;
    -- Accepts multiple tables as input and merges their keys and values&lt;br /&gt;
    -- into one table. If a value is already present it is not overwritten;&lt;br /&gt;
    -- tables listed earlier have precedence. We are also memoizing nil&lt;br /&gt;
    -- values, which can be overwritten if they are &#039;s&#039; (soft).&lt;br /&gt;
    local function mergeArgs(tables)&lt;br /&gt;
        for _, t in ipairs(tables) do&lt;br /&gt;
            for key, val in pairs(t) do&lt;br /&gt;
                if metaArgs[key] == nil and nilArgs[key] ~= &#039;h&#039; then&lt;br /&gt;
                    local tidiedVal = tidyVal(key, val)&lt;br /&gt;
                    if tidiedVal == nil then&lt;br /&gt;
                        nilArgs[key] = &#039;s&#039;&lt;br /&gt;
                    else&lt;br /&gt;
                        metaArgs[key] = tidiedVal&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Define metatable behaviour. Arguments are memoized in the metaArgs table,&lt;br /&gt;
    -- and are only fetched from the argument tables once. Fetching arguments&lt;br /&gt;
    -- from the argument tables is the most resource-intensive step in this&lt;br /&gt;
    -- module, so we try and avoid it where possible. For this reason, nil&lt;br /&gt;
    -- arguments are also memoized, in the nilArgs table. Also, we keep a record&lt;br /&gt;
    -- in the metatable of when pairs and ipairs have been called, so we do not&lt;br /&gt;
    -- run pairs and ipairs on the argument tables more than once. We also do&lt;br /&gt;
    -- not run ipairs on fargs and pargs if pairs has already been run, as all&lt;br /&gt;
    -- the arguments will already have been copied over.&lt;br /&gt;
&lt;br /&gt;
    -- Fetches an argument when the args table is indexed. First we check&lt;br /&gt;
    -- to see if the value is memoized, and if not we try and fetch it from&lt;br /&gt;
    -- the argument tables. When we check memoization, we need to check&lt;br /&gt;
    -- metaArgs before nilArgs, as both can be non-nil at the same time.&lt;br /&gt;
    -- If the argument is not present in metaArgs, we also check whether&lt;br /&gt;
    -- pairs has been run yet. If pairs has already been run, we return nil.&lt;br /&gt;
    -- This is because all the arguments will have already been copied into&lt;br /&gt;
    -- metaArgs by the mergeArgs function, meaning that any other arguments&lt;br /&gt;
    -- must be nil.&lt;br /&gt;
    metatable.__index = function (t, key)&lt;br /&gt;
        if type(key) == &#039;string&#039; then&lt;br /&gt;
            key = options.translate[key]&lt;br /&gt;
        end&lt;br /&gt;
        local val = metaArgs[key]&lt;br /&gt;
        if val ~= nil then&lt;br /&gt;
            return val&lt;br /&gt;
        elseif metatable.donePairs or nilArgs[key] then&lt;br /&gt;
            return nil&lt;br /&gt;
        end&lt;br /&gt;
        for _, argTable in ipairs(argTables) do&lt;br /&gt;
            local argTableVal = tidyVal(key, argTable[key])&lt;br /&gt;
            if argTableVal ~= nil then&lt;br /&gt;
                metaArgs[key] = argTableVal&lt;br /&gt;
                return argTableVal&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        nilArgs[key] = &#039;h&#039;&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    metatable.__newindex = function (t, key, val)&lt;br /&gt;
        -- This function is called when a module tries to add a new&lt;br /&gt;
        -- value to the args table, or tries to change an existing&lt;br /&gt;
        -- value.&lt;br /&gt;
        if type(key) == &#039;string&#039; then&lt;br /&gt;
            key = options.translate[key]&lt;br /&gt;
        end&lt;br /&gt;
        if options.readOnly then&lt;br /&gt;
            error(i18n:msg(&#039;error-write-permission&#039;, tostring(key)), 2)&lt;br /&gt;
        elseif options.noOverwrite and args[key] ~= nil then&lt;br /&gt;
            error(i18n:msg(&#039;error-overwrite-permission&#039;, tostring(key)), 2)&lt;br /&gt;
        elseif val == nil then&lt;br /&gt;
            -- If the argument is to be overwritten with nil, we need to erase&lt;br /&gt;
            -- the value in metaArgs, so that __index, __pairs and __ipairs do&lt;br /&gt;
            -- not use a previous existing value, if present; and we also need&lt;br /&gt;
            -- to memoize the nil in nilArgs, so that the value isn&#039;t looked&lt;br /&gt;
            -- up in the argument tables if it is accessed again.&lt;br /&gt;
            metaArgs[key] = nil&lt;br /&gt;
            nilArgs[key] = &#039;h&#039;&lt;br /&gt;
        else&lt;br /&gt;
            metaArgs[key] = val&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local function translatenext(invariant)&lt;br /&gt;
        local k, v = next(invariant.t, invariant.k)&lt;br /&gt;
        invariant.k = k&lt;br /&gt;
        if k == nil then&lt;br /&gt;
            return nil&lt;br /&gt;
        elseif type(k) ~= &#039;string&#039; or not options.backtranslate then&lt;br /&gt;
            return k, v&lt;br /&gt;
        else&lt;br /&gt;
            local backtranslate = options.backtranslate[k]&lt;br /&gt;
            if backtranslate == nil then&lt;br /&gt;
                -- Skip this one. This is a tail call, so this&lt;br /&gt;
                -- won&#039;t cause stack overflow.&lt;br /&gt;
                return translatenext(invariant)&lt;br /&gt;
            else&lt;br /&gt;
                return backtranslate, v&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- This metamethod is called when pairs is run on the args table.&lt;br /&gt;
    metatable.__pairs = function ()&lt;br /&gt;
        if not metatable.donePairs then&lt;br /&gt;
            mergeArgs(argTables)&lt;br /&gt;
            metatable.donePairs = true&lt;br /&gt;
        end&lt;br /&gt;
        return translatenext, { t = metaArgs }&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- This custom `ipairs`-style iterator uses our __index metamethod.&lt;br /&gt;
    local function inext(t, i)&lt;br /&gt;
        local v = t[i + 1]&lt;br /&gt;
        if v ~= nil then&lt;br /&gt;
            return i + 1, v&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- This metamethod is called when ipairs is run on the args table.&lt;br /&gt;
    metatable.__ipairs = function (t)&lt;br /&gt;
        return inext, t, 0&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return args&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return arguments&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=M%C3%B3dulo:Arguments&amp;diff=7510</id>
		<title>Módulo:Arguments</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=M%C3%B3dulo:Arguments&amp;diff=7510"/>
		<updated>2023-11-01T22:57:48Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--- Arguments invocation argument extractor for Scribunto modules.&lt;br /&gt;
--  It is intended for use by other Lua modules, and should not be&lt;br /&gt;
--  called from an invocation (`#invoke`) directly.&lt;br /&gt;
--  &lt;br /&gt;
--  This module supports the following features:&lt;br /&gt;
--   * Trimming and blank argument removal.&lt;br /&gt;
--   * Argument inheritance between child and parent frames.&lt;br /&gt;
--   * Argument extraction for external modules and console input.&lt;br /&gt;
--   * Options to customise argument extraction behaviour.&lt;br /&gt;
--  &lt;br /&gt;
--  @script             arguments&lt;br /&gt;
--  @release            stable&lt;br /&gt;
--  @note               The `args` table from the @{arguments.getArgs}&lt;br /&gt;
--                      function is a metatable for performance reasons.&lt;br /&gt;
--                      Thus, the table will not permit Lua table methods&lt;br /&gt;
--                      such as `#args`, @{next|next(args)}, and @{table}&lt;br /&gt;
--                      library functions.&lt;br /&gt;
--  @note               This module will eventually be adapted as a&lt;br /&gt;
--                      library in [[mw:gerrit:q/158323|MediaWiki&lt;br /&gt;
--                      core]], called as `require(&#039;getArgs&#039;)`. The core&lt;br /&gt;
--                      library will remove `options.parentOnly`.&lt;br /&gt;
--  @author             [[wikipedia:User:Mr. Stradivarius|Mr. Stradivarius]] (Wikipedia)&lt;br /&gt;
--  @author             [[wikipedia:User:Anomie|Anomie]] (Wikipedia)&lt;br /&gt;
--  @author             [[wikipedia:User:Jackmcbarn|Jackmcbarn]] (Wikipedia)&lt;br /&gt;
--  @author             [[User:Dessamator|Dessamator]]&lt;br /&gt;
--  @author             [[User:DarthKitty|DarthKitty]]&lt;br /&gt;
--  @attribution        [[wikipedia:Module:Arguments|Module:Arguments]] (Wikipedia)&lt;br /&gt;
--  @see                [[wikipedia:Module:Arguments|Original module on Wikipedia]]&lt;br /&gt;
--  @see                [[Module:Arguments/testcases|Test cases for this module]]&lt;br /&gt;
local arguments = {}&lt;br /&gt;
&lt;br /&gt;
--  Module dependencies.&lt;br /&gt;
local i18n = require(&#039;Dev:I18n&#039;).loadMessages(&#039;Arguments&#039;)&lt;br /&gt;
local util = require(&#039;libraryUtil&#039;)&lt;br /&gt;
local checkType = util.checkType&lt;br /&gt;
&lt;br /&gt;
-- Four different value tidying functions.&lt;br /&gt;
-- This way, we don&#039;t have to check the options every time we call them.&lt;br /&gt;
&lt;br /&gt;
--- Default value tidying function.&lt;br /&gt;
--  Trims parameter values automatically if they are defined strings.&lt;br /&gt;
--  Treats blank strings as `nil`.&lt;br /&gt;
--  @function           tidyValDefault&lt;br /&gt;
--  @param              {string|number} key MediaWiki parameter key.&lt;br /&gt;
--  @param              {string|nil} val MediaWiki parameter value,&lt;br /&gt;
--                      or nil if `key` is an empty string or nil.&lt;br /&gt;
--  @local&lt;br /&gt;
local function tidyValDefault(key, val)&lt;br /&gt;
    if type(val) == &#039;string&#039; then&lt;br /&gt;
        val = val:match(&#039;^%s*(.-)%s*$&#039;)&lt;br /&gt;
        if val == &#039;&#039; then&lt;br /&gt;
            return nil&lt;br /&gt;
        else&lt;br /&gt;
            return val&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        return val&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Value tidying function that trims values.&lt;br /&gt;
--  Trims parameter values automatically if they are defined strings.&lt;br /&gt;
--  @function           tidyValTrimOnly&lt;br /&gt;
--  @param              {string|number} key MediaWiki parameter key.&lt;br /&gt;
--  @param              {string|nil} val MediaWiki parameter value.&lt;br /&gt;
--  @local&lt;br /&gt;
local function tidyValTrimOnly(key, val)&lt;br /&gt;
    if type(val) == &#039;string&#039; then&lt;br /&gt;
        return val:match(&#039;^%s*(.-)%s*$&#039;)&lt;br /&gt;
    else&lt;br /&gt;
        return val&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Value tidying function that removes blanks.&lt;br /&gt;
--  Removes blank values from the arguments table.&lt;br /&gt;
--  @function           tidyValRemoveBlanksOnly&lt;br /&gt;
--  @param              {string|number} key MediaWiki parameter key.&lt;br /&gt;
--  @param              {string|nil} val MediaWiki parameter value,&lt;br /&gt;
--                      or nil if `key` is whitespace or nil.&lt;br /&gt;
--  @local&lt;br /&gt;
local function tidyValRemoveBlanksOnly(key, val)&lt;br /&gt;
    if type(val) == &#039;string&#039; then&lt;br /&gt;
        if val:find(&#039;%S&#039;) then&lt;br /&gt;
            return val&lt;br /&gt;
        else&lt;br /&gt;
            return nil&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        return val&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Value tidying function that returns original value.&lt;br /&gt;
--  Effectively a NOOP function that does no value processing.&lt;br /&gt;
--  @function           tidyValNoChange&lt;br /&gt;
--  @param              {string|number} key MediaWiki parameter key.&lt;br /&gt;
--  @param              {string|nil} val MediaWiki parameter value.&lt;br /&gt;
--  @local&lt;br /&gt;
local function tidyValNoChange(key, val)&lt;br /&gt;
    return val&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Parent template title match checker.&lt;br /&gt;
--  @function           matchesTitle&lt;br /&gt;
--  @param              {string|number|nil} given Local prefixed page&lt;br /&gt;
--                      title, or MediaWiki article ID (`wgArticleId`).&lt;br /&gt;
--  @param              {string} title Title of parent template.&lt;br /&gt;
--  @return             {boolean} Whether the `given` ID/title matches&lt;br /&gt;
--                      the title of the parent template.&lt;br /&gt;
local function matchesTitle(given, title)&lt;br /&gt;
    local tp = type( given )&lt;br /&gt;
    return (tp == &#039;string&#039; or tp == &#039;number&#039;) and mw.title.new( given ).prefixedText == title&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Default argument translation metatable.&lt;br /&gt;
--  @table              translate_mt&lt;br /&gt;
--  @local&lt;br /&gt;
local translate_mt = { __index = function(t, k) return k end }&lt;br /&gt;
&lt;br /&gt;
--- Main argument extraction utility.&lt;br /&gt;
--  Arguments are memoized once fetched for optimal performance,&lt;br /&gt;
--  as with the `frame.args` metatable in Scribunto core.&lt;br /&gt;
--  &lt;br /&gt;
--  The default argument lookup behaviour uses the child frame arguments&lt;br /&gt;
--  first, then the parent frame arguments. There are numerous frame&lt;br /&gt;
--  options to change this behaviour.&lt;br /&gt;
--  &lt;br /&gt;
--  The default value tidying behaviour trims parameter values if they&lt;br /&gt;
--  are defined strings and treats blank strings as `nil`. This can be&lt;br /&gt;
--  customised in the `getArgs` options.&lt;br /&gt;
--  &lt;br /&gt;
--  @param              {frame|table} frame Scribunto frame object or&lt;br /&gt;
--                      Lua arguments table, passed from an invocation&lt;br /&gt;
--                      or Lua logic such as `frame:getParent()`.&lt;br /&gt;
--                      If this parameter does not have an `args` field&lt;br /&gt;
--                      and a `getParent` method, `frame` is assumed&lt;br /&gt;
--                      to be a Lua arguments table, such as the&lt;br /&gt;
--                      arguments from a named arguments call.&lt;br /&gt;
--  @param[opt]         {table} options Extraction/processing options.&lt;br /&gt;
--  @param[opt]         {boolean} options.trim&lt;br /&gt;
--                      Whether to trim the blank arguments present in&lt;br /&gt;
--                      the arguments table. Accepts `false` only.&lt;br /&gt;
--                      Default: `true`.&lt;br /&gt;
--  @param[opt]         {boolean} options.removeBlanks&lt;br /&gt;
--                      Whether to remove blank arguments from the&lt;br /&gt;
--                      arguments table. Does not shift sequential&lt;br /&gt;
--                      arguments removed by the processing stage.&lt;br /&gt;
--                      Accepts `false` only. Default: `true`.&lt;br /&gt;
--  @param[opt]         {function} options.valueFunc&lt;br /&gt;
--                      Custom value tidying function for use if the&lt;br /&gt;
--                      `trim` and `removeBlanks` options don&#039;t cover&lt;br /&gt;
--                      the developer&#039;s argument processing use case.&lt;br /&gt;
--  @param[opt]         {boolean} options.frameOnly&lt;br /&gt;
--                      Only read arguments from child frame (the&lt;br /&gt;
--                      `frame` parameter - usually invocation frame).&lt;br /&gt;
--  @param[opt]         {boolean} options.parentOnly&lt;br /&gt;
--                      Only read arguments from `frame` parent (the&lt;br /&gt;
--                      `frame` parameter - usually template frame).&lt;br /&gt;
--  @param[opt]         {boolean} options.parentFirst&lt;br /&gt;
--                      Argument lookup in the `frame` parent first,&lt;br /&gt;
--                      prioritised over the invocation frame arguments.&lt;br /&gt;
--  @param[opt]         {table} options.wrappers&lt;br /&gt;
--                      Individual value or array of values, listing&lt;br /&gt;
--                      wrapper title name(s) or article ID(s) to permit&lt;br /&gt;
--                      parent argument lookup from.&lt;br /&gt;
--  @param[opt]         {string|number} options.wrapper&lt;br /&gt;
--                      Alias of `options.wrappers` - contains title&lt;br /&gt;
--                      name or article ID to permit parent argument&lt;br /&gt;
--                      lookup from.&lt;br /&gt;
--  @param[opt]         {boolean} options.readOnly&lt;br /&gt;
--                      Whether to restrict write permissions to the&lt;br /&gt;
--                      arguments table. When set to a truthy value,&lt;br /&gt;
--                      an error will be thrown on any write attempt.&lt;br /&gt;
--  @param[opt]         {boolean} options.noOverwrite&lt;br /&gt;
--                      Whether to restrict overwrite attempts on&lt;br /&gt;
--                      existing argument keys in the arguments table.&lt;br /&gt;
--                      When set to a truthy value, an error will be&lt;br /&gt;
--                      thrown on any write attempt that would result&lt;br /&gt;
--                      in an existing argument being overwritten.&lt;br /&gt;
--  @param[opt]         {table} options.translate&lt;br /&gt;
--                      Map of parameter name aliases to their canonical&lt;br /&gt;
--                      argument parameter names.&lt;br /&gt;
--  @param[opt]         {table} options.backtranslate&lt;br /&gt;
--                      Map of canonical parameter names to their&lt;br /&gt;
--                      argument parameter aliases.&lt;br /&gt;
--                      Supersedes `options.translate` if both options&lt;br /&gt;
--                      are in use.&lt;br /&gt;
--  @error[opt,317]     &#039;bad value assigned to option &amp;quot;valueFunc&amp;quot;&lt;br /&gt;
--                      (function expected, got $type)&#039;&lt;br /&gt;
--  @error[opt,407]     &#039;could not write to argument table key &amp;quot;$key&amp;quot;;&lt;br /&gt;
--                      the table is read-only&#039;&lt;br /&gt;
--  @error[opt,409]     &#039;could not write to argument table key &amp;quot;$key&amp;quot;;&lt;br /&gt;
--                      overwriting existing arguments is not permitted&#039;&lt;br /&gt;
--  @return             {table} Arguments extracted from invocation.&lt;br /&gt;
--                      The argument data is embedded as a metatable in&lt;br /&gt;
--                      the exported table and cannot be accessed with&lt;br /&gt;
--                      the `#` operator or @{table} library methods.&lt;br /&gt;
--                      However, the exported table can be written to if&lt;br /&gt;
--                      the `options.readOnly` flag parameter is not&lt;br /&gt;
--                      truthy.&lt;br /&gt;
--  @usage&lt;br /&gt;
--      &lt;br /&gt;
--      local getArgs = require(&#039;Module:Arguments&#039;).getArgs&lt;br /&gt;
--      function p.main(frame)&lt;br /&gt;
--          local args = getArgs(frame, {&lt;br /&gt;
--              wrapper = &#039;Template:&amp;lt;TEMPLATE&amp;gt;&#039;&lt;br /&gt;
--          })&lt;br /&gt;
--          -- Use the args table here.&lt;br /&gt;
--          -- A common paradigm is `return p._main(args)`.&lt;br /&gt;
--          -- This allows other Lua modules to access the&lt;br /&gt;
--          -- main logic in a performant manner without a&lt;br /&gt;
--          -- frame object.&lt;br /&gt;
--      end&lt;br /&gt;
--      &lt;br /&gt;
--  @note               Reference tags in the form of `&amp;lt;ref&amp;gt;` will&lt;br /&gt;
--                      generate phantom references when calling the&lt;br /&gt;
--                      @{pairs} iterator on the arguments table,&lt;br /&gt;
--                      **IF** the `&amp;lt;ref&amp;gt;` tag does not appear in the&lt;br /&gt;
--                      dependent module&#039;s wikitext output.&lt;br /&gt;
function arguments.getArgs(frame, options)&lt;br /&gt;
    checkType(&#039;getArgs&#039;, 1, frame, &#039;table&#039;, true)&lt;br /&gt;
    checkType(&#039;getArgs&#039;, 2, options, &#039;table&#039;, true)&lt;br /&gt;
    frame = frame or {}&lt;br /&gt;
    options = options or {}&lt;br /&gt;
&lt;br /&gt;
    -- Set up argument translation.&lt;br /&gt;
    options.translate = options.translate or {}&lt;br /&gt;
    if getmetatable(options.translate) == nil then&lt;br /&gt;
        setmetatable(options.translate, translate_mt)&lt;br /&gt;
    end&lt;br /&gt;
    if options.backtranslate == nil then&lt;br /&gt;
        options.backtranslate = {}&lt;br /&gt;
        for k,v in pairs(options.translate) do&lt;br /&gt;
            options.backtranslate[v] = k&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    if options.backtranslate and getmetatable(options.backtranslate) == nil then&lt;br /&gt;
        setmetatable(options.backtranslate, {&lt;br /&gt;
            __index = function(t, k)&lt;br /&gt;
                if options.translate[k] ~= k then&lt;br /&gt;
                    return nil&lt;br /&gt;
                else&lt;br /&gt;
                    return k&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        })&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Get the argument tables. If we were passed a valid frame object,&lt;br /&gt;
    -- get the frame arguments (fargs) and the parent frame arguments&lt;br /&gt;
    -- (pargs), depending on the options set and on the parent frame&#039;s&lt;br /&gt;
    -- availability. If we weren&#039;t passed a valid frame object, we are&lt;br /&gt;
    -- being called from another Lua module or from the debug console,&lt;br /&gt;
    -- so assume that we were passed a table of args directly, and&lt;br /&gt;
    -- assign it to a new variable (luaArgs).&lt;br /&gt;
    local fargs, pargs, luaArgs&lt;br /&gt;
    options.wrappers = options.wrappers or options.wrapper&lt;br /&gt;
    if&lt;br /&gt;
        type(frame.args) == &#039;table&#039; and&lt;br /&gt;
        type(frame.getParent) == &#039;function&#039;&lt;br /&gt;
    then&lt;br /&gt;
        -- The wrappers option makes Module:Arguments look up&lt;br /&gt;
        -- arguments in either the frame argument table or the&lt;br /&gt;
        -- parent argument table, but not both. This means that&lt;br /&gt;
        -- users can use either the #invoke syntax or a wrapper&lt;br /&gt;
        -- template without the loss of performance associated&lt;br /&gt;
        -- with looking arguments up in both the frame and the&lt;br /&gt;
        -- parent frame.&lt;br /&gt;
        -- The arguments will be fetched from the parent frame if&lt;br /&gt;
        -- the parent frame&#039;s title is present in options.wrapper;&lt;br /&gt;
        -- otherwise it will look up arguments in the frame object&lt;br /&gt;
        -- passed to getArgs.&lt;br /&gt;
        if options.wrappers then&lt;br /&gt;
            local parent = frame:getParent()&lt;br /&gt;
            if not parent then&lt;br /&gt;
                fargs = frame.args&lt;br /&gt;
            else&lt;br /&gt;
                local title = parent:getTitle():gsub(&#039;/sandbox$&#039;, &#039;&#039;)&lt;br /&gt;
                local found = false&lt;br /&gt;
                if matchesTitle(options.wrappers, title) then&lt;br /&gt;
                    found = true&lt;br /&gt;
                elseif type(options.wrappers) == &#039;table&#039; then&lt;br /&gt;
                    for _,v in pairs(options.wrappers) do&lt;br /&gt;
                        if matchesTitle(v, title) then&lt;br /&gt;
                            found = true&lt;br /&gt;
                            break&lt;br /&gt;
                        end&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
&lt;br /&gt;
                -- We test for false specifically here so that nil (the&lt;br /&gt;
                -- default) acts like true.&lt;br /&gt;
                if found or options.frameOnly == false then&lt;br /&gt;
                    pargs = parent.args&lt;br /&gt;
                end&lt;br /&gt;
                if not found or options.parentOnly == false then&lt;br /&gt;
                    fargs = frame.args&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        -- When options.wrapper isn&#039;t set, check the other options.&lt;br /&gt;
        else&lt;br /&gt;
            if not options.parentOnly then&lt;br /&gt;
                fargs = frame.args&lt;br /&gt;
            end&lt;br /&gt;
            if not options.frameOnly then&lt;br /&gt;
                local parent = frame:getParent()&lt;br /&gt;
                pargs = parent and parent.args or nil&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        if options.parentFirst then&lt;br /&gt;
            fargs, pargs = pargs, fargs&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        luaArgs = frame&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Set the order of precedence of the argument tables. If the variables are&lt;br /&gt;
    -- nil, nothing will be added to the table, which is how we avoid clashes&lt;br /&gt;
    -- between the frame/parent args and the Lua args.&lt;br /&gt;
    local argTables = {fargs}&lt;br /&gt;
    argTables[#argTables + 1] = pargs&lt;br /&gt;
    argTables[#argTables + 1] = luaArgs&lt;br /&gt;
&lt;br /&gt;
    -- Generate the tidyVal function. If it has been specified by the user, we&lt;br /&gt;
    -- use that; if not, we choose one of four functions depending on the&lt;br /&gt;
    -- options chosen. This is so that we don&#039;t have to call the options table&lt;br /&gt;
    -- every time the function is called.&lt;br /&gt;
    local tidyVal = options.valueFunc&lt;br /&gt;
    if tidyVal then&lt;br /&gt;
        if type(tidyVal) ~= &#039;function&#039; then&lt;br /&gt;
            error(i18n:msg(&#039;error-value-func&#039;, type(tidyVal)), 2)&lt;br /&gt;
        end&lt;br /&gt;
    elseif options.trim ~= false then&lt;br /&gt;
        if options.removeBlanks ~= false then&lt;br /&gt;
            tidyVal = tidyValDefault&lt;br /&gt;
        else&lt;br /&gt;
            tidyVal = tidyValTrimOnly&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        if options.removeBlanks ~= false then&lt;br /&gt;
            tidyVal = tidyValRemoveBlanksOnly&lt;br /&gt;
        else&lt;br /&gt;
            tidyVal = tidyValNoChange&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Set up the args, metaArgs and nilArgs tables. args will be the one&lt;br /&gt;
    -- accessed from functions, and metaArgs will hold the actual arguments. Nil&lt;br /&gt;
    -- arguments are memoized in nilArgs, and the metatable connects all of them&lt;br /&gt;
    -- together.&lt;br /&gt;
    local args, metaArgs, nilArgs, metatable = {}, {}, {}, {}&lt;br /&gt;
    setmetatable(args, metatable)&lt;br /&gt;
&lt;br /&gt;
    -- Accepts multiple tables as input and merges their keys and values&lt;br /&gt;
    -- into one table. If a value is already present it is not overwritten;&lt;br /&gt;
    -- tables listed earlier have precedence. We are also memoizing nil&lt;br /&gt;
    -- values, which can be overwritten if they are &#039;s&#039; (soft).&lt;br /&gt;
    local function mergeArgs(tables)&lt;br /&gt;
        for _, t in ipairs(tables) do&lt;br /&gt;
            for key, val in pairs(t) do&lt;br /&gt;
                if metaArgs[key] == nil and nilArgs[key] ~= &#039;h&#039; then&lt;br /&gt;
                    local tidiedVal = tidyVal(key, val)&lt;br /&gt;
                    if tidiedVal == nil then&lt;br /&gt;
                        nilArgs[key] = &#039;s&#039;&lt;br /&gt;
                    else&lt;br /&gt;
                        metaArgs[key] = tidiedVal&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Define metatable behaviour. Arguments are memoized in the metaArgs table,&lt;br /&gt;
    -- and are only fetched from the argument tables once. Fetching arguments&lt;br /&gt;
    -- from the argument tables is the most resource-intensive step in this&lt;br /&gt;
    -- module, so we try and avoid it where possible. For this reason, nil&lt;br /&gt;
    -- arguments are also memoized, in the nilArgs table. Also, we keep a record&lt;br /&gt;
    -- in the metatable of when pairs and ipairs have been called, so we do not&lt;br /&gt;
    -- run pairs and ipairs on the argument tables more than once. We also do&lt;br /&gt;
    -- not run ipairs on fargs and pargs if pairs has already been run, as all&lt;br /&gt;
    -- the arguments will already have been copied over.&lt;br /&gt;
&lt;br /&gt;
    -- Fetches an argument when the args table is indexed. First we check&lt;br /&gt;
    -- to see if the value is memoized, and if not we try and fetch it from&lt;br /&gt;
    -- the argument tables. When we check memoization, we need to check&lt;br /&gt;
    -- metaArgs before nilArgs, as both can be non-nil at the same time.&lt;br /&gt;
    -- If the argument is not present in metaArgs, we also check whether&lt;br /&gt;
    -- pairs has been run yet. If pairs has already been run, we return nil.&lt;br /&gt;
    -- This is because all the arguments will have already been copied into&lt;br /&gt;
    -- metaArgs by the mergeArgs function, meaning that any other arguments&lt;br /&gt;
    -- must be nil.&lt;br /&gt;
    metatable.__index = function (t, key)&lt;br /&gt;
        if type(key) == &#039;string&#039; then&lt;br /&gt;
            key = options.translate[key]&lt;br /&gt;
        end&lt;br /&gt;
        local val = metaArgs[key]&lt;br /&gt;
        if val ~= nil then&lt;br /&gt;
            return val&lt;br /&gt;
        elseif metatable.donePairs or nilArgs[key] then&lt;br /&gt;
            return nil&lt;br /&gt;
        end&lt;br /&gt;
        for _, argTable in ipairs(argTables) do&lt;br /&gt;
            local argTableVal = tidyVal(key, argTable[key])&lt;br /&gt;
            if argTableVal ~= nil then&lt;br /&gt;
                metaArgs[key] = argTableVal&lt;br /&gt;
                return argTableVal&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        nilArgs[key] = &#039;h&#039;&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    metatable.__newindex = function (t, key, val)&lt;br /&gt;
        -- This function is called when a module tries to add a new&lt;br /&gt;
        -- value to the args table, or tries to change an existing&lt;br /&gt;
        -- value.&lt;br /&gt;
        if type(key) == &#039;string&#039; then&lt;br /&gt;
            key = options.translate[key]&lt;br /&gt;
        end&lt;br /&gt;
        if options.readOnly then&lt;br /&gt;
            error(i18n:msg(&#039;error-write-permission&#039;, tostring(key)), 2)&lt;br /&gt;
        elseif options.noOverwrite and args[key] ~= nil then&lt;br /&gt;
            error(i18n:msg(&#039;error-overwrite-permission&#039;, tostring(key)), 2)&lt;br /&gt;
        elseif val == nil then&lt;br /&gt;
            -- If the argument is to be overwritten with nil, we need to erase&lt;br /&gt;
            -- the value in metaArgs, so that __index, __pairs and __ipairs do&lt;br /&gt;
            -- not use a previous existing value, if present; and we also need&lt;br /&gt;
            -- to memoize the nil in nilArgs, so that the value isn&#039;t looked&lt;br /&gt;
            -- up in the argument tables if it is accessed again.&lt;br /&gt;
            metaArgs[key] = nil&lt;br /&gt;
            nilArgs[key] = &#039;h&#039;&lt;br /&gt;
        else&lt;br /&gt;
            metaArgs[key] = val&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local function translatenext(invariant)&lt;br /&gt;
        local k, v = next(invariant.t, invariant.k)&lt;br /&gt;
        invariant.k = k&lt;br /&gt;
        if k == nil then&lt;br /&gt;
            return nil&lt;br /&gt;
        elseif type(k) ~= &#039;string&#039; or not options.backtranslate then&lt;br /&gt;
            return k, v&lt;br /&gt;
        else&lt;br /&gt;
            local backtranslate = options.backtranslate[k]&lt;br /&gt;
            if backtranslate == nil then&lt;br /&gt;
                -- Skip this one. This is a tail call, so this&lt;br /&gt;
                -- won&#039;t cause stack overflow.&lt;br /&gt;
                return translatenext(invariant)&lt;br /&gt;
            else&lt;br /&gt;
                return backtranslate, v&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- This metamethod is called when pairs is run on the args table.&lt;br /&gt;
    metatable.__pairs = function ()&lt;br /&gt;
        if not metatable.donePairs then&lt;br /&gt;
            mergeArgs(argTables)&lt;br /&gt;
            metatable.donePairs = true&lt;br /&gt;
        end&lt;br /&gt;
        return translatenext, { t = metaArgs }&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- This custom `ipairs`-style iterator uses our __index metamethod.&lt;br /&gt;
    local function inext(t, i)&lt;br /&gt;
        local v = t[i + 1]&lt;br /&gt;
        if v ~= nil then&lt;br /&gt;
            return i + 1, v&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- This metamethod is called when ipairs is run on the args table.&lt;br /&gt;
    metatable.__ipairs = function (t)&lt;br /&gt;
        return inext, t, 0&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return args&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return arguments&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=M%C3%B3dulo:Arguments&amp;diff=7509</id>
		<title>Módulo:Arguments</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=M%C3%B3dulo:Arguments&amp;diff=7509"/>
		<updated>2023-11-01T22:55:18Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module provides easy processing of arguments passed to Scribunto from&lt;br /&gt;
-- #invoke. It is intended for use by other Lua modules, and should not be&lt;br /&gt;
-- called from #invoke directly.&lt;br /&gt;
local arguments = {}&lt;br /&gt;
&lt;br /&gt;
local libraryUtil = require(&#039;libraryUtil&#039;)&lt;br /&gt;
local checkType = libraryUtil.checkType&lt;br /&gt;
local i18n = require(&#039;Module:I18n&#039;).loadMessages(&#039;Arguments&#039;)&lt;br /&gt;
&lt;br /&gt;
--- Default argument translation metatable.&lt;br /&gt;
--  @table              translate_mt&lt;br /&gt;
--  @local&lt;br /&gt;
local translate_mt = { __index = function(t, k) return k end }&lt;br /&gt;
&lt;br /&gt;
--- Main argument extraction utility.&lt;br /&gt;
--  Arguments are memoized once fetched for optimal performance,&lt;br /&gt;
--  as with the `frame.args` metatable in Scribunto core.&lt;br /&gt;
--  &lt;br /&gt;
--  The default argument lookup behaviour uses the child frame arguments&lt;br /&gt;
--  first, then the parent frame arguments. There are numerous frame&lt;br /&gt;
--  options to change this behaviour.&lt;br /&gt;
--  &lt;br /&gt;
--  The default value tidying behaviour trims parameter values if they&lt;br /&gt;
--  are defined strings and treats blank strings as `nil`. This can be&lt;br /&gt;
--  customised in the `getArgs` options.&lt;br /&gt;
--  &lt;br /&gt;
--  @param              {frame|table} frame Scribunto frame object or&lt;br /&gt;
--                      Lua arguments table, passed from an invocation&lt;br /&gt;
--                      or Lua logic such as `frame:getParent()`.&lt;br /&gt;
--                      If this parameter does not have an `args` field&lt;br /&gt;
--                      and a `getParent` method, `frame` is assumed&lt;br /&gt;
--                      to be a Lua arguments table, such as the&lt;br /&gt;
--                      arguments from a named arguments call.&lt;br /&gt;
--  @param[opt]         {table} options Extraction/processing options.&lt;br /&gt;
--  @param[opt]         {boolean} options.trim&lt;br /&gt;
--                      Whether to trim the blank arguments present in&lt;br /&gt;
--                      the arguments table. Accepts `false` only.&lt;br /&gt;
--                      Default: `true`.&lt;br /&gt;
--  @param[opt]         {boolean} options.removeBlanks&lt;br /&gt;
--                      Whether to remove blank arguments from the&lt;br /&gt;
--                      arguments table. Does not shift sequential&lt;br /&gt;
--                      arguments removed by the processing stage.&lt;br /&gt;
--                      Accepts `false` only. Default: `true`.&lt;br /&gt;
--  @param[opt]         {function} options.valueFunc&lt;br /&gt;
--                      Custom value tidying function for use if the&lt;br /&gt;
--                      `trim` and `removeBlanks` options don&#039;t cover&lt;br /&gt;
--                      the developer&#039;s argument processing use case.&lt;br /&gt;
--  @param[opt]         {boolean} options.frameOnly&lt;br /&gt;
--                      Only read arguments from child frame (the&lt;br /&gt;
--                      `frame` parameter - usually invocation frame).&lt;br /&gt;
--  @param[opt]         {boolean} options.parentOnly&lt;br /&gt;
--                      Only read arguments from `frame` parent (the&lt;br /&gt;
--                      `frame` parameter - usually template frame).&lt;br /&gt;
--  @param[opt]         {boolean} options.parentFirst&lt;br /&gt;
--                      Argument lookup in the `frame` parent first,&lt;br /&gt;
--                      prioritised over the invocation frame arguments.&lt;br /&gt;
--  @param[opt]         {table} options.wrappers&lt;br /&gt;
--                      Individual value or array of values, listing&lt;br /&gt;
--                      wrapper title name(s) or article ID(s) to permit&lt;br /&gt;
--                      parent argument lookup from.&lt;br /&gt;
--  @param[opt]         {string|number} options.wrapper&lt;br /&gt;
--                      Alias of `options.wrappers` - contains title&lt;br /&gt;
--                      name or article ID to permit parent argument&lt;br /&gt;
--                      lookup from.&lt;br /&gt;
--  @param[opt]         {boolean} options.readOnly&lt;br /&gt;
--                      Whether to restrict write permissions to the&lt;br /&gt;
--                      arguments table. When set to a truthy value,&lt;br /&gt;
--                      an error will be thrown on any write attempt.&lt;br /&gt;
--  @param[opt]         {boolean} options.noOverwrite&lt;br /&gt;
--                      Whether to restrict overwrite attempts on&lt;br /&gt;
--                      existing argument keys in the arguments table.&lt;br /&gt;
--                      When set to a truthy value, an error will be&lt;br /&gt;
--                      thrown on any write attempt that would result&lt;br /&gt;
--                      in an existing argument being overwritten.&lt;br /&gt;
--  @param[opt]         {table} options.translate&lt;br /&gt;
--                      Map of parameter name aliases to their canonical&lt;br /&gt;
--                      argument parameter names.&lt;br /&gt;
--  @param[opt]         {table} options.backtranslate&lt;br /&gt;
--                      Map of canonical parameter names to their&lt;br /&gt;
--                      argument parameter aliases.&lt;br /&gt;
--                      Supersedes `options.translate` if both options&lt;br /&gt;
--                      are in use.&lt;br /&gt;
--  @error[opt,317]     &#039;bad value assigned to option &amp;quot;valueFunc&amp;quot;&lt;br /&gt;
--                      (function expected, got $type)&#039;&lt;br /&gt;
--  @error[opt,407]     &#039;could not write to argument table key &amp;quot;$key&amp;quot;;&lt;br /&gt;
--                      the table is read-only&#039;&lt;br /&gt;
--  @error[opt,409]     &#039;could not write to argument table key &amp;quot;$key&amp;quot;;&lt;br /&gt;
--                      overwriting existing arguments is not permitted&#039;&lt;br /&gt;
--  @return             {table} Arguments extracted from invocation.&lt;br /&gt;
--                      The argument data is embedded as a metatable in&lt;br /&gt;
--                      the exported table and cannot be accessed with&lt;br /&gt;
--                      the `#` operator or @{table} library methods.&lt;br /&gt;
--                      However, the exported table can be written to if&lt;br /&gt;
--                      the `options.readOnly` flag parameter is not&lt;br /&gt;
--                      truthy.&lt;br /&gt;
--  @usage&lt;br /&gt;
--      &lt;br /&gt;
--      local getArgs = require(&#039;Module:Arguments&#039;).getArgs&lt;br /&gt;
--      function p.main(frame)&lt;br /&gt;
--          local args = getArgs(frame, {&lt;br /&gt;
--              wrapper = &#039;Template:&amp;lt;TEMPLATE&amp;gt;&#039;&lt;br /&gt;
--          })&lt;br /&gt;
--          -- Use the args table here.&lt;br /&gt;
--          -- A common paradigm is `return p._main(args)`.&lt;br /&gt;
--          -- This allows other Lua modules to access the&lt;br /&gt;
--          -- main logic in a performant manner without a&lt;br /&gt;
--          -- frame object.&lt;br /&gt;
--      end&lt;br /&gt;
--      &lt;br /&gt;
--  @note               Reference tags in the form of `&amp;lt;ref&amp;gt;` will&lt;br /&gt;
--                      generate phantom references when calling the&lt;br /&gt;
--                      @{pairs} iterator on the arguments table,&lt;br /&gt;
--                      **IF** the `&amp;lt;ref&amp;gt;` tag does not appear in the&lt;br /&gt;
--                      dependent module&#039;s wikitext output.&lt;br /&gt;
function arguments.getArgs(frame, options)&lt;br /&gt;
    checkType(&#039;getArgs&#039;, 1, frame, &#039;table&#039;, true)&lt;br /&gt;
    checkType(&#039;getArgs&#039;, 2, options, &#039;table&#039;, true)&lt;br /&gt;
    frame = frame or {}&lt;br /&gt;
    options = options or {}&lt;br /&gt;
&lt;br /&gt;
    -- Set up argument translation.&lt;br /&gt;
    options.translate = options.translate or {}&lt;br /&gt;
    if getmetatable(options.translate) == nil then&lt;br /&gt;
        setmetatable(options.translate, translate_mt)&lt;br /&gt;
    end&lt;br /&gt;
    if options.backtranslate == nil then&lt;br /&gt;
        options.backtranslate = {}&lt;br /&gt;
        for k,v in pairs(options.translate) do&lt;br /&gt;
            options.backtranslate[v] = k&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    if options.backtranslate and getmetatable(options.backtranslate) == nil then&lt;br /&gt;
        setmetatable(options.backtranslate, {&lt;br /&gt;
            __index = function(t, k)&lt;br /&gt;
                if options.translate[k] ~= k then&lt;br /&gt;
                    return nil&lt;br /&gt;
                else&lt;br /&gt;
                    return k&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        })&lt;br /&gt;
    end&lt;br /&gt;
    -- Get the argument tables. If we were passed a valid frame object,&lt;br /&gt;
    -- get the frame arguments (fargs) and the parent frame arguments&lt;br /&gt;
    -- (pargs), depending on the options set and on the parent frame&#039;s&lt;br /&gt;
    -- availability. If we weren&#039;t passed a valid frame object, we are&lt;br /&gt;
    -- being called from another Lua module or from the debug console,&lt;br /&gt;
    -- so assume that we were passed a table of args directly, and&lt;br /&gt;
    -- assign it to a new variable (luaArgs).&lt;br /&gt;
    local fargs, pargs, luaArgs&lt;br /&gt;
    options.wrappers = options.wrappers or options.wrapper&lt;br /&gt;
    if&lt;br /&gt;
        type(frame.args) == &#039;table&#039; and&lt;br /&gt;
        type(frame.getParent) == &#039;function&#039;&lt;br /&gt;
    then&lt;br /&gt;
        -- The wrappers option makes Module:Arguments look up&lt;br /&gt;
        -- arguments in either the frame argument table or the&lt;br /&gt;
        -- parent argument table, but not both. This means that&lt;br /&gt;
        -- users can use either the #invoke syntax or a wrapper&lt;br /&gt;
        -- template without the loss of performance associated&lt;br /&gt;
        -- with looking arguments up in both the frame and the&lt;br /&gt;
        -- parent frame.&lt;br /&gt;
        -- The arguments will be fetched from the parent frame if&lt;br /&gt;
        -- the parent frame&#039;s title is present in options.wrapper;&lt;br /&gt;
        -- otherwise it will look up arguments in the frame object&lt;br /&gt;
        -- passed to getArgs.&lt;br /&gt;
        if options.wrappers then&lt;br /&gt;
            local parent = frame:getParent()&lt;br /&gt;
            if not parent then&lt;br /&gt;
                fargs = frame.args&lt;br /&gt;
            else&lt;br /&gt;
                local title = parent:getTitle():gsub(&#039;/sandbox$&#039;, &#039;&#039;)&lt;br /&gt;
                local found = false&lt;br /&gt;
                if matchesTitle(options.wrappers, title) then&lt;br /&gt;
                    found = true&lt;br /&gt;
                elseif type(options.wrappers) == &#039;table&#039; then&lt;br /&gt;
                    for _,v in pairs(options.wrappers) do&lt;br /&gt;
                        if matchesTitle(v, title) then&lt;br /&gt;
                            found = true&lt;br /&gt;
                            break&lt;br /&gt;
                        end&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
&lt;br /&gt;
                -- We test for false specifically here so that nil (the&lt;br /&gt;
                -- default) acts like true.&lt;br /&gt;
                if found or options.frameOnly == false then&lt;br /&gt;
                    pargs = parent.args&lt;br /&gt;
                end&lt;br /&gt;
                if not found or options.parentOnly == false then&lt;br /&gt;
                    fargs = frame.args&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        -- When options.wrapper isn&#039;t set, check the other options.&lt;br /&gt;
        else&lt;br /&gt;
            if not options.parentOnly then&lt;br /&gt;
                fargs = frame.args&lt;br /&gt;
            end&lt;br /&gt;
            if not options.frameOnly then&lt;br /&gt;
                local parent = frame:getParent()&lt;br /&gt;
                pargs = parent and parent.args or nil&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        if options.parentFirst then&lt;br /&gt;
            fargs, pargs = pargs, fargs&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        luaArgs = frame&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Set the order of precedence of the argument tables. If the variables are&lt;br /&gt;
    -- nil, nothing will be added to the table, which is how we avoid clashes&lt;br /&gt;
    -- between the frame/parent args and the Lua args.&lt;br /&gt;
    local argTables = {fargs}&lt;br /&gt;
    argTables[#argTables + 1] = pargs&lt;br /&gt;
    argTables[#argTables + 1] = luaArgs&lt;br /&gt;
&lt;br /&gt;
    -- Generate the tidyVal function. If it has been specified by the user, we&lt;br /&gt;
    -- use that; if not, we choose one of four functions depending on the&lt;br /&gt;
    -- options chosen. This is so that we don&#039;t have to call the options table&lt;br /&gt;
    -- every time the function is called.&lt;br /&gt;
    local tidyVal = options.valueFunc&lt;br /&gt;
    if tidyVal then&lt;br /&gt;
        if type(tidyVal) ~= &#039;function&#039; then&lt;br /&gt;
            error(i18n:msg(&#039;error-value-func&#039;, type(tidyVal)), 2)&lt;br /&gt;
        end&lt;br /&gt;
    elseif options.trim ~= false then&lt;br /&gt;
        if options.removeBlanks ~= false then&lt;br /&gt;
            tidyVal = tidyValDefault&lt;br /&gt;
        else&lt;br /&gt;
            tidyVal = tidyValTrimOnly&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        if options.removeBlanks ~= false then&lt;br /&gt;
            tidyVal = tidyValRemoveBlanksOnly&lt;br /&gt;
        else&lt;br /&gt;
            tidyVal = tidyValNoChange&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Set up the args, metaArgs and nilArgs tables. args will be the one&lt;br /&gt;
    -- accessed from functions, and metaArgs will hold the actual arguments. Nil&lt;br /&gt;
    -- arguments are memoized in nilArgs, and the metatable connects all of them&lt;br /&gt;
    -- together.&lt;br /&gt;
    local args, metaArgs, nilArgs, metatable = {}, {}, {}, {}&lt;br /&gt;
    setmetatable(args, metatable)&lt;br /&gt;
&lt;br /&gt;
    -- Accepts multiple tables as input and merges their keys and values&lt;br /&gt;
    -- into one table. If a value is already present it is not overwritten;&lt;br /&gt;
    -- tables listed earlier have precedence. We are also memoizing nil&lt;br /&gt;
    -- values, which can be overwritten if they are &#039;s&#039; (soft).&lt;br /&gt;
    local function mergeArgs(tables)&lt;br /&gt;
        for _, t in ipairs(tables) do&lt;br /&gt;
            for key, val in pairs(t) do&lt;br /&gt;
                if metaArgs[key] == nil and nilArgs[key] ~= &#039;h&#039; then&lt;br /&gt;
                    local tidiedVal = tidyVal(key, val)&lt;br /&gt;
                    if tidiedVal == nil then&lt;br /&gt;
                        nilArgs[key] = &#039;s&#039;&lt;br /&gt;
                    else&lt;br /&gt;
                        metaArgs[key] = tidiedVal&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Define metatable behaviour. Arguments are memoized in the metaArgs table,&lt;br /&gt;
    -- and are only fetched from the argument tables once. Fetching arguments&lt;br /&gt;
    -- from the argument tables is the most resource-intensive step in this&lt;br /&gt;
    -- module, so we try and avoid it where possible. For this reason, nil&lt;br /&gt;
    -- arguments are also memoized, in the nilArgs table. Also, we keep a record&lt;br /&gt;
    -- in the metatable of when pairs and ipairs have been called, so we do not&lt;br /&gt;
    -- run pairs and ipairs on the argument tables more than once. We also do&lt;br /&gt;
    -- not run ipairs on fargs and pargs if pairs has already been run, as all&lt;br /&gt;
    -- the arguments will already have been copied over.&lt;br /&gt;
&lt;br /&gt;
    -- Fetches an argument when the args table is indexed. First we check&lt;br /&gt;
    -- to see if the value is memoized, and if not we try and fetch it from&lt;br /&gt;
    -- the argument tables. When we check memoization, we need to check&lt;br /&gt;
    -- metaArgs before nilArgs, as both can be non-nil at the same time.&lt;br /&gt;
    -- If the argument is not present in metaArgs, we also check whether&lt;br /&gt;
    -- pairs has been run yet. If pairs has already been run, we return nil.&lt;br /&gt;
    -- This is because all the arguments will have already been copied into&lt;br /&gt;
    -- metaArgs by the mergeArgs function, meaning that any other arguments&lt;br /&gt;
    -- must be nil.&lt;br /&gt;
    metatable.__index = function (t, key)&lt;br /&gt;
        if type(key) == &#039;string&#039; then&lt;br /&gt;
            key = options.translate[key]&lt;br /&gt;
        end&lt;br /&gt;
        local val = metaArgs[key]&lt;br /&gt;
        if val ~= nil then&lt;br /&gt;
            return val&lt;br /&gt;
        elseif metatable.donePairs or nilArgs[key] then&lt;br /&gt;
            return nil&lt;br /&gt;
        end&lt;br /&gt;
        for _, argTable in ipairs(argTables) do&lt;br /&gt;
            local argTableVal = tidyVal(key, argTable[key])&lt;br /&gt;
            if argTableVal ~= nil then&lt;br /&gt;
                metaArgs[key] = argTableVal&lt;br /&gt;
                return argTableVal&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        nilArgs[key] = &#039;h&#039;&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    metatable.__newindex = function (t, key, val)&lt;br /&gt;
        -- This function is called when a module tries to add a new&lt;br /&gt;
        -- value to the args table, or tries to change an existing&lt;br /&gt;
        -- value.&lt;br /&gt;
        if type(key) == &#039;string&#039; then&lt;br /&gt;
            key = options.translate[key]&lt;br /&gt;
        end&lt;br /&gt;
        if options.readOnly then&lt;br /&gt;
            error(i18n:msg(&#039;error-write-permission&#039;, tostring(key)), 2)&lt;br /&gt;
        elseif options.noOverwrite and args[key] ~= nil then&lt;br /&gt;
            error(i18n:msg(&#039;error-overwrite-permission&#039;, tostring(key)), 2)&lt;br /&gt;
        elseif val == nil then&lt;br /&gt;
            -- If the argument is to be overwritten with nil, we need to erase&lt;br /&gt;
            -- the value in metaArgs, so that __index, __pairs and __ipairs do&lt;br /&gt;
            -- not use a previous existing value, if present; and we also need&lt;br /&gt;
            -- to memoize the nil in nilArgs, so that the value isn&#039;t looked&lt;br /&gt;
            -- up in the argument tables if it is accessed again.&lt;br /&gt;
            metaArgs[key] = nil&lt;br /&gt;
            nilArgs[key] = &#039;h&#039;&lt;br /&gt;
        else&lt;br /&gt;
            metaArgs[key] = val&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local function translatenext(invariant)&lt;br /&gt;
        local k, v = next(invariant.t, invariant.k)&lt;br /&gt;
        invariant.k = k&lt;br /&gt;
        if k == nil then&lt;br /&gt;
            return nil&lt;br /&gt;
        elseif type(k) ~= &#039;string&#039; or not options.backtranslate then&lt;br /&gt;
            return k, v&lt;br /&gt;
        else&lt;br /&gt;
            local backtranslate = options.backtranslate[k]&lt;br /&gt;
            if backtranslate == nil then&lt;br /&gt;
                -- Skip this one. This is a tail call, so this&lt;br /&gt;
                -- won&#039;t cause stack overflow.&lt;br /&gt;
                return translatenext(invariant)&lt;br /&gt;
            else&lt;br /&gt;
                return backtranslate, v&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- This metamethod is called when pairs is run on the args table.&lt;br /&gt;
    metatable.__pairs = function ()&lt;br /&gt;
        if not metatable.donePairs then&lt;br /&gt;
            mergeArgs(argTables)&lt;br /&gt;
            metatable.donePairs = true&lt;br /&gt;
        end&lt;br /&gt;
        return translatenext, { t = metaArgs }&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- This custom `ipairs`-style iterator uses our __index metamethod.&lt;br /&gt;
    local function inext(t, i)&lt;br /&gt;
        local v = t[i + 1]&lt;br /&gt;
        if v ~= nil then&lt;br /&gt;
            return i + 1, v&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- This metamethod is called when ipairs is run on the args table.&lt;br /&gt;
    metatable.__ipairs = function (t)&lt;br /&gt;
        return inext, t, 0&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return args&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Generate four different tidyVal functions, so that we don&#039;t have to check the&lt;br /&gt;
-- options every time we call it.&lt;br /&gt;
&lt;br /&gt;
local function tidyValDefault(key, val)&lt;br /&gt;
	if type(val) == &#039;string&#039; then&lt;br /&gt;
		val = val:match(&#039;^%s*(.-)%s*$&#039;)&lt;br /&gt;
		if val == &#039;&#039; then&lt;br /&gt;
			return nil&lt;br /&gt;
		else&lt;br /&gt;
			return val&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return val&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function tidyValTrimOnly(key, val)&lt;br /&gt;
	if type(val) == &#039;string&#039; then&lt;br /&gt;
		return val:match(&#039;^%s*(.-)%s*$&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		return val&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function tidyValRemoveBlanksOnly(key, val)&lt;br /&gt;
	if type(val) == &#039;string&#039; then&lt;br /&gt;
		if val:find(&#039;%S&#039;) then&lt;br /&gt;
			return val&lt;br /&gt;
		else&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return val&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function tidyValNoChange(key, val)&lt;br /&gt;
	return val&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function matchesTitle(given, title)&lt;br /&gt;
	local tp = type( given )&lt;br /&gt;
	return (tp == &#039;string&#039; or tp == &#039;number&#039;) and mw.title.new( given ).prefixedText == title&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local translate_mt = { __index = function(t, k) return k end }&lt;br /&gt;
&lt;br /&gt;
function arguments.getArgs(frame, options)&lt;br /&gt;
	checkType(&#039;getArgs&#039;, 1, frame, &#039;table&#039;, true)&lt;br /&gt;
	checkType(&#039;getArgs&#039;, 2, options, &#039;table&#039;, true)&lt;br /&gt;
	frame = frame or {}&lt;br /&gt;
	options = options or {}&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Set up argument translation.&lt;br /&gt;
	--]]&lt;br /&gt;
	options.translate = options.translate or {}&lt;br /&gt;
	if getmetatable(options.translate) == nil then&lt;br /&gt;
		setmetatable(options.translate, translate_mt)&lt;br /&gt;
	end&lt;br /&gt;
	if options.backtranslate == nil then&lt;br /&gt;
		options.backtranslate = {}&lt;br /&gt;
		for k,v in pairs(options.translate) do&lt;br /&gt;
			options.backtranslate[v] = k&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if options.backtranslate and getmetatable(options.backtranslate) == nil then&lt;br /&gt;
		setmetatable(options.backtranslate, {&lt;br /&gt;
			__index = function(t, k)&lt;br /&gt;
				if options.translate[k] ~= k then&lt;br /&gt;
					return nil&lt;br /&gt;
				else&lt;br /&gt;
					return k&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Get the argument tables. If we were passed a valid frame object, get the&lt;br /&gt;
	-- frame arguments (fargs) and the parent frame arguments (pargs), depending&lt;br /&gt;
	-- on the options set and on the parent frame&#039;s availability. If we weren&#039;t&lt;br /&gt;
	-- passed a valid frame object, we are being called from another Lua module&lt;br /&gt;
	-- or from the debug console, so assume that we were passed a table of args&lt;br /&gt;
	-- directly, and assign it to a new variable (luaArgs).&lt;br /&gt;
	--]]&lt;br /&gt;
	local fargs, pargs, luaArgs&lt;br /&gt;
	if type(frame.args) == &#039;table&#039; and type(frame.getParent) == &#039;function&#039; then&lt;br /&gt;
		if options.wrappers then&lt;br /&gt;
			--[[&lt;br /&gt;
			-- The wrappers option makes Module:Arguments look up arguments in&lt;br /&gt;
			-- either the frame argument table or the parent argument table, but&lt;br /&gt;
			-- not both. This means that users can use either the #invoke syntax&lt;br /&gt;
			-- or a wrapper template without the loss of performance associated&lt;br /&gt;
			-- with looking arguments up in both the frame and the parent frame.&lt;br /&gt;
			-- Module:Arguments will look up arguments in the parent frame&lt;br /&gt;
			-- if it finds the parent frame&#039;s title in options.wrapper;&lt;br /&gt;
			-- otherwise it will look up arguments in the frame object passed&lt;br /&gt;
			-- to getArgs.&lt;br /&gt;
			--]]&lt;br /&gt;
			local parent = frame:getParent()&lt;br /&gt;
			if not parent then&lt;br /&gt;
				fargs = frame.args&lt;br /&gt;
			else&lt;br /&gt;
				local title = parent:getTitle():gsub(&#039;/sandbox$&#039;, &#039;&#039;)&lt;br /&gt;
				local found = false&lt;br /&gt;
				if matchesTitle(options.wrappers, title) then&lt;br /&gt;
					found = true&lt;br /&gt;
				elseif type(options.wrappers) == &#039;table&#039; then&lt;br /&gt;
					for _,v in pairs(options.wrappers) do&lt;br /&gt;
						if matchesTitle(v, title) then&lt;br /&gt;
							found = true&lt;br /&gt;
							break&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				-- We test for false specifically here so that nil (the default) acts like true.&lt;br /&gt;
				if found or options.frameOnly == false then&lt;br /&gt;
					pargs = parent.args&lt;br /&gt;
				end&lt;br /&gt;
				if not found or options.parentOnly == false then&lt;br /&gt;
					fargs = frame.args&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			-- options.wrapper isn&#039;t set, so check the other options.&lt;br /&gt;
			if not options.parentOnly then&lt;br /&gt;
				fargs = frame.args&lt;br /&gt;
			end&lt;br /&gt;
			if not options.frameOnly then&lt;br /&gt;
				local parent = frame:getParent()&lt;br /&gt;
				pargs = parent and parent.args or nil&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if options.parentFirst then&lt;br /&gt;
			fargs, pargs = pargs, fargs&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		luaArgs = frame&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set the order of precedence of the argument tables. If the variables are&lt;br /&gt;
	-- nil, nothing will be added to the table, which is how we avoid clashes&lt;br /&gt;
	-- between the frame/parent args and the Lua args.&lt;br /&gt;
	local argTables = {fargs}&lt;br /&gt;
	argTables[#argTables + 1] = pargs&lt;br /&gt;
	argTables[#argTables + 1] = luaArgs&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Generate the tidyVal function. If it has been specified by the user, we&lt;br /&gt;
	-- use that; if not, we choose one of four functions depending on the&lt;br /&gt;
	-- options chosen. This is so that we don&#039;t have to call the options table&lt;br /&gt;
	-- every time the function is called.&lt;br /&gt;
	--]]&lt;br /&gt;
	local tidyVal = options.valueFunc&lt;br /&gt;
	if tidyVal then&lt;br /&gt;
		if type(tidyVal) ~= &#039;function&#039; then&lt;br /&gt;
			error(&lt;br /&gt;
				&amp;quot;bad value assigned to option &#039;valueFunc&#039;&amp;quot;&lt;br /&gt;
					.. &#039;(function expected, got &#039;&lt;br /&gt;
					.. type(tidyVal)&lt;br /&gt;
					.. &#039;)&#039;,&lt;br /&gt;
				2&lt;br /&gt;
			)&lt;br /&gt;
		end&lt;br /&gt;
	elseif options.trim ~= false then&lt;br /&gt;
		if options.removeBlanks ~= false then&lt;br /&gt;
			tidyVal = tidyValDefault&lt;br /&gt;
		else&lt;br /&gt;
			tidyVal = tidyValTrimOnly&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		if options.removeBlanks ~= false then&lt;br /&gt;
			tidyVal = tidyValRemoveBlanksOnly&lt;br /&gt;
		else&lt;br /&gt;
			tidyVal = tidyValNoChange&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Set up the args, metaArgs and nilArgs tables. args will be the one&lt;br /&gt;
	-- accessed from functions, and metaArgs will hold the actual arguments. Nil&lt;br /&gt;
	-- arguments are memoized in nilArgs, and the metatable connects all of them&lt;br /&gt;
	-- together.&lt;br /&gt;
	--]]&lt;br /&gt;
	local args, metaArgs, nilArgs, metatable = {}, {}, {}, {}&lt;br /&gt;
	setmetatable(args, metatable)&lt;br /&gt;
&lt;br /&gt;
	local function mergeArgs(tables)&lt;br /&gt;
		--[[&lt;br /&gt;
		-- Accepts multiple tables as input and merges their keys and values&lt;br /&gt;
		-- into one table. If a value is already present it is not overwritten;&lt;br /&gt;
		-- tables listed earlier have precedence. We are also memoizing nil&lt;br /&gt;
		-- values, which can be overwritten if they are &#039;s&#039; (soft).&lt;br /&gt;
		--]]&lt;br /&gt;
		for _, t in ipairs(tables) do&lt;br /&gt;
			for key, val in pairs(t) do&lt;br /&gt;
				if metaArgs[key] == nil and nilArgs[key] ~= &#039;h&#039; then&lt;br /&gt;
					local tidiedVal = tidyVal(key, val)&lt;br /&gt;
					if tidiedVal == nil then&lt;br /&gt;
						nilArgs[key] = &#039;s&#039;&lt;br /&gt;
					else&lt;br /&gt;
						metaArgs[key] = tidiedVal&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Define metatable behaviour. Arguments are memoized in the metaArgs table,&lt;br /&gt;
	-- and are only fetched from the argument tables once. Fetching arguments&lt;br /&gt;
	-- from the argument tables is the most resource-intensive step in this&lt;br /&gt;
	-- module, so we try and avoid it where possible. For this reason, nil&lt;br /&gt;
	-- arguments are also memoized, in the nilArgs table. Also, we keep a record&lt;br /&gt;
	-- in the metatable of when pairs and ipairs have been called, so we do not&lt;br /&gt;
	-- run pairs and ipairs on the argument tables more than once. We also do&lt;br /&gt;
	-- not run ipairs on fargs and pargs if pairs has already been run, as all&lt;br /&gt;
	-- the arguments will already have been copied over.&lt;br /&gt;
	--]]&lt;br /&gt;
&lt;br /&gt;
	metatable.__index = function (t, key)&lt;br /&gt;
		--[[&lt;br /&gt;
		-- Fetches an argument when the args table is indexed. First we check&lt;br /&gt;
		-- to see if the value is memoized, and if not we try and fetch it from&lt;br /&gt;
		-- the argument tables. When we check memoization, we need to check&lt;br /&gt;
		-- metaArgs before nilArgs, as both can be non-nil at the same time.&lt;br /&gt;
		-- If the argument is not present in metaArgs, we also check whether&lt;br /&gt;
		-- pairs has been run yet. If pairs has already been run, we return nil.&lt;br /&gt;
		-- This is because all the arguments will have already been copied into&lt;br /&gt;
		-- metaArgs by the mergeArgs function, meaning that any other arguments&lt;br /&gt;
		-- must be nil.&lt;br /&gt;
		--]]&lt;br /&gt;
		if type(key) == &#039;string&#039; then&lt;br /&gt;
			key = options.translate[key]&lt;br /&gt;
		end&lt;br /&gt;
		local val = metaArgs[key]&lt;br /&gt;
		if val ~= nil then&lt;br /&gt;
			return val&lt;br /&gt;
		elseif metatable.donePairs or nilArgs[key] then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
		for _, argTable in ipairs(argTables) do&lt;br /&gt;
			local argTableVal = tidyVal(key, argTable[key])&lt;br /&gt;
			if argTableVal ~= nil then&lt;br /&gt;
				metaArgs[key] = argTableVal&lt;br /&gt;
				return argTableVal&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		nilArgs[key] = &#039;h&#039;&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	metatable.__newindex = function (t, key, val)&lt;br /&gt;
		-- This function is called when a module tries to add a new value to the&lt;br /&gt;
		-- args table, or tries to change an existing value.&lt;br /&gt;
		if type(key) == &#039;string&#039; then&lt;br /&gt;
			key = options.translate[key]&lt;br /&gt;
		end&lt;br /&gt;
		if options.readOnly then&lt;br /&gt;
			error(&lt;br /&gt;
				&#039;could not write to argument table key &amp;quot;&#039;&lt;br /&gt;
					.. tostring(key)&lt;br /&gt;
					.. &#039;&amp;quot;; the table is read-only&#039;,&lt;br /&gt;
				2&lt;br /&gt;
			)&lt;br /&gt;
		elseif options.noOverwrite and args[key] ~= nil then&lt;br /&gt;
			error(&lt;br /&gt;
				&#039;could not write to argument table key &amp;quot;&#039;&lt;br /&gt;
					.. tostring(key)&lt;br /&gt;
					.. &#039;&amp;quot;; overwriting existing arguments is not permitted&#039;,&lt;br /&gt;
				2&lt;br /&gt;
			)&lt;br /&gt;
		elseif val == nil then&lt;br /&gt;
			--[[&lt;br /&gt;
			-- If the argument is to be overwritten with nil, we need to erase&lt;br /&gt;
			-- the value in metaArgs, so that __index, __pairs and __ipairs do&lt;br /&gt;
			-- not use a previous existing value, if present; and we also need&lt;br /&gt;
			-- to memoize the nil in nilArgs, so that the value isn&#039;t looked&lt;br /&gt;
			-- up in the argument tables if it is accessed again.&lt;br /&gt;
			--]]&lt;br /&gt;
			metaArgs[key] = nil&lt;br /&gt;
			nilArgs[key] = &#039;h&#039;&lt;br /&gt;
		else&lt;br /&gt;
			metaArgs[key] = val&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function translatenext(invariant)&lt;br /&gt;
		local k, v = next(invariant.t, invariant.k)&lt;br /&gt;
		invariant.k = k&lt;br /&gt;
		if k == nil then&lt;br /&gt;
			return nil&lt;br /&gt;
		elseif type(k) ~= &#039;string&#039; or not options.backtranslate then&lt;br /&gt;
			return k, v&lt;br /&gt;
		else&lt;br /&gt;
			local backtranslate = options.backtranslate[k]&lt;br /&gt;
			if backtranslate == nil then&lt;br /&gt;
				-- Skip this one. This is a tail call, so this won&#039;t cause stack overflow&lt;br /&gt;
				return translatenext(invariant)&lt;br /&gt;
			else&lt;br /&gt;
				return backtranslate, v&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	metatable.__pairs = function ()&lt;br /&gt;
		-- Called when pairs is run on the args table.&lt;br /&gt;
		if not metatable.donePairs then&lt;br /&gt;
			mergeArgs(argTables)&lt;br /&gt;
			metatable.donePairs = true&lt;br /&gt;
		end&lt;br /&gt;
		return translatenext, { t = metaArgs }&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function inext(t, i)&lt;br /&gt;
		-- This uses our __index metamethod&lt;br /&gt;
		local v = t[i + 1]&lt;br /&gt;
		if v ~= nil then&lt;br /&gt;
			return i + 1, v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	metatable.__ipairs = function (t)&lt;br /&gt;
		-- Called when ipairs is run on the args table.&lt;br /&gt;
		return inext, t, 0&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return args&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return arguments&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=M%C3%B3dulo:Arguments&amp;diff=7508</id>
		<title>Módulo:Arguments</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=M%C3%B3dulo:Arguments&amp;diff=7508"/>
		<updated>2023-11-01T22:50:24Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module provides easy processing of arguments passed to Scribunto from&lt;br /&gt;
-- #invoke. It is intended for use by other Lua modules, and should not be&lt;br /&gt;
-- called from #invoke directly.&lt;br /&gt;
local arguments = {}&lt;br /&gt;
&lt;br /&gt;
local libraryUtil = require(&#039;libraryUtil&#039;)&lt;br /&gt;
local checkType = libraryUtil.checkType&lt;br /&gt;
local i18n = require(&#039;Module:I18n&#039;).loadMessages(&#039;Arguments&#039;)&lt;br /&gt;
&lt;br /&gt;
-- Generate four different tidyVal functions, so that we don&#039;t have to check the&lt;br /&gt;
-- options every time we call it.&lt;br /&gt;
&lt;br /&gt;
local function tidyValDefault(key, val)&lt;br /&gt;
	if type(val) == &#039;string&#039; then&lt;br /&gt;
		val = val:match(&#039;^%s*(.-)%s*$&#039;)&lt;br /&gt;
		if val == &#039;&#039; then&lt;br /&gt;
			return nil&lt;br /&gt;
		else&lt;br /&gt;
			return val&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return val&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function tidyValTrimOnly(key, val)&lt;br /&gt;
	if type(val) == &#039;string&#039; then&lt;br /&gt;
		return val:match(&#039;^%s*(.-)%s*$&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		return val&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function tidyValRemoveBlanksOnly(key, val)&lt;br /&gt;
	if type(val) == &#039;string&#039; then&lt;br /&gt;
		if val:find(&#039;%S&#039;) then&lt;br /&gt;
			return val&lt;br /&gt;
		else&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return val&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function tidyValNoChange(key, val)&lt;br /&gt;
	return val&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function matchesTitle(given, title)&lt;br /&gt;
	local tp = type( given )&lt;br /&gt;
	return (tp == &#039;string&#039; or tp == &#039;number&#039;) and mw.title.new( given ).prefixedText == title&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local translate_mt = { __index = function(t, k) return k end }&lt;br /&gt;
&lt;br /&gt;
function arguments.getArgs(frame, options)&lt;br /&gt;
	checkType(&#039;getArgs&#039;, 1, frame, &#039;table&#039;, true)&lt;br /&gt;
	checkType(&#039;getArgs&#039;, 2, options, &#039;table&#039;, true)&lt;br /&gt;
	frame = frame or {}&lt;br /&gt;
	options = options or {}&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Set up argument translation.&lt;br /&gt;
	--]]&lt;br /&gt;
	options.translate = options.translate or {}&lt;br /&gt;
	if getmetatable(options.translate) == nil then&lt;br /&gt;
		setmetatable(options.translate, translate_mt)&lt;br /&gt;
	end&lt;br /&gt;
	if options.backtranslate == nil then&lt;br /&gt;
		options.backtranslate = {}&lt;br /&gt;
		for k,v in pairs(options.translate) do&lt;br /&gt;
			options.backtranslate[v] = k&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if options.backtranslate and getmetatable(options.backtranslate) == nil then&lt;br /&gt;
		setmetatable(options.backtranslate, {&lt;br /&gt;
			__index = function(t, k)&lt;br /&gt;
				if options.translate[k] ~= k then&lt;br /&gt;
					return nil&lt;br /&gt;
				else&lt;br /&gt;
					return k&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Get the argument tables. If we were passed a valid frame object, get the&lt;br /&gt;
	-- frame arguments (fargs) and the parent frame arguments (pargs), depending&lt;br /&gt;
	-- on the options set and on the parent frame&#039;s availability. If we weren&#039;t&lt;br /&gt;
	-- passed a valid frame object, we are being called from another Lua module&lt;br /&gt;
	-- or from the debug console, so assume that we were passed a table of args&lt;br /&gt;
	-- directly, and assign it to a new variable (luaArgs).&lt;br /&gt;
	--]]&lt;br /&gt;
	local fargs, pargs, luaArgs&lt;br /&gt;
	if type(frame.args) == &#039;table&#039; and type(frame.getParent) == &#039;function&#039; then&lt;br /&gt;
		if options.wrappers then&lt;br /&gt;
			--[[&lt;br /&gt;
			-- The wrappers option makes Module:Arguments look up arguments in&lt;br /&gt;
			-- either the frame argument table or the parent argument table, but&lt;br /&gt;
			-- not both. This means that users can use either the #invoke syntax&lt;br /&gt;
			-- or a wrapper template without the loss of performance associated&lt;br /&gt;
			-- with looking arguments up in both the frame and the parent frame.&lt;br /&gt;
			-- Module:Arguments will look up arguments in the parent frame&lt;br /&gt;
			-- if it finds the parent frame&#039;s title in options.wrapper;&lt;br /&gt;
			-- otherwise it will look up arguments in the frame object passed&lt;br /&gt;
			-- to getArgs.&lt;br /&gt;
			--]]&lt;br /&gt;
			local parent = frame:getParent()&lt;br /&gt;
			if not parent then&lt;br /&gt;
				fargs = frame.args&lt;br /&gt;
			else&lt;br /&gt;
				local title = parent:getTitle():gsub(&#039;/sandbox$&#039;, &#039;&#039;)&lt;br /&gt;
				local found = false&lt;br /&gt;
				if matchesTitle(options.wrappers, title) then&lt;br /&gt;
					found = true&lt;br /&gt;
				elseif type(options.wrappers) == &#039;table&#039; then&lt;br /&gt;
					for _,v in pairs(options.wrappers) do&lt;br /&gt;
						if matchesTitle(v, title) then&lt;br /&gt;
							found = true&lt;br /&gt;
							break&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				-- We test for false specifically here so that nil (the default) acts like true.&lt;br /&gt;
				if found or options.frameOnly == false then&lt;br /&gt;
					pargs = parent.args&lt;br /&gt;
				end&lt;br /&gt;
				if not found or options.parentOnly == false then&lt;br /&gt;
					fargs = frame.args&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			-- options.wrapper isn&#039;t set, so check the other options.&lt;br /&gt;
			if not options.parentOnly then&lt;br /&gt;
				fargs = frame.args&lt;br /&gt;
			end&lt;br /&gt;
			if not options.frameOnly then&lt;br /&gt;
				local parent = frame:getParent()&lt;br /&gt;
				pargs = parent and parent.args or nil&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if options.parentFirst then&lt;br /&gt;
			fargs, pargs = pargs, fargs&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		luaArgs = frame&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set the order of precedence of the argument tables. If the variables are&lt;br /&gt;
	-- nil, nothing will be added to the table, which is how we avoid clashes&lt;br /&gt;
	-- between the frame/parent args and the Lua args.&lt;br /&gt;
	local argTables = {fargs}&lt;br /&gt;
	argTables[#argTables + 1] = pargs&lt;br /&gt;
	argTables[#argTables + 1] = luaArgs&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Generate the tidyVal function. If it has been specified by the user, we&lt;br /&gt;
	-- use that; if not, we choose one of four functions depending on the&lt;br /&gt;
	-- options chosen. This is so that we don&#039;t have to call the options table&lt;br /&gt;
	-- every time the function is called.&lt;br /&gt;
	--]]&lt;br /&gt;
	local tidyVal = options.valueFunc&lt;br /&gt;
	if tidyVal then&lt;br /&gt;
		if type(tidyVal) ~= &#039;function&#039; then&lt;br /&gt;
			error(&lt;br /&gt;
				&amp;quot;bad value assigned to option &#039;valueFunc&#039;&amp;quot;&lt;br /&gt;
					.. &#039;(function expected, got &#039;&lt;br /&gt;
					.. type(tidyVal)&lt;br /&gt;
					.. &#039;)&#039;,&lt;br /&gt;
				2&lt;br /&gt;
			)&lt;br /&gt;
		end&lt;br /&gt;
	elseif options.trim ~= false then&lt;br /&gt;
		if options.removeBlanks ~= false then&lt;br /&gt;
			tidyVal = tidyValDefault&lt;br /&gt;
		else&lt;br /&gt;
			tidyVal = tidyValTrimOnly&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		if options.removeBlanks ~= false then&lt;br /&gt;
			tidyVal = tidyValRemoveBlanksOnly&lt;br /&gt;
		else&lt;br /&gt;
			tidyVal = tidyValNoChange&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Set up the args, metaArgs and nilArgs tables. args will be the one&lt;br /&gt;
	-- accessed from functions, and metaArgs will hold the actual arguments. Nil&lt;br /&gt;
	-- arguments are memoized in nilArgs, and the metatable connects all of them&lt;br /&gt;
	-- together.&lt;br /&gt;
	--]]&lt;br /&gt;
	local args, metaArgs, nilArgs, metatable = {}, {}, {}, {}&lt;br /&gt;
	setmetatable(args, metatable)&lt;br /&gt;
&lt;br /&gt;
	local function mergeArgs(tables)&lt;br /&gt;
		--[[&lt;br /&gt;
		-- Accepts multiple tables as input and merges their keys and values&lt;br /&gt;
		-- into one table. If a value is already present it is not overwritten;&lt;br /&gt;
		-- tables listed earlier have precedence. We are also memoizing nil&lt;br /&gt;
		-- values, which can be overwritten if they are &#039;s&#039; (soft).&lt;br /&gt;
		--]]&lt;br /&gt;
		for _, t in ipairs(tables) do&lt;br /&gt;
			for key, val in pairs(t) do&lt;br /&gt;
				if metaArgs[key] == nil and nilArgs[key] ~= &#039;h&#039; then&lt;br /&gt;
					local tidiedVal = tidyVal(key, val)&lt;br /&gt;
					if tidiedVal == nil then&lt;br /&gt;
						nilArgs[key] = &#039;s&#039;&lt;br /&gt;
					else&lt;br /&gt;
						metaArgs[key] = tidiedVal&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Define metatable behaviour. Arguments are memoized in the metaArgs table,&lt;br /&gt;
	-- and are only fetched from the argument tables once. Fetching arguments&lt;br /&gt;
	-- from the argument tables is the most resource-intensive step in this&lt;br /&gt;
	-- module, so we try and avoid it where possible. For this reason, nil&lt;br /&gt;
	-- arguments are also memoized, in the nilArgs table. Also, we keep a record&lt;br /&gt;
	-- in the metatable of when pairs and ipairs have been called, so we do not&lt;br /&gt;
	-- run pairs and ipairs on the argument tables more than once. We also do&lt;br /&gt;
	-- not run ipairs on fargs and pargs if pairs has already been run, as all&lt;br /&gt;
	-- the arguments will already have been copied over.&lt;br /&gt;
	--]]&lt;br /&gt;
&lt;br /&gt;
	metatable.__index = function (t, key)&lt;br /&gt;
		--[[&lt;br /&gt;
		-- Fetches an argument when the args table is indexed. First we check&lt;br /&gt;
		-- to see if the value is memoized, and if not we try and fetch it from&lt;br /&gt;
		-- the argument tables. When we check memoization, we need to check&lt;br /&gt;
		-- metaArgs before nilArgs, as both can be non-nil at the same time.&lt;br /&gt;
		-- If the argument is not present in metaArgs, we also check whether&lt;br /&gt;
		-- pairs has been run yet. If pairs has already been run, we return nil.&lt;br /&gt;
		-- This is because all the arguments will have already been copied into&lt;br /&gt;
		-- metaArgs by the mergeArgs function, meaning that any other arguments&lt;br /&gt;
		-- must be nil.&lt;br /&gt;
		--]]&lt;br /&gt;
		if type(key) == &#039;string&#039; then&lt;br /&gt;
			key = options.translate[key]&lt;br /&gt;
		end&lt;br /&gt;
		local val = metaArgs[key]&lt;br /&gt;
		if val ~= nil then&lt;br /&gt;
			return val&lt;br /&gt;
		elseif metatable.donePairs or nilArgs[key] then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
		for _, argTable in ipairs(argTables) do&lt;br /&gt;
			local argTableVal = tidyVal(key, argTable[key])&lt;br /&gt;
			if argTableVal ~= nil then&lt;br /&gt;
				metaArgs[key] = argTableVal&lt;br /&gt;
				return argTableVal&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		nilArgs[key] = &#039;h&#039;&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	metatable.__newindex = function (t, key, val)&lt;br /&gt;
		-- This function is called when a module tries to add a new value to the&lt;br /&gt;
		-- args table, or tries to change an existing value.&lt;br /&gt;
		if type(key) == &#039;string&#039; then&lt;br /&gt;
			key = options.translate[key]&lt;br /&gt;
		end&lt;br /&gt;
		if options.readOnly then&lt;br /&gt;
			error(&lt;br /&gt;
				&#039;could not write to argument table key &amp;quot;&#039;&lt;br /&gt;
					.. tostring(key)&lt;br /&gt;
					.. &#039;&amp;quot;; the table is read-only&#039;,&lt;br /&gt;
				2&lt;br /&gt;
			)&lt;br /&gt;
		elseif options.noOverwrite and args[key] ~= nil then&lt;br /&gt;
			error(&lt;br /&gt;
				&#039;could not write to argument table key &amp;quot;&#039;&lt;br /&gt;
					.. tostring(key)&lt;br /&gt;
					.. &#039;&amp;quot;; overwriting existing arguments is not permitted&#039;,&lt;br /&gt;
				2&lt;br /&gt;
			)&lt;br /&gt;
		elseif val == nil then&lt;br /&gt;
			--[[&lt;br /&gt;
			-- If the argument is to be overwritten with nil, we need to erase&lt;br /&gt;
			-- the value in metaArgs, so that __index, __pairs and __ipairs do&lt;br /&gt;
			-- not use a previous existing value, if present; and we also need&lt;br /&gt;
			-- to memoize the nil in nilArgs, so that the value isn&#039;t looked&lt;br /&gt;
			-- up in the argument tables if it is accessed again.&lt;br /&gt;
			--]]&lt;br /&gt;
			metaArgs[key] = nil&lt;br /&gt;
			nilArgs[key] = &#039;h&#039;&lt;br /&gt;
		else&lt;br /&gt;
			metaArgs[key] = val&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function translatenext(invariant)&lt;br /&gt;
		local k, v = next(invariant.t, invariant.k)&lt;br /&gt;
		invariant.k = k&lt;br /&gt;
		if k == nil then&lt;br /&gt;
			return nil&lt;br /&gt;
		elseif type(k) ~= &#039;string&#039; or not options.backtranslate then&lt;br /&gt;
			return k, v&lt;br /&gt;
		else&lt;br /&gt;
			local backtranslate = options.backtranslate[k]&lt;br /&gt;
			if backtranslate == nil then&lt;br /&gt;
				-- Skip this one. This is a tail call, so this won&#039;t cause stack overflow&lt;br /&gt;
				return translatenext(invariant)&lt;br /&gt;
			else&lt;br /&gt;
				return backtranslate, v&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	metatable.__pairs = function ()&lt;br /&gt;
		-- Called when pairs is run on the args table.&lt;br /&gt;
		if not metatable.donePairs then&lt;br /&gt;
			mergeArgs(argTables)&lt;br /&gt;
			metatable.donePairs = true&lt;br /&gt;
		end&lt;br /&gt;
		return translatenext, { t = metaArgs }&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function inext(t, i)&lt;br /&gt;
		-- This uses our __index metamethod&lt;br /&gt;
		local v = t[i + 1]&lt;br /&gt;
		if v ~= nil then&lt;br /&gt;
			return i + 1, v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	metatable.__ipairs = function (t)&lt;br /&gt;
		-- Called when ipairs is run on the args table.&lt;br /&gt;
		return inext, t, 0&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return args&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return arguments&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=M%C3%B3dulo:Arguments&amp;diff=7507</id>
		<title>Módulo:Arguments</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=M%C3%B3dulo:Arguments&amp;diff=7507"/>
		<updated>2023-11-01T22:49:38Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module provides easy processing of arguments passed to Scribunto from&lt;br /&gt;
-- #invoke. It is intended for use by other Lua modules, and should not be&lt;br /&gt;
-- called from #invoke directly.&lt;br /&gt;
&lt;br /&gt;
local libraryUtil = require(&#039;libraryUtil&#039;)&lt;br /&gt;
local checkType = libraryUtil.checkType&lt;br /&gt;
local i18n = require(&#039;Module:I18n&#039;).loadMessages(&#039;Arguments&#039;)&lt;br /&gt;
&lt;br /&gt;
local arguments = {}&lt;br /&gt;
&lt;br /&gt;
-- Generate four different tidyVal functions, so that we don&#039;t have to check the&lt;br /&gt;
-- options every time we call it.&lt;br /&gt;
&lt;br /&gt;
local function tidyValDefault(key, val)&lt;br /&gt;
	if type(val) == &#039;string&#039; then&lt;br /&gt;
		val = val:match(&#039;^%s*(.-)%s*$&#039;)&lt;br /&gt;
		if val == &#039;&#039; then&lt;br /&gt;
			return nil&lt;br /&gt;
		else&lt;br /&gt;
			return val&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return val&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function tidyValTrimOnly(key, val)&lt;br /&gt;
	if type(val) == &#039;string&#039; then&lt;br /&gt;
		return val:match(&#039;^%s*(.-)%s*$&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		return val&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function tidyValRemoveBlanksOnly(key, val)&lt;br /&gt;
	if type(val) == &#039;string&#039; then&lt;br /&gt;
		if val:find(&#039;%S&#039;) then&lt;br /&gt;
			return val&lt;br /&gt;
		else&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return val&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function tidyValNoChange(key, val)&lt;br /&gt;
	return val&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function matchesTitle(given, title)&lt;br /&gt;
	local tp = type( given )&lt;br /&gt;
	return (tp == &#039;string&#039; or tp == &#039;number&#039;) and mw.title.new( given ).prefixedText == title&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local translate_mt = { __index = function(t, k) return k end }&lt;br /&gt;
&lt;br /&gt;
function arguments.getArgs(frame, options)&lt;br /&gt;
	checkType(&#039;getArgs&#039;, 1, frame, &#039;table&#039;, true)&lt;br /&gt;
	checkType(&#039;getArgs&#039;, 2, options, &#039;table&#039;, true)&lt;br /&gt;
	frame = frame or {}&lt;br /&gt;
	options = options or {}&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Set up argument translation.&lt;br /&gt;
	--]]&lt;br /&gt;
	options.translate = options.translate or {}&lt;br /&gt;
	if getmetatable(options.translate) == nil then&lt;br /&gt;
		setmetatable(options.translate, translate_mt)&lt;br /&gt;
	end&lt;br /&gt;
	if options.backtranslate == nil then&lt;br /&gt;
		options.backtranslate = {}&lt;br /&gt;
		for k,v in pairs(options.translate) do&lt;br /&gt;
			options.backtranslate[v] = k&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if options.backtranslate and getmetatable(options.backtranslate) == nil then&lt;br /&gt;
		setmetatable(options.backtranslate, {&lt;br /&gt;
			__index = function(t, k)&lt;br /&gt;
				if options.translate[k] ~= k then&lt;br /&gt;
					return nil&lt;br /&gt;
				else&lt;br /&gt;
					return k&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Get the argument tables. If we were passed a valid frame object, get the&lt;br /&gt;
	-- frame arguments (fargs) and the parent frame arguments (pargs), depending&lt;br /&gt;
	-- on the options set and on the parent frame&#039;s availability. If we weren&#039;t&lt;br /&gt;
	-- passed a valid frame object, we are being called from another Lua module&lt;br /&gt;
	-- or from the debug console, so assume that we were passed a table of args&lt;br /&gt;
	-- directly, and assign it to a new variable (luaArgs).&lt;br /&gt;
	--]]&lt;br /&gt;
	local fargs, pargs, luaArgs&lt;br /&gt;
	if type(frame.args) == &#039;table&#039; and type(frame.getParent) == &#039;function&#039; then&lt;br /&gt;
		if options.wrappers then&lt;br /&gt;
			--[[&lt;br /&gt;
			-- The wrappers option makes Module:Arguments look up arguments in&lt;br /&gt;
			-- either the frame argument table or the parent argument table, but&lt;br /&gt;
			-- not both. This means that users can use either the #invoke syntax&lt;br /&gt;
			-- or a wrapper template without the loss of performance associated&lt;br /&gt;
			-- with looking arguments up in both the frame and the parent frame.&lt;br /&gt;
			-- Module:Arguments will look up arguments in the parent frame&lt;br /&gt;
			-- if it finds the parent frame&#039;s title in options.wrapper;&lt;br /&gt;
			-- otherwise it will look up arguments in the frame object passed&lt;br /&gt;
			-- to getArgs.&lt;br /&gt;
			--]]&lt;br /&gt;
			local parent = frame:getParent()&lt;br /&gt;
			if not parent then&lt;br /&gt;
				fargs = frame.args&lt;br /&gt;
			else&lt;br /&gt;
				local title = parent:getTitle():gsub(&#039;/sandbox$&#039;, &#039;&#039;)&lt;br /&gt;
				local found = false&lt;br /&gt;
				if matchesTitle(options.wrappers, title) then&lt;br /&gt;
					found = true&lt;br /&gt;
				elseif type(options.wrappers) == &#039;table&#039; then&lt;br /&gt;
					for _,v in pairs(options.wrappers) do&lt;br /&gt;
						if matchesTitle(v, title) then&lt;br /&gt;
							found = true&lt;br /&gt;
							break&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				-- We test for false specifically here so that nil (the default) acts like true.&lt;br /&gt;
				if found or options.frameOnly == false then&lt;br /&gt;
					pargs = parent.args&lt;br /&gt;
				end&lt;br /&gt;
				if not found or options.parentOnly == false then&lt;br /&gt;
					fargs = frame.args&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			-- options.wrapper isn&#039;t set, so check the other options.&lt;br /&gt;
			if not options.parentOnly then&lt;br /&gt;
				fargs = frame.args&lt;br /&gt;
			end&lt;br /&gt;
			if not options.frameOnly then&lt;br /&gt;
				local parent = frame:getParent()&lt;br /&gt;
				pargs = parent and parent.args or nil&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if options.parentFirst then&lt;br /&gt;
			fargs, pargs = pargs, fargs&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		luaArgs = frame&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set the order of precedence of the argument tables. If the variables are&lt;br /&gt;
	-- nil, nothing will be added to the table, which is how we avoid clashes&lt;br /&gt;
	-- between the frame/parent args and the Lua args.&lt;br /&gt;
	local argTables = {fargs}&lt;br /&gt;
	argTables[#argTables + 1] = pargs&lt;br /&gt;
	argTables[#argTables + 1] = luaArgs&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Generate the tidyVal function. If it has been specified by the user, we&lt;br /&gt;
	-- use that; if not, we choose one of four functions depending on the&lt;br /&gt;
	-- options chosen. This is so that we don&#039;t have to call the options table&lt;br /&gt;
	-- every time the function is called.&lt;br /&gt;
	--]]&lt;br /&gt;
	local tidyVal = options.valueFunc&lt;br /&gt;
	if tidyVal then&lt;br /&gt;
		if type(tidyVal) ~= &#039;function&#039; then&lt;br /&gt;
			error(&lt;br /&gt;
				&amp;quot;bad value assigned to option &#039;valueFunc&#039;&amp;quot;&lt;br /&gt;
					.. &#039;(function expected, got &#039;&lt;br /&gt;
					.. type(tidyVal)&lt;br /&gt;
					.. &#039;)&#039;,&lt;br /&gt;
				2&lt;br /&gt;
			)&lt;br /&gt;
		end&lt;br /&gt;
	elseif options.trim ~= false then&lt;br /&gt;
		if options.removeBlanks ~= false then&lt;br /&gt;
			tidyVal = tidyValDefault&lt;br /&gt;
		else&lt;br /&gt;
			tidyVal = tidyValTrimOnly&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		if options.removeBlanks ~= false then&lt;br /&gt;
			tidyVal = tidyValRemoveBlanksOnly&lt;br /&gt;
		else&lt;br /&gt;
			tidyVal = tidyValNoChange&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Set up the args, metaArgs and nilArgs tables. args will be the one&lt;br /&gt;
	-- accessed from functions, and metaArgs will hold the actual arguments. Nil&lt;br /&gt;
	-- arguments are memoized in nilArgs, and the metatable connects all of them&lt;br /&gt;
	-- together.&lt;br /&gt;
	--]]&lt;br /&gt;
	local args, metaArgs, nilArgs, metatable = {}, {}, {}, {}&lt;br /&gt;
	setmetatable(args, metatable)&lt;br /&gt;
&lt;br /&gt;
	local function mergeArgs(tables)&lt;br /&gt;
		--[[&lt;br /&gt;
		-- Accepts multiple tables as input and merges their keys and values&lt;br /&gt;
		-- into one table. If a value is already present it is not overwritten;&lt;br /&gt;
		-- tables listed earlier have precedence. We are also memoizing nil&lt;br /&gt;
		-- values, which can be overwritten if they are &#039;s&#039; (soft).&lt;br /&gt;
		--]]&lt;br /&gt;
		for _, t in ipairs(tables) do&lt;br /&gt;
			for key, val in pairs(t) do&lt;br /&gt;
				if metaArgs[key] == nil and nilArgs[key] ~= &#039;h&#039; then&lt;br /&gt;
					local tidiedVal = tidyVal(key, val)&lt;br /&gt;
					if tidiedVal == nil then&lt;br /&gt;
						nilArgs[key] = &#039;s&#039;&lt;br /&gt;
					else&lt;br /&gt;
						metaArgs[key] = tidiedVal&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Define metatable behaviour. Arguments are memoized in the metaArgs table,&lt;br /&gt;
	-- and are only fetched from the argument tables once. Fetching arguments&lt;br /&gt;
	-- from the argument tables is the most resource-intensive step in this&lt;br /&gt;
	-- module, so we try and avoid it where possible. For this reason, nil&lt;br /&gt;
	-- arguments are also memoized, in the nilArgs table. Also, we keep a record&lt;br /&gt;
	-- in the metatable of when pairs and ipairs have been called, so we do not&lt;br /&gt;
	-- run pairs and ipairs on the argument tables more than once. We also do&lt;br /&gt;
	-- not run ipairs on fargs and pargs if pairs has already been run, as all&lt;br /&gt;
	-- the arguments will already have been copied over.&lt;br /&gt;
	--]]&lt;br /&gt;
&lt;br /&gt;
	metatable.__index = function (t, key)&lt;br /&gt;
		--[[&lt;br /&gt;
		-- Fetches an argument when the args table is indexed. First we check&lt;br /&gt;
		-- to see if the value is memoized, and if not we try and fetch it from&lt;br /&gt;
		-- the argument tables. When we check memoization, we need to check&lt;br /&gt;
		-- metaArgs before nilArgs, as both can be non-nil at the same time.&lt;br /&gt;
		-- If the argument is not present in metaArgs, we also check whether&lt;br /&gt;
		-- pairs has been run yet. If pairs has already been run, we return nil.&lt;br /&gt;
		-- This is because all the arguments will have already been copied into&lt;br /&gt;
		-- metaArgs by the mergeArgs function, meaning that any other arguments&lt;br /&gt;
		-- must be nil.&lt;br /&gt;
		--]]&lt;br /&gt;
		if type(key) == &#039;string&#039; then&lt;br /&gt;
			key = options.translate[key]&lt;br /&gt;
		end&lt;br /&gt;
		local val = metaArgs[key]&lt;br /&gt;
		if val ~= nil then&lt;br /&gt;
			return val&lt;br /&gt;
		elseif metatable.donePairs or nilArgs[key] then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
		for _, argTable in ipairs(argTables) do&lt;br /&gt;
			local argTableVal = tidyVal(key, argTable[key])&lt;br /&gt;
			if argTableVal ~= nil then&lt;br /&gt;
				metaArgs[key] = argTableVal&lt;br /&gt;
				return argTableVal&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		nilArgs[key] = &#039;h&#039;&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	metatable.__newindex = function (t, key, val)&lt;br /&gt;
		-- This function is called when a module tries to add a new value to the&lt;br /&gt;
		-- args table, or tries to change an existing value.&lt;br /&gt;
		if type(key) == &#039;string&#039; then&lt;br /&gt;
			key = options.translate[key]&lt;br /&gt;
		end&lt;br /&gt;
		if options.readOnly then&lt;br /&gt;
			error(&lt;br /&gt;
				&#039;could not write to argument table key &amp;quot;&#039;&lt;br /&gt;
					.. tostring(key)&lt;br /&gt;
					.. &#039;&amp;quot;; the table is read-only&#039;,&lt;br /&gt;
				2&lt;br /&gt;
			)&lt;br /&gt;
		elseif options.noOverwrite and args[key] ~= nil then&lt;br /&gt;
			error(&lt;br /&gt;
				&#039;could not write to argument table key &amp;quot;&#039;&lt;br /&gt;
					.. tostring(key)&lt;br /&gt;
					.. &#039;&amp;quot;; overwriting existing arguments is not permitted&#039;,&lt;br /&gt;
				2&lt;br /&gt;
			)&lt;br /&gt;
		elseif val == nil then&lt;br /&gt;
			--[[&lt;br /&gt;
			-- If the argument is to be overwritten with nil, we need to erase&lt;br /&gt;
			-- the value in metaArgs, so that __index, __pairs and __ipairs do&lt;br /&gt;
			-- not use a previous existing value, if present; and we also need&lt;br /&gt;
			-- to memoize the nil in nilArgs, so that the value isn&#039;t looked&lt;br /&gt;
			-- up in the argument tables if it is accessed again.&lt;br /&gt;
			--]]&lt;br /&gt;
			metaArgs[key] = nil&lt;br /&gt;
			nilArgs[key] = &#039;h&#039;&lt;br /&gt;
		else&lt;br /&gt;
			metaArgs[key] = val&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function translatenext(invariant)&lt;br /&gt;
		local k, v = next(invariant.t, invariant.k)&lt;br /&gt;
		invariant.k = k&lt;br /&gt;
		if k == nil then&lt;br /&gt;
			return nil&lt;br /&gt;
		elseif type(k) ~= &#039;string&#039; or not options.backtranslate then&lt;br /&gt;
			return k, v&lt;br /&gt;
		else&lt;br /&gt;
			local backtranslate = options.backtranslate[k]&lt;br /&gt;
			if backtranslate == nil then&lt;br /&gt;
				-- Skip this one. This is a tail call, so this won&#039;t cause stack overflow&lt;br /&gt;
				return translatenext(invariant)&lt;br /&gt;
			else&lt;br /&gt;
				return backtranslate, v&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	metatable.__pairs = function ()&lt;br /&gt;
		-- Called when pairs is run on the args table.&lt;br /&gt;
		if not metatable.donePairs then&lt;br /&gt;
			mergeArgs(argTables)&lt;br /&gt;
			metatable.donePairs = true&lt;br /&gt;
		end&lt;br /&gt;
		return translatenext, { t = metaArgs }&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function inext(t, i)&lt;br /&gt;
		-- This uses our __index metamethod&lt;br /&gt;
		local v = t[i + 1]&lt;br /&gt;
		if v ~= nil then&lt;br /&gt;
			return i + 1, v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	metatable.__ipairs = function (t)&lt;br /&gt;
		-- Called when ipairs is run on the args table.&lt;br /&gt;
		return inext, t, 0&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return args&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return arguments&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=MediaWiki:Citizen.css&amp;diff=7506</id>
		<title>MediaWiki:Citizen.css</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=MediaWiki:Citizen.css&amp;diff=7506"/>
		<updated>2023-11-01T22:46:48Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* All CSS here will be loaded for users of the Citizen skin */&lt;br /&gt;
/* Courtesy of starcitizen.tools */&lt;br /&gt;
:root {&lt;br /&gt;
	--color-primary__h: 205;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Adjust contrast since we changed primary color */&lt;br /&gt;
:root.skin-citizen-dark {&lt;br /&gt;
	--color-primary__l: 56%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Align icon opacity with skin default */&lt;br /&gt;
.mw-logo-icon {&lt;br /&gt;
	opacity: var( --opacity-icon-base );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Footer icons&lt;br /&gt;
 * We use custom footer icons so we need to fine tune it&lt;br /&gt;
&lt;br /&gt;
/* More space between icons&lt;br /&gt;
#footer-icons ul {&lt;br /&gt;
	gap: var( --space-md );&lt;br /&gt;
}&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
/* Background responsive para las plantillas */&lt;br /&gt;
&lt;br /&gt;
.bgesp {&lt;br /&gt;
	background-color:#f9fafb;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-citizen-dark .bgesp {&lt;br /&gt;
	background-color: #1d2830;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Color de letra Púrpura para las plantillas */&lt;br /&gt;
&lt;br /&gt;
.purpura {&lt;br /&gt;
	color:#520044;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-citizen-dark .purpura {&lt;br /&gt;
	color: #df00b9;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Base CSS classes for demo. If you wish to use Mbox on your wiki, only copy the below. */&lt;br /&gt;
&lt;br /&gt;
.mbox {&lt;br /&gt;
    --type-important: rgba(200, 0, 0, 0.8);&lt;br /&gt;
    --type-moderate: rgba(233, 124, 47, 0.8);&lt;br /&gt;
    --type-minor: rgba(241, 197, 37, 0.8);&lt;br /&gt;
    display: flex;&lt;br /&gt;
    position: relative;&lt;br /&gt;
    background-color: var(--theme-page-background-color--secondary);&lt;br /&gt;
    border: 1px solid var(--theme-border-color);&lt;br /&gt;
    border-left-width: 8px;&lt;br /&gt;
    border-left-color: #d6d6d6;&lt;br /&gt;
    border-radius: 3px;&lt;br /&gt;
    margin-bottom: 5px;&lt;br /&gt;
    min-height: 32px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox.mbox-type-important {&lt;br /&gt;
    border-left-color: var(--type-important);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox.mbox-type-moderate {&lt;br /&gt;
    border-left-color: var(--type-moderate);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox.mbox-type-minor {&lt;br /&gt;
    border-left-color: var(--type-minor);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content {&lt;br /&gt;
    display: table;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    padding: 8px 15px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__image {&lt;br /&gt;
    display: table-cell;&lt;br /&gt;
    width: 40px;&lt;br /&gt;
    height: 100%;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    vertical-align: middle;&lt;br /&gt;
    padding-right: 15px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__wrapper {&lt;br /&gt;
    display: table-cell;&lt;br /&gt;
    vertical-align: middle;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__header {&lt;br /&gt;
    display: block;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__text {&lt;br /&gt;
    display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__text__comment {&lt;br /&gt;
    font-size: small;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__aside {&lt;br /&gt;
    display: table-cell;&lt;br /&gt;
    width: 100px;&lt;br /&gt;
    vertical-align: middle;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 0 15px;&lt;br /&gt;
    border-left: 1px solid #d6d6d6;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__close {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    right: 0;&lt;br /&gt;
    top: 0;&lt;br /&gt;
    padding: 2px 7px;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    font-size: 16px;&lt;br /&gt;
    color: #bbb;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    transition: all .15s ease-in;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__close:hover {&lt;br /&gt;
    color: #777;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__close:after {&lt;br /&gt;
    content: &#039;×&#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-collapsed + .mbox__close {&lt;br /&gt;
    transform: rotate(45deg);&lt;br /&gt;
    padding: 4px 7px 5px 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile skin fixes */&lt;br /&gt;
.skin-fandommobile .mbox__content__image {&lt;br /&gt;
    width: 60px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-fandommobile .mbox__content__image .article-media-thumbnail {&lt;br /&gt;
    margin-bottom: unset;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Wookieepedia-style Mbox demo. */&lt;br /&gt;
.mbox--wook {&lt;br /&gt;
    background-color: #7bb0d8;&lt;br /&gt;
    border: none;&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox--wook .mbox__close {&lt;br /&gt;
    color: #0c8787;&lt;br /&gt;
    font-weight: normal;&lt;br /&gt;
    font-size: 13px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox--wook .mbox__close:after {&lt;br /&gt;
    content: &#039;[hide]&#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox--wook .mw-collapsed + .mbox__close {&lt;br /&gt;
    transform: none;&lt;br /&gt;
    padding: 2px 7px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox--wook .mw-collapsed + .mbox__close:after {&lt;br /&gt;
    content: &#039;[show]&#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Final Fantasy-style Mbox demo. */&lt;br /&gt;
.theme-fandomdesktop-light .mbox--ff {&lt;br /&gt;
    border-top: 1px solid #afaa84;&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
    background: linear-gradient(180deg,rgba(255,255,246,1) 0,rgba(247,219,185,1) 40px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.theme-fandomdesktop-dark .mbox--ff {&lt;br /&gt;
    border-top: 3px solid #1e9de3 !important;&lt;br /&gt;
    border: 0;&lt;br /&gt;
    background: linear-gradient(180deg,rgba(5,37,78,.5) 0,rgba(5,37,78,.5) 75%,rgba(5,37,78,0));&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=MediaWiki:Common.css&amp;diff=7505</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=MediaWiki:Common.css&amp;diff=7505"/>
		<updated>2023-11-01T22:46:13Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;body, #firstHeading, h1, h2, h3, h4, h5,&lt;br /&gt;
.mw-body h1, .mw-body h2, .mw-body #firstHeading, &lt;br /&gt;
body em, body i, body strong {font-family: &#039;Open Sans&#039;, sans-serif;}&lt;br /&gt;
body.page-Página_principal.action-view h1.firstHeading, body.page-Página_principal.action-submit h1.firstHeading { display: none; }&lt;br /&gt;
&lt;br /&gt;
li#footer-info-lastmod,&lt;br /&gt;
li#footer-info-viewcount,&lt;br /&gt;
li#footer-places-about,&lt;br /&gt;
li#footer-places-disclaimer {&lt;br /&gt;
  display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-navigation h5 {&lt;br /&gt;
  display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.nowrap { &lt;br /&gt;
    white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.toggle-head {&lt;br /&gt;
  background:url(//upload.wikimedia.org/wikipedia/commons/thumb/1/1c/HW_open_arrow.svg/10px-HW_open_arrow.svg.png) no-repeat 0% center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.toggle-head:hover {&lt;br /&gt;
  text-decoration:underline;&lt;br /&gt;
  cursor:pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.redirect-in-category, .allpagesredirect a {&lt;br /&gt;
  color: gray;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.nodisplay {&lt;br /&gt;
  display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Ambox: Noticias y páginas de proyecto */&lt;br /&gt;
&lt;br /&gt;
table.ambox {&lt;br /&gt;
  width: 80%; &lt;br /&gt;
  margin: 0 auto; &lt;br /&gt;
  border-collapse: collapse; &lt;br /&gt;
  background: #f8fcff; &lt;br /&gt;
  border: 1px solid #aaa; &lt;br /&gt;
  border-left: 15px solid #39f;       /* Barra azul predeterminada */&lt;br /&gt;
}&lt;br /&gt;
table.ambox th, table.ambox td {      /* Celda(s) de mensajes */&lt;br /&gt;
  padding: 0.25em 0.5em;              /* 0.5em left/right */&lt;br /&gt;
}&lt;br /&gt;
table.ambox td.ambox-image {          /* Celda de img a la izquierda */&lt;br /&gt;
  width: 52px; &lt;br /&gt;
  padding: 2px 0px 2px 0.5em;         /* 0.5em left, 0px right */&lt;br /&gt;
  text-align: center; &lt;br /&gt;
}&lt;br /&gt;
table.ambox td.ambox-imageright {     /* Celda de img a la derecha */&lt;br /&gt;
  width: 52px; &lt;br /&gt;
  padding: 2px 0.5em 2px 0px;         /* 0px left, 0.5em right */&lt;br /&gt;
  text-align: center; &lt;br /&gt;
}&lt;br /&gt;
table.ambox-notice {&lt;br /&gt;
  border-left: 15px solid #0080FF;    /* Azul */&lt;br /&gt;
}&lt;br /&gt;
table.ambox-serious {&lt;br /&gt;
  border-left: 15px solid #C00;       /* Rojo */&lt;br /&gt;
}&lt;br /&gt;
table.ambox-content {&lt;br /&gt;
  border-left: 15px solid #F63;       /* Naranja */&lt;br /&gt;
}&lt;br /&gt;
table.ambox-style {&lt;br /&gt;
  border-left: 15px solid #FC3;       /* Amarillo */&lt;br /&gt;
}&lt;br /&gt;
table.ambox-merge {&lt;br /&gt;
  border-left: 15px solid #95B;       /* Purpura */&lt;br /&gt;
}&lt;br /&gt;
table.ambox-license {&lt;br /&gt;
  border-left: 15px solid #088A08;    /* Verde */&lt;br /&gt;
}&lt;br /&gt;
table.ambox-protection {&lt;br /&gt;
  border-left: 15px solid #BBA;       /* Gris */&lt;br /&gt;
}&lt;br /&gt;
/* Arrow button formatting */&lt;br /&gt;
&lt;br /&gt;
.arrowbutton {&lt;br /&gt;
	color:#ffffff;&lt;br /&gt;
	width:100px;&lt;br /&gt;
	padding:0.4em;&lt;br /&gt;
	line-height:1.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton::before {&lt;br /&gt;
	content:&amp;quot;⇒ &amp;quot;;&lt;br /&gt;
	font-weight:bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-red {&lt;br /&gt;
	background:#990000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-green {&lt;br /&gt;
	background:#339966;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-blue {&lt;br /&gt;
	background:#0063BF;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-gold {&lt;br /&gt;
	background:#E5B921;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-red:hover {&lt;br /&gt;
    background: #ffb3b3 !important;&lt;br /&gt;
    color: #000000 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-green:hover {&lt;br /&gt;
    background: #c6ecd9 !important;&lt;br /&gt;
    color: #000000 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-blue:hover {&lt;br /&gt;
    background: #b3daff !important;&lt;br /&gt;
    color: #000000 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-gold:hover {&lt;br /&gt;
    background: #faefcb !important;&lt;br /&gt;
    color: #000000 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Cortesía de Platonides */&lt;br /&gt;
#p-navigation { display: block; }&lt;br /&gt;
nav.vector-menu-portal { display: none; }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* estilo de tablas */&lt;br /&gt;
&lt;br /&gt;
table.rowlines { &lt;br /&gt;
    border-collapse:collapse;&lt;br /&gt;
    border: 2px solid #BBBDBF;&lt;br /&gt;
    width:  100%;&lt;br /&gt;
    vertical-align: top;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.rowlines th {&lt;br /&gt;
    border-bottom: 1px solid #BBBDBF;&lt;br /&gt;
    border-top:    1px solid #BBBDBF;&lt;br /&gt;
    padding:       5px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.rowlines td {&lt;br /&gt;
    border-bottom: 1px dotted #BBBDBF;&lt;br /&gt;
    padding:       5px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
div.rowlines-wrapper {&lt;br /&gt;
    padding: 0 10px 0 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Header mega template */&lt;br /&gt;
&lt;br /&gt;
#megaheader {&lt;br /&gt;
  position:relative;&lt;br /&gt;
  padding-bottom:1em;&lt;br /&gt;
  border:none;&lt;br /&gt;
  margin-bottom:2em;&lt;br /&gt;
  overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (min-width:982px) {&lt;br /&gt;
  #megaheader {&lt;br /&gt;
    margin-top:-3em;&lt;br /&gt;
    margin-left:-1.5em;&lt;br /&gt;
    margin-right:-1.5em;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (min-width:768px) and (max-width:981px) {&lt;br /&gt;
  #megaheader {&lt;br /&gt;
    margin-top:-2.7em;&lt;br /&gt;
    margin-left:-1em;&lt;br /&gt;
    margin-right:-1em;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (max-width:767px) {&lt;br /&gt;
  #megaheader {&lt;br /&gt;
    margin-top:-3em;&lt;br /&gt;
    margin-left:-1.15em;&lt;br /&gt;
    margin-right:-1.15em;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
@media screen and (min-width:768px) {&lt;br /&gt;
  #megaheader {&lt;br /&gt;
    height:500px;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  #megaheader-short {&lt;br /&gt;
  	height:200px;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (max-width:767px) {&lt;br /&gt;
  #megaheader {&lt;br /&gt;
     height:auto;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#megaheader img {&lt;br /&gt;
  -moz-transition: opacity 2s; /* Firefox 4 */&lt;br /&gt;
  -webkit-transition: opacity 2s; /* Safari and Chrome */&lt;br /&gt;
  -o-transition: opacity 2s;&lt;br /&gt;
  transition: opacity 2s;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Round button formatting */&lt;br /&gt;
&lt;br /&gt;
.roundbutton {&lt;br /&gt;
    display:inline-block; border-radius:50%; color:#ffffff; width:54px; height:54px; padding:12px; margin-right:0.5em; margin-bottom:0.5em; text-align:center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.roundbutton-large {&lt;br /&gt;
    display:inline-block; border-radius:50%; color:#ffffff; width:68px; height:68px; padding:15px; margin-right:0.5em; margin-bottom:0.5em; text-align:center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Copied from Wikivoyage for scalable-width images */&lt;br /&gt;
&lt;br /&gt;
@media screen and (max-width:767px) {&lt;br /&gt;
  .banner-image {&lt;br /&gt;
    position: relative;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    max-width: 1125px; &lt;br /&gt;
    width: 100%;&lt;br /&gt;
    height: auto;&lt;br /&gt;
    margin-bottom: .6em;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding-left: 0 !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image img {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    height: auto;&lt;br /&gt;
    width: auto\9;&lt;br /&gt;
    margin:0 auto;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (min-width:768px) {&lt;br /&gt;
  .banner-image {&lt;br /&gt;
    position: relative;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    max-width: 1125px; &lt;br /&gt;
    height: auto;&lt;br /&gt;
    margin-bottom: .6em;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image img {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    height: auto;&lt;br /&gt;
    width: auto\9;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-left {&lt;br /&gt;
    float: left !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-left img {&lt;br /&gt;
    float: left !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-right {&lt;br /&gt;
    float: right !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-right img {&lt;br /&gt;
    float: right !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-none {&lt;br /&gt;
    float: none !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-none img {&lt;br /&gt;
    float: none !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-center {&lt;br /&gt;
    padding-left: none !important;&lt;br /&gt;
    float: none !important;&lt;br /&gt;
    margin-left: auto !important;&lt;br /&gt;
    margin-right: auto !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-center img {&lt;br /&gt;
    float: none !important;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (max-width:767px) {&lt;br /&gt;
	.no-narrow {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media screen and (min-width:768px) {&lt;br /&gt;
	.narrow-only {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Style for horizontal lists (separator following item).&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/Horizontal_lists&lt;br /&gt;
 * @revision 7 (2015-11-12)&lt;br /&gt;
 * @author [[User:Edokter]]&lt;br /&gt;
 */&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;&lt;br /&gt;
	display: inline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.nonumtoc .tocnumber {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.nonumtoc #toc ul,&lt;br /&gt;
.nonumtoc .toc ul {&lt;br /&gt;
	line-height: 1.5em;&lt;br /&gt;
	list-style: none none;&lt;br /&gt;
	margin: .3em 0 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hlist.nonumtoc #toc ul ul,&lt;br /&gt;
.hlist.nonumtoc .toc ul ul {&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	margin: 0;&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, .hlist dl ol, .hlist dl ul,&lt;br /&gt;
.hlist ol dl, .hlist ol ol, .hlist ol ul,&lt;br /&gt;
.hlist ul dl, .hlist ul ol, .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, .hlist dd dt:first-child:before, .hlist dd li:first-child:before,&lt;br /&gt;
.hlist dt dd:first-child:before, .hlist dt dt:first-child:before, .hlist dt li:first-child:before,&lt;br /&gt;
.hlist li dd:first-child:before, .hlist li dt:first-child:before, .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, .hlist dd dt:last-child:after, .hlist dd li:last-child:after,&lt;br /&gt;
.hlist dt dd:last-child:after, .hlist dt dt:last-child:after, .hlist dt li:last-child:after,&lt;br /&gt;
.hlist li dd:last-child:after, .hlist li dt:last-child:after, .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; &amp;quot;;&lt;br /&gt;
	white-space: nowrap;&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; &amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ----------------------------------------------&lt;br /&gt;
 * Generated by Animista on 2021-9-30 18:30:28&lt;br /&gt;
 * Licensed under FreeBSD License.&lt;br /&gt;
 * See http://animista.net/license for more info. &lt;br /&gt;
 * w: http://animista.net, t: @cssanimista&lt;br /&gt;
 * ---------------------------------------------- */&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 * animation bounce-in-top&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
.bounce-in-top {&lt;br /&gt;
	-webkit-animation: bounce-in-top 1.1s 1s both;&lt;br /&gt;
	        animation: bounce-in-top 1.1s 1s both;&lt;br /&gt;
}&lt;br /&gt;
@-webkit-keyframes bounce-in-top {&lt;br /&gt;
  0% {&lt;br /&gt;
    -webkit-transform: translateY(-500px);&lt;br /&gt;
            transform: translateY(-500px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
  }&lt;br /&gt;
  38% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
  }&lt;br /&gt;
  55% {&lt;br /&gt;
    -webkit-transform: translateY(-65px);&lt;br /&gt;
            transform: translateY(-65px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
  }&lt;br /&gt;
  72% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
  }&lt;br /&gt;
  81% {&lt;br /&gt;
    -webkit-transform: translateY(-28px);&lt;br /&gt;
            transform: translateY(-28px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
  }&lt;br /&gt;
  90% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
  }&lt;br /&gt;
  95% {&lt;br /&gt;
    -webkit-transform: translateY(-8px);&lt;br /&gt;
            transform: translateY(-8px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
  }&lt;br /&gt;
  100% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
@keyframes bounce-in-top {&lt;br /&gt;
  0% {&lt;br /&gt;
    -webkit-transform: translateY(-500px);&lt;br /&gt;
            transform: translateY(-500px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
  }&lt;br /&gt;
  38% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
  }&lt;br /&gt;
  55% {&lt;br /&gt;
    -webkit-transform: translateY(-65px);&lt;br /&gt;
            transform: translateY(-65px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
  }&lt;br /&gt;
  72% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
  }&lt;br /&gt;
  81% {&lt;br /&gt;
    -webkit-transform: translateY(-28px);&lt;br /&gt;
            transform: translateY(-28px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
  }&lt;br /&gt;
  90% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
  }&lt;br /&gt;
  95% {&lt;br /&gt;
    -webkit-transform: translateY(-8px);&lt;br /&gt;
            transform: translateY(-8px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
  }&lt;br /&gt;
  100% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 * animation tracking-in-expand&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
.tracking-in-expand {&lt;br /&gt;
	-webkit-animation: tracking-in-expand 0.7s cubic-bezier(0.215, 0.610, 0.355, 1.000) both;&lt;br /&gt;
	        animation: tracking-in-expand 0.7s cubic-bezier(0.215, 0.610, 0.355, 1.000) both;&lt;br /&gt;
}&lt;br /&gt;
@-webkit-keyframes tracking-in-expand {&lt;br /&gt;
  0% {&lt;br /&gt;
    letter-spacing: -0.5em;&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
  }&lt;br /&gt;
  40% {&lt;br /&gt;
    opacity: 0.6;&lt;br /&gt;
  }&lt;br /&gt;
  100% {&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
@keyframes tracking-in-expand {&lt;br /&gt;
  0% {&lt;br /&gt;
    letter-spacing: -0.5em;&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
  }&lt;br /&gt;
  40% {&lt;br /&gt;
    opacity: 0.6;&lt;br /&gt;
  }&lt;br /&gt;
  100% {&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 * animation text-shadow-pop-bl&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
.text-shadow-pop-bl {&lt;br /&gt;
	-webkit-animation: text-shadow-pop-bl 1s both;&lt;br /&gt;
	        animation: text-shadow-pop-bl 1s both;&lt;br /&gt;
}&lt;br /&gt;
@-webkit-keyframes text-shadow-pop-bl {&lt;br /&gt;
  0% {&lt;br /&gt;
    text-shadow: 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555;&lt;br /&gt;
    -webkit-transform: translateX(0) translateY(0);&lt;br /&gt;
            transform: translateX(0) translateY(0);&lt;br /&gt;
  }&lt;br /&gt;
  100% {&lt;br /&gt;
    text-shadow: -1px 1px #555555, -2px 2px #555555, -3px 3px #555555, -4px 4px #555555, -5px 5px #555555, -6px 6px #555555, -7px 7px #555555, -8px 8px #555555;&lt;br /&gt;
    -webkit-transform: translateX(8px) translateY(-8px);&lt;br /&gt;
            transform: translateX(8px) translateY(-8px);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
@keyframes text-shadow-pop-bl {&lt;br /&gt;
  0% {&lt;br /&gt;
    text-shadow: 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555;&lt;br /&gt;
    -webkit-transform: translateX(0) translateY(0);&lt;br /&gt;
            transform: translateX(0) translateY(0);&lt;br /&gt;
  }&lt;br /&gt;
  100% {&lt;br /&gt;
    text-shadow: -1px 1px #555555, -2px 2px #555555, -3px 3px #555555, -4px 4px #555555, -5px 5px #555555, -6px 6px #555555, -7px 7px #555555, -8px 8px #555555;&lt;br /&gt;
    -webkit-transform: translateX(8px) translateY(-8px);&lt;br /&gt;
            transform: translateX(8px) translateY(-8px);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 * Fondos con imágenes molonas&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
.bgp {&lt;br /&gt;
align-items: center;&lt;br /&gt;
background-image: url(https://upload.wikimedia.org/wikipedia/commons/e/e3/Wikipedia_logo_letters_banner.svg);&lt;br /&gt;
background-position: center;&lt;br /&gt;
background-repeat: no-repeat;&lt;br /&gt;
background-size: cover;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bglogo {&lt;br /&gt;
align-items: center;&lt;br /&gt;
background-image: url(https://upload.wikimedia.org/wikipedia/commons/2/23/Wikisp-logo-icon.svg);&lt;br /&gt;
background-position: right center;&lt;br /&gt;
background-origin: padding-box;&lt;br /&gt;
background-repeat: no-repeat;&lt;br /&gt;
background-size: 50%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* remove border from language bar */&lt;br /&gt;
.mw-pt-languages {&lt;br /&gt;
	border: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Ocultar título, categorías y fecha de la última edición en la Portada */&lt;br /&gt;
body.page-Página_principal h1.firstHeading,&lt;br /&gt;
body.page-Página_principal h1.pagetitle,&lt;br /&gt;
body.page-Página_principal p.subtitle,&lt;br /&gt;
body.page-Página_principal #catlinks,&lt;br /&gt;
body.page-Página_principal #footer-info-lastmod {&lt;br /&gt;
    display:none;&lt;br /&gt;
}&lt;br /&gt;
/* Hide title and edit tools on main page */&lt;br /&gt;
.page-Página_principal .mw-side,&lt;br /&gt;
.page-Página_principal #siteSub {&lt;br /&gt;
	display: none!important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Force override until skin is updated */&lt;br /&gt;
.skin-citizen blockquote {&lt;br /&gt;
	margin: 0.8rem 20px;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Base CSS classes for demo. If you wish to use Mbox on your wiki, only copy the below. */&lt;br /&gt;
&lt;br /&gt;
.mbox {&lt;br /&gt;
    --type-important: rgba(200, 0, 0, 0.8);&lt;br /&gt;
    --type-moderate: rgba(233, 124, 47, 0.8);&lt;br /&gt;
    --type-minor: rgba(241, 197, 37, 0.8);&lt;br /&gt;
    display: flex;&lt;br /&gt;
    position: relative;&lt;br /&gt;
    background-color: var(--theme-page-background-color--secondary);&lt;br /&gt;
    border: 1px solid var(--theme-border-color);&lt;br /&gt;
    border-left-width: 8px;&lt;br /&gt;
    border-left-color: #d6d6d6;&lt;br /&gt;
    border-radius: 3px;&lt;br /&gt;
    margin-bottom: 5px;&lt;br /&gt;
    min-height: 32px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox.mbox-type-important {&lt;br /&gt;
    border-left-color: var(--type-important);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox.mbox-type-moderate {&lt;br /&gt;
    border-left-color: var(--type-moderate);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox.mbox-type-minor {&lt;br /&gt;
    border-left-color: var(--type-minor);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content {&lt;br /&gt;
    display: table;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    padding: 8px 15px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__image {&lt;br /&gt;
    display: table-cell;&lt;br /&gt;
    width: 40px;&lt;br /&gt;
    height: 100%;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    vertical-align: middle;&lt;br /&gt;
    padding-right: 15px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__wrapper {&lt;br /&gt;
    display: table-cell;&lt;br /&gt;
    vertical-align: middle;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__header {&lt;br /&gt;
    display: block;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__text {&lt;br /&gt;
    display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__text__comment {&lt;br /&gt;
    font-size: small;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__aside {&lt;br /&gt;
    display: table-cell;&lt;br /&gt;
    width: 100px;&lt;br /&gt;
    vertical-align: middle;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 0 15px;&lt;br /&gt;
    border-left: 1px solid #d6d6d6;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__close {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    right: 0;&lt;br /&gt;
    top: 0;&lt;br /&gt;
    padding: 2px 7px;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    font-size: 16px;&lt;br /&gt;
    color: #bbb;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    transition: all .15s ease-in;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__close:hover {&lt;br /&gt;
    color: #777;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__close:after {&lt;br /&gt;
    content: &#039;×&#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-collapsed + .mbox__close {&lt;br /&gt;
    transform: rotate(45deg);&lt;br /&gt;
    padding: 4px 7px 5px 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile skin fixes */&lt;br /&gt;
.skin-fandommobile .mbox__content__image {&lt;br /&gt;
    width: 60px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-fandommobile .mbox__content__image .article-media-thumbnail {&lt;br /&gt;
    margin-bottom: unset;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Wookieepedia-style Mbox demo. */&lt;br /&gt;
.mbox--wook {&lt;br /&gt;
    background-color: #7bb0d8;&lt;br /&gt;
    border: none;&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox--wook .mbox__close {&lt;br /&gt;
    color: #0c8787;&lt;br /&gt;
    font-weight: normal;&lt;br /&gt;
    font-size: 13px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox--wook .mbox__close:after {&lt;br /&gt;
    content: &#039;[hide]&#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox--wook .mw-collapsed + .mbox__close {&lt;br /&gt;
    transform: none;&lt;br /&gt;
    padding: 2px 7px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox--wook .mw-collapsed + .mbox__close:after {&lt;br /&gt;
    content: &#039;[show]&#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Final Fantasy-style Mbox demo. */&lt;br /&gt;
.theme-fandomdesktop-light .mbox--ff {&lt;br /&gt;
    border-top: 1px solid #afaa84;&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
    background: linear-gradient(180deg,rgba(255,255,246,1) 0,rgba(247,219,185,1) 40px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.theme-fandomdesktop-dark .mbox--ff {&lt;br /&gt;
    border-top: 3px solid #1e9de3 !important;&lt;br /&gt;
    border: 0;&lt;br /&gt;
    background: linear-gradient(180deg,rgba(5,37,78,.5) 0,rgba(5,37,78,.5) 75%,rgba(5,37,78,0));&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=M%C3%B3dulo:Mbox&amp;diff=7504</id>
		<title>Módulo:Mbox</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=M%C3%B3dulo:Mbox&amp;diff=7504"/>
		<updated>2023-11-01T22:36:03Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- &amp;lt;nowiki&amp;gt;&lt;br /&gt;
local Mbox = {}&lt;br /&gt;
local getArgs = require(&#039;Module:Arguments&#039;).getArgs&lt;br /&gt;
local i18n = require(&#039;Module:I18n&#039;).loadMessages(&#039;Mbox&#039;)&lt;br /&gt;
&lt;br /&gt;
function Mbox.main(frame)&lt;br /&gt;
    local args = getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
    -- styles&lt;br /&gt;
    local styles = {}&lt;br /&gt;
    styles[&#039;border-left-color&#039;] = i18n:parameter(&#039;bordercolor&#039;, args)&lt;br /&gt;
    styles[&#039;background-color&#039;] = i18n:parameter(&#039;bgcolor&#039;, args)&lt;br /&gt;
&lt;br /&gt;
    -- images&lt;br /&gt;
    local image = i18n:parameter(&#039;image&#039;, args) or &#039;&#039;&lt;br /&gt;
    local imageadjust = &#039;&#039;&lt;br /&gt;
    if args.imageadjust then&lt;br /&gt;
        imageadjust = &#039;|&#039; .. args.imageadjust&lt;br /&gt;
    end&lt;br /&gt;
    local imagewidth = i18n:parameter(&#039;imagewidth&#039;, args) or &#039;80px&#039;&lt;br /&gt;
    local imagelink = &#039;|link=&#039;&lt;br /&gt;
    local imagelinkarg = i18n:parameter(&#039;imagelink&#039;, args)&lt;br /&gt;
    if imagelinkarg then&lt;br /&gt;
        imagelink = imagelink .. imagelinkarg&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local imagewikitext = &#039;[[File:&#039; .. image .. &#039;|&#039; .. imagewidth  .. imageadjust .. imagelink .. &#039;]]&#039;&lt;br /&gt;
&lt;br /&gt;
    -- id for closure&lt;br /&gt;
    local id = i18n:parameter(&#039;id&#039;, args) or &#039;mbox&#039;&lt;br /&gt;
    local typeclass = i18n:parameter(&#039;type&#039;, args)&lt;br /&gt;
&lt;br /&gt;
    local container = mw.html.create(&#039;div&#039;)&lt;br /&gt;
        :addClass(&#039;mbox&#039;)&lt;br /&gt;
        :addClass(typeclass and (&#039;mbox-type-&#039; .. typeclass))&lt;br /&gt;
        :addClass(i18n:parameter(&#039;class&#039;, args))&lt;br /&gt;
        :css(styles)&lt;br /&gt;
        :cssText(i18n:parameter(&#039;style&#039;, args))&lt;br /&gt;
&lt;br /&gt;
    local content = container:tag(&#039;div&#039;)&lt;br /&gt;
        :addClass(&#039;mbox__content&#039;)&lt;br /&gt;
    local collapsed = i18n:parameter(&#039;collapsed&#039;, args)&lt;br /&gt;
&lt;br /&gt;
    if image ~= &#039;&#039; then&lt;br /&gt;
        local image = content:tag(&#039;div&#039;)&lt;br /&gt;
            :addClass(&#039;mbox__content__image&#039;)&lt;br /&gt;
            :addClass(&#039;mw-collapsible&#039;)&lt;br /&gt;
            :attr(&#039;id&#039;, &#039;mw-customcollapsible-&#039; .. id)&lt;br /&gt;
            :wikitext(imagewikitext)&lt;br /&gt;
            if collapsed then&lt;br /&gt;
                image:addClass(&#039;mw-collapsed&#039;)&lt;br /&gt;
            end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local contentwrapper = content:tag(&#039;div&#039;)&lt;br /&gt;
        :addClass(&#039;mbox__content__wrapper&#039;)&lt;br /&gt;
    local header = i18n:parameter(&#039;header&#039;, args)&lt;br /&gt;
&lt;br /&gt;
    if header then&lt;br /&gt;
        contentwrapper:tag(&#039;div&#039;)&lt;br /&gt;
            :addClass(&#039;mbox__content__header&#039;)&lt;br /&gt;
            :wikitext(header)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local textarg = i18n:parameter(&#039;text&#039;, args)&lt;br /&gt;
    if textarg then&lt;br /&gt;
        local text = contentwrapper:tag(&#039;div&#039;)&lt;br /&gt;
            :addClass(&#039;mbox__content__text&#039;)&lt;br /&gt;
            :addClass(&#039;mw-collapsible&#039;)&lt;br /&gt;
            :attr(&#039;id&#039;, &#039;mw-customcollapsible-&#039; .. id)&lt;br /&gt;
            :wikitext(textarg)&lt;br /&gt;
            if collapsed then&lt;br /&gt;
                text:addClass(&#039;mw-collapsed&#039;)&lt;br /&gt;
            end&lt;br /&gt;
&lt;br /&gt;
        local comment = i18n:parameter(&#039;comment&#039;, args)&lt;br /&gt;
        if comment then&lt;br /&gt;
            text:tag(&#039;div&#039;)&lt;br /&gt;
                :addClass(&#039;mbox__content__text__comment&#039;)&lt;br /&gt;
                :wikitext(comment)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    contentwrapper:tag(&#039;span&#039;)&lt;br /&gt;
        :addClass(&#039;mbox__close&#039;)&lt;br /&gt;
        :addClass(&#039;mw-customtoggle-&#039; .. id)&lt;br /&gt;
        :attr(&#039;title&#039;, i18n:msg(&#039;dismiss&#039;))&lt;br /&gt;
&lt;br /&gt;
    local asidearg = i18n:parameter(&#039;aside&#039;, args)&lt;br /&gt;
    if asidearg then&lt;br /&gt;
        local aside = content:tag(&#039;div&#039;)&lt;br /&gt;
            :addClass(&#039;mbox__content__aside&#039;)&lt;br /&gt;
            :addClass(&#039;mw-collapsible&#039;)&lt;br /&gt;
            :attr(&#039;id&#039;, &#039;mw-customcollapsible-&#039; .. id)&lt;br /&gt;
            :wikitext(asidearg)&lt;br /&gt;
            if collapsed then&lt;br /&gt;
                aside:addClass(&#039;mw-collapsed&#039;)&lt;br /&gt;
            end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return container&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return Mbox&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=M%C3%B3dulo:Mbox&amp;diff=7503</id>
		<title>Módulo:Mbox</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=M%C3%B3dulo:Mbox&amp;diff=7503"/>
		<updated>2023-11-01T22:35:32Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- &amp;lt;nowiki&amp;gt;&lt;br /&gt;
local Mbox = {}&lt;br /&gt;
local getArgs = require(&#039;Module:Arguments&#039;).getArgs&lt;br /&gt;
local i18n = require(&#039;Module:I18n&#039;).loadMessages(&#039;mbox&#039;)&lt;br /&gt;
&lt;br /&gt;
function Mbox.main(frame)&lt;br /&gt;
    local args = getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
    -- styles&lt;br /&gt;
    local styles = {}&lt;br /&gt;
    styles[&#039;border-left-color&#039;] = i18n:parameter(&#039;bordercolor&#039;, args)&lt;br /&gt;
    styles[&#039;background-color&#039;] = i18n:parameter(&#039;bgcolor&#039;, args)&lt;br /&gt;
&lt;br /&gt;
    -- images&lt;br /&gt;
    local image = i18n:parameter(&#039;image&#039;, args) or &#039;&#039;&lt;br /&gt;
    local imageadjust = &#039;&#039;&lt;br /&gt;
    if args.imageadjust then&lt;br /&gt;
        imageadjust = &#039;|&#039; .. args.imageadjust&lt;br /&gt;
    end&lt;br /&gt;
    local imagewidth = i18n:parameter(&#039;imagewidth&#039;, args) or &#039;80px&#039;&lt;br /&gt;
    local imagelink = &#039;|link=&#039;&lt;br /&gt;
    local imagelinkarg = i18n:parameter(&#039;imagelink&#039;, args)&lt;br /&gt;
    if imagelinkarg then&lt;br /&gt;
        imagelink = imagelink .. imagelinkarg&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local imagewikitext = &#039;[[File:&#039; .. image .. &#039;|&#039; .. imagewidth  .. imageadjust .. imagelink .. &#039;]]&#039;&lt;br /&gt;
&lt;br /&gt;
    -- id for closure&lt;br /&gt;
    local id = i18n:parameter(&#039;id&#039;, args) or &#039;mbox&#039;&lt;br /&gt;
    local typeclass = i18n:parameter(&#039;type&#039;, args)&lt;br /&gt;
&lt;br /&gt;
    local container = mw.html.create(&#039;div&#039;)&lt;br /&gt;
        :addClass(&#039;mbox&#039;)&lt;br /&gt;
        :addClass(typeclass and (&#039;mbox-type-&#039; .. typeclass))&lt;br /&gt;
        :addClass(i18n:parameter(&#039;class&#039;, args))&lt;br /&gt;
        :css(styles)&lt;br /&gt;
        :cssText(i18n:parameter(&#039;style&#039;, args))&lt;br /&gt;
&lt;br /&gt;
    local content = container:tag(&#039;div&#039;)&lt;br /&gt;
        :addClass(&#039;mbox__content&#039;)&lt;br /&gt;
    local collapsed = i18n:parameter(&#039;collapsed&#039;, args)&lt;br /&gt;
&lt;br /&gt;
    if image ~= &#039;&#039; then&lt;br /&gt;
        local image = content:tag(&#039;div&#039;)&lt;br /&gt;
            :addClass(&#039;mbox__content__image&#039;)&lt;br /&gt;
            :addClass(&#039;mw-collapsible&#039;)&lt;br /&gt;
            :attr(&#039;id&#039;, &#039;mw-customcollapsible-&#039; .. id)&lt;br /&gt;
            :wikitext(imagewikitext)&lt;br /&gt;
            if collapsed then&lt;br /&gt;
                image:addClass(&#039;mw-collapsed&#039;)&lt;br /&gt;
            end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local contentwrapper = content:tag(&#039;div&#039;)&lt;br /&gt;
        :addClass(&#039;mbox__content__wrapper&#039;)&lt;br /&gt;
    local header = i18n:parameter(&#039;header&#039;, args)&lt;br /&gt;
&lt;br /&gt;
    if header then&lt;br /&gt;
        contentwrapper:tag(&#039;div&#039;)&lt;br /&gt;
            :addClass(&#039;mbox__content__header&#039;)&lt;br /&gt;
            :wikitext(header)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local textarg = i18n:parameter(&#039;text&#039;, args)&lt;br /&gt;
    if textarg then&lt;br /&gt;
        local text = contentwrapper:tag(&#039;div&#039;)&lt;br /&gt;
            :addClass(&#039;mbox__content__text&#039;)&lt;br /&gt;
            :addClass(&#039;mw-collapsible&#039;)&lt;br /&gt;
            :attr(&#039;id&#039;, &#039;mw-customcollapsible-&#039; .. id)&lt;br /&gt;
            :wikitext(textarg)&lt;br /&gt;
            if collapsed then&lt;br /&gt;
                text:addClass(&#039;mw-collapsed&#039;)&lt;br /&gt;
            end&lt;br /&gt;
&lt;br /&gt;
        local comment = i18n:parameter(&#039;comment&#039;, args)&lt;br /&gt;
        if comment then&lt;br /&gt;
            text:tag(&#039;div&#039;)&lt;br /&gt;
                :addClass(&#039;mbox__content__text__comment&#039;)&lt;br /&gt;
                :wikitext(comment)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    contentwrapper:tag(&#039;span&#039;)&lt;br /&gt;
        :addClass(&#039;mbox__close&#039;)&lt;br /&gt;
        :addClass(&#039;mw-customtoggle-&#039; .. id)&lt;br /&gt;
        :attr(&#039;title&#039;, i18n:msg(&#039;dismiss&#039;))&lt;br /&gt;
&lt;br /&gt;
    local asidearg = i18n:parameter(&#039;aside&#039;, args)&lt;br /&gt;
    if asidearg then&lt;br /&gt;
        local aside = content:tag(&#039;div&#039;)&lt;br /&gt;
            :addClass(&#039;mbox__content__aside&#039;)&lt;br /&gt;
            :addClass(&#039;mw-collapsible&#039;)&lt;br /&gt;
            :attr(&#039;id&#039;, &#039;mw-customcollapsible-&#039; .. id)&lt;br /&gt;
            :wikitext(asidearg)&lt;br /&gt;
            if collapsed then&lt;br /&gt;
                aside:addClass(&#039;mw-collapsed&#039;)&lt;br /&gt;
            end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return container&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return Mbox&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=M%C3%B3dulo:Mbox&amp;diff=7502</id>
		<title>Módulo:Mbox</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=M%C3%B3dulo:Mbox&amp;diff=7502"/>
		<updated>2023-11-01T22:35:13Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: Revertidos los cambios de Jsmura (disc.) a la última edición de Galahad&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- &amp;lt;nowiki&amp;gt;&lt;br /&gt;
local Mbox = {}&lt;br /&gt;
local getArgs = require(&#039;Module:Arguments&#039;).getArgs&lt;br /&gt;
local i18n = require(&#039;Module:I18n&#039;).loadMessages(&#039;Mbox&#039;)&lt;br /&gt;
&lt;br /&gt;
function Mbox.main(frame)&lt;br /&gt;
    local args = getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
    -- styles&lt;br /&gt;
    local styles = {}&lt;br /&gt;
    styles[&#039;border-left-color&#039;] = i18n:parameter(&#039;bordercolor&#039;, args)&lt;br /&gt;
    styles[&#039;background-color&#039;] = i18n:parameter(&#039;bgcolor&#039;, args)&lt;br /&gt;
&lt;br /&gt;
    -- images&lt;br /&gt;
    local image = i18n:parameter(&#039;image&#039;, args) or &#039;&#039;&lt;br /&gt;
    local imageadjust = &#039;&#039;&lt;br /&gt;
    if args.imageadjust then&lt;br /&gt;
        imageadjust = &#039;|&#039; .. args.imageadjust&lt;br /&gt;
    end&lt;br /&gt;
    local imagewidth = i18n:parameter(&#039;imagewidth&#039;, args) or &#039;80px&#039;&lt;br /&gt;
    local imagelink = &#039;|link=&#039;&lt;br /&gt;
    local imagelinkarg = i18n:parameter(&#039;imagelink&#039;, args)&lt;br /&gt;
    if imagelinkarg then&lt;br /&gt;
        imagelink = imagelink .. imagelinkarg&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local imagewikitext = &#039;[[File:&#039; .. image .. &#039;|&#039; .. imagewidth  .. imageadjust .. imagelink .. &#039;]]&#039;&lt;br /&gt;
&lt;br /&gt;
    -- id for closure&lt;br /&gt;
    local id = i18n:parameter(&#039;id&#039;, args) or &#039;mbox&#039;&lt;br /&gt;
    local typeclass = i18n:parameter(&#039;type&#039;, args)&lt;br /&gt;
&lt;br /&gt;
    local container = mw.html.create(&#039;div&#039;)&lt;br /&gt;
        :addClass(&#039;mbox&#039;)&lt;br /&gt;
        :addClass(typeclass and (&#039;mbox-type-&#039; .. typeclass))&lt;br /&gt;
        :addClass(i18n:parameter(&#039;class&#039;, args))&lt;br /&gt;
        :css(styles)&lt;br /&gt;
        :cssText(i18n:parameter(&#039;style&#039;, args))&lt;br /&gt;
&lt;br /&gt;
    local content = container:tag(&#039;div&#039;)&lt;br /&gt;
        :addClass(&#039;mbox__content&#039;)&lt;br /&gt;
    local collapsed = i18n:parameter(&#039;collapsed&#039;, args)&lt;br /&gt;
&lt;br /&gt;
    if image ~= &#039;&#039; then&lt;br /&gt;
        local image = content:tag(&#039;div&#039;)&lt;br /&gt;
            :addClass(&#039;mbox__content__image&#039;)&lt;br /&gt;
            :addClass(&#039;mw-collapsible&#039;)&lt;br /&gt;
            :attr(&#039;id&#039;, &#039;mw-customcollapsible-&#039; .. id)&lt;br /&gt;
            :wikitext(imagewikitext)&lt;br /&gt;
            if collapsed then&lt;br /&gt;
                image:addClass(&#039;mw-collapsed&#039;)&lt;br /&gt;
            end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local contentwrapper = content:tag(&#039;div&#039;)&lt;br /&gt;
        :addClass(&#039;mbox__content__wrapper&#039;)&lt;br /&gt;
    local header = i18n:parameter(&#039;header&#039;, args)&lt;br /&gt;
&lt;br /&gt;
    if header then&lt;br /&gt;
        contentwrapper:tag(&#039;div&#039;)&lt;br /&gt;
            :addClass(&#039;mbox__content__header&#039;)&lt;br /&gt;
            :wikitext(header)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local textarg = i18n:parameter(&#039;text&#039;, args)&lt;br /&gt;
    if textarg then&lt;br /&gt;
        local text = contentwrapper:tag(&#039;div&#039;)&lt;br /&gt;
            :addClass(&#039;mbox__content__text&#039;)&lt;br /&gt;
            :addClass(&#039;mw-collapsible&#039;)&lt;br /&gt;
            :attr(&#039;id&#039;, &#039;mw-customcollapsible-&#039; .. id)&lt;br /&gt;
            :wikitext(textarg)&lt;br /&gt;
            if collapsed then&lt;br /&gt;
                text:addClass(&#039;mw-collapsed&#039;)&lt;br /&gt;
            end&lt;br /&gt;
&lt;br /&gt;
        local comment = i18n:parameter(&#039;comment&#039;, args)&lt;br /&gt;
        if comment then&lt;br /&gt;
            text:tag(&#039;div&#039;)&lt;br /&gt;
                :addClass(&#039;mbox__content__text__comment&#039;)&lt;br /&gt;
                :wikitext(comment)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    contentwrapper:tag(&#039;span&#039;)&lt;br /&gt;
        :addClass(&#039;mbox__close&#039;)&lt;br /&gt;
        :addClass(&#039;mw-customtoggle-&#039; .. id)&lt;br /&gt;
        :attr(&#039;title&#039;, i18n:msg(&#039;dismiss&#039;))&lt;br /&gt;
&lt;br /&gt;
    local asidearg = i18n:parameter(&#039;aside&#039;, args)&lt;br /&gt;
    if asidearg then&lt;br /&gt;
        local aside = content:tag(&#039;div&#039;)&lt;br /&gt;
            :addClass(&#039;mbox__content__aside&#039;)&lt;br /&gt;
            :addClass(&#039;mw-collapsible&#039;)&lt;br /&gt;
            :attr(&#039;id&#039;, &#039;mw-customcollapsible-&#039; .. id)&lt;br /&gt;
            :wikitext(asidearg)&lt;br /&gt;
            if collapsed then&lt;br /&gt;
                aside:addClass(&#039;mw-collapsed&#039;)&lt;br /&gt;
            end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return container&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return Mbox&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=M%C3%B3dulo:Mbox&amp;diff=7501</id>
		<title>Módulo:Mbox</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=M%C3%B3dulo:Mbox&amp;diff=7501"/>
		<updated>2023-11-01T22:34:50Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- &amp;lt;nowiki&amp;gt;&lt;br /&gt;
local Mbox = {}&lt;br /&gt;
local getArgs = require(&#039;Module:Arguments&#039;).getArgs&lt;br /&gt;
local i18n = require(&#039;Module:I18n&#039;)&lt;br /&gt;
&lt;br /&gt;
function Mbox.main(frame)&lt;br /&gt;
    local args = getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
    -- styles&lt;br /&gt;
    local styles = {}&lt;br /&gt;
    styles[&#039;border-left-color&#039;] = i18n:parameter(&#039;bordercolor&#039;, args)&lt;br /&gt;
    styles[&#039;background-color&#039;] = i18n:parameter(&#039;bgcolor&#039;, args)&lt;br /&gt;
&lt;br /&gt;
    -- images&lt;br /&gt;
    local image = i18n:parameter(&#039;image&#039;, args) or &#039;&#039;&lt;br /&gt;
    local imageadjust = &#039;&#039;&lt;br /&gt;
    if args.imageadjust then&lt;br /&gt;
        imageadjust = &#039;|&#039; .. args.imageadjust&lt;br /&gt;
    end&lt;br /&gt;
    local imagewidth = i18n:parameter(&#039;imagewidth&#039;, args) or &#039;80px&#039;&lt;br /&gt;
    local imagelink = &#039;|link=&#039;&lt;br /&gt;
    local imagelinkarg = i18n:parameter(&#039;imagelink&#039;, args)&lt;br /&gt;
    if imagelinkarg then&lt;br /&gt;
        imagelink = imagelink .. imagelinkarg&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local imagewikitext = &#039;[[File:&#039; .. image .. &#039;|&#039; .. imagewidth  .. imageadjust .. imagelink .. &#039;]]&#039;&lt;br /&gt;
&lt;br /&gt;
    -- id for closure&lt;br /&gt;
    local id = i18n:parameter(&#039;id&#039;, args) or &#039;mbox&#039;&lt;br /&gt;
    local typeclass = i18n:parameter(&#039;type&#039;, args)&lt;br /&gt;
&lt;br /&gt;
    local container = mw.html.create(&#039;div&#039;)&lt;br /&gt;
        :addClass(&#039;mbox&#039;)&lt;br /&gt;
        :addClass(typeclass and (&#039;mbox-type-&#039; .. typeclass))&lt;br /&gt;
        :addClass(i18n:parameter(&#039;class&#039;, args))&lt;br /&gt;
        :css(styles)&lt;br /&gt;
        :cssText(i18n:parameter(&#039;style&#039;, args))&lt;br /&gt;
&lt;br /&gt;
    local content = container:tag(&#039;div&#039;)&lt;br /&gt;
        :addClass(&#039;mbox__content&#039;)&lt;br /&gt;
    local collapsed = i18n:parameter(&#039;collapsed&#039;, args)&lt;br /&gt;
&lt;br /&gt;
    if image ~= &#039;&#039; then&lt;br /&gt;
        local image = content:tag(&#039;div&#039;)&lt;br /&gt;
            :addClass(&#039;mbox__content__image&#039;)&lt;br /&gt;
            :addClass(&#039;mw-collapsible&#039;)&lt;br /&gt;
            :attr(&#039;id&#039;, &#039;mw-customcollapsible-&#039; .. id)&lt;br /&gt;
            :wikitext(imagewikitext)&lt;br /&gt;
            if collapsed then&lt;br /&gt;
                image:addClass(&#039;mw-collapsed&#039;)&lt;br /&gt;
            end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local contentwrapper = content:tag(&#039;div&#039;)&lt;br /&gt;
        :addClass(&#039;mbox__content__wrapper&#039;)&lt;br /&gt;
    local header = i18n:parameter(&#039;header&#039;, args)&lt;br /&gt;
&lt;br /&gt;
    if header then&lt;br /&gt;
        contentwrapper:tag(&#039;div&#039;)&lt;br /&gt;
            :addClass(&#039;mbox__content__header&#039;)&lt;br /&gt;
            :wikitext(header)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local textarg = i18n:parameter(&#039;text&#039;, args)&lt;br /&gt;
    if textarg then&lt;br /&gt;
        local text = contentwrapper:tag(&#039;div&#039;)&lt;br /&gt;
            :addClass(&#039;mbox__content__text&#039;)&lt;br /&gt;
            :addClass(&#039;mw-collapsible&#039;)&lt;br /&gt;
            :attr(&#039;id&#039;, &#039;mw-customcollapsible-&#039; .. id)&lt;br /&gt;
            :wikitext(textarg)&lt;br /&gt;
            if collapsed then&lt;br /&gt;
                text:addClass(&#039;mw-collapsed&#039;)&lt;br /&gt;
            end&lt;br /&gt;
&lt;br /&gt;
        local comment = i18n:parameter(&#039;comment&#039;, args)&lt;br /&gt;
        if comment then&lt;br /&gt;
            text:tag(&#039;div&#039;)&lt;br /&gt;
                :addClass(&#039;mbox__content__text__comment&#039;)&lt;br /&gt;
                :wikitext(comment)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    contentwrapper:tag(&#039;span&#039;)&lt;br /&gt;
        :addClass(&#039;mbox__close&#039;)&lt;br /&gt;
        :addClass(&#039;mw-customtoggle-&#039; .. id)&lt;br /&gt;
        :attr(&#039;title&#039;, i18n:msg(&#039;dismiss&#039;))&lt;br /&gt;
&lt;br /&gt;
    local asidearg = i18n:parameter(&#039;aside&#039;, args)&lt;br /&gt;
    if asidearg then&lt;br /&gt;
        local aside = content:tag(&#039;div&#039;)&lt;br /&gt;
            :addClass(&#039;mbox__content__aside&#039;)&lt;br /&gt;
            :addClass(&#039;mw-collapsible&#039;)&lt;br /&gt;
            :attr(&#039;id&#039;, &#039;mw-customcollapsible-&#039; .. id)&lt;br /&gt;
            :wikitext(asidearg)&lt;br /&gt;
            if collapsed then&lt;br /&gt;
                aside:addClass(&#039;mw-collapsed&#039;)&lt;br /&gt;
            end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return container&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return Mbox&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=MediaWiki:Citizen.css&amp;diff=7500</id>
		<title>MediaWiki:Citizen.css</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=MediaWiki:Citizen.css&amp;diff=7500"/>
		<updated>2023-11-01T22:30:34Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* All CSS here will be loaded for users of the Citizen skin */&lt;br /&gt;
/* Courtesy of starcitizen.tools */&lt;br /&gt;
:root {&lt;br /&gt;
	--color-primary__h: 205;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Adjust contrast since we changed primary color */&lt;br /&gt;
:root.skin-citizen-dark {&lt;br /&gt;
	--color-primary__l: 56%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Align icon opacity with skin default */&lt;br /&gt;
.mw-logo-icon {&lt;br /&gt;
	opacity: var( --opacity-icon-base );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Footer icons&lt;br /&gt;
 * We use custom footer icons so we need to fine tune it&lt;br /&gt;
&lt;br /&gt;
/* More space between icons&lt;br /&gt;
#footer-icons ul {&lt;br /&gt;
	gap: var( --space-md );&lt;br /&gt;
}&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
/* Background responsive para las plantillas */&lt;br /&gt;
&lt;br /&gt;
.bgesp {&lt;br /&gt;
	background-color:#f9fafb;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-citizen-dark .bgesp {&lt;br /&gt;
	background-color: #1d2830;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Color de letra Púrpura para las plantillas */&lt;br /&gt;
&lt;br /&gt;
.purpura {&lt;br /&gt;
	color:#520044;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-citizen-dark .purpura {&lt;br /&gt;
	color: #df00b9;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
mbox {&lt;br /&gt;
    --type-important: rgba(200, 0, 0, 0.8);&lt;br /&gt;
    --type-moderate: rgba(233, 124, 47, 0.8);&lt;br /&gt;
    --type-minor: rgba(241, 197, 37, 0.8);&lt;br /&gt;
    display: flex;&lt;br /&gt;
    position: relative;&lt;br /&gt;
    background-color: rgba(255, 255, 255, 0.7);&lt;br /&gt;
    border: 1px solid #d6d6d6;&lt;br /&gt;
    border-left-width: 8px;&lt;br /&gt;
    border-left-color: #d6d6d6;&lt;br /&gt;
    border-radius: 3px;&lt;br /&gt;
    margin-bottom: 5px;&lt;br /&gt;
    min-height: 32px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox.mbox-type-important {&lt;br /&gt;
    border-left-color: var(--type-important);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox.mbox-type-moderate {&lt;br /&gt;
    border-left-color: var(--type-moderate);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox.mbox-type-minor {&lt;br /&gt;
    border-left-color: var(--type-minor);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content {&lt;br /&gt;
    display: table;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    padding: 8px 15px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__image {&lt;br /&gt;
    display: table-cell;&lt;br /&gt;
    width: 40px;&lt;br /&gt;
    height: 100%;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    vertical-align: middle;&lt;br /&gt;
    padding-right: 15px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__wrapper {&lt;br /&gt;
    display: table-cell;&lt;br /&gt;
    vertical-align: middle;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__header {&lt;br /&gt;
    display: block;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__text {&lt;br /&gt;
    display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__text__comment {&lt;br /&gt;
    font-size: small;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__aside {&lt;br /&gt;
    display: table-cell;&lt;br /&gt;
    width: 100px;&lt;br /&gt;
    vertical-align: middle;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding-left: 15px;&lt;br /&gt;
    border-left: 1px solid #d6d6d6;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__close {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    right: 0;&lt;br /&gt;
    top: 0;&lt;br /&gt;
    padding: 2px 7px;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    font-size: 16px;&lt;br /&gt;
    color: #bbb;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    transition: all .15s ease-in;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__close:hover {&lt;br /&gt;
    color: #777;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__close:after {&lt;br /&gt;
    content: &#039;×&#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-collapsed + .mbox__close {&lt;br /&gt;
    transform: rotate(45deg);&lt;br /&gt;
    padding: 4px 7px 5px 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Ensure text is readable in the FandomDesktop dark theme. */&lt;br /&gt;
.theme-fandomdesktop-dark .mbox {&lt;br /&gt;
    background-color: var(--theme-page-background-color--secondary);&lt;br /&gt;
    border-color: var(--theme-border-color);&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=MediaWiki:Common.css&amp;diff=7499</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=MediaWiki:Common.css&amp;diff=7499"/>
		<updated>2023-11-01T22:29:28Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;body, #firstHeading, h1, h2, h3, h4, h5,&lt;br /&gt;
.mw-body h1, .mw-body h2, .mw-body #firstHeading, &lt;br /&gt;
body em, body i, body strong {font-family: &#039;Open Sans&#039;, sans-serif;}&lt;br /&gt;
body.page-Página_principal.action-view h1.firstHeading, body.page-Página_principal.action-submit h1.firstHeading { display: none; }&lt;br /&gt;
&lt;br /&gt;
li#footer-info-lastmod,&lt;br /&gt;
li#footer-info-viewcount,&lt;br /&gt;
li#footer-places-about,&lt;br /&gt;
li#footer-places-disclaimer {&lt;br /&gt;
  display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-navigation h5 {&lt;br /&gt;
  display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.nowrap { &lt;br /&gt;
    white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.toggle-head {&lt;br /&gt;
  background:url(//upload.wikimedia.org/wikipedia/commons/thumb/1/1c/HW_open_arrow.svg/10px-HW_open_arrow.svg.png) no-repeat 0% center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.toggle-head:hover {&lt;br /&gt;
  text-decoration:underline;&lt;br /&gt;
  cursor:pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.redirect-in-category, .allpagesredirect a {&lt;br /&gt;
  color: gray;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.nodisplay {&lt;br /&gt;
  display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Ambox: Noticias y páginas de proyecto */&lt;br /&gt;
&lt;br /&gt;
table.ambox {&lt;br /&gt;
  width: 80%; &lt;br /&gt;
  margin: 0 auto; &lt;br /&gt;
  border-collapse: collapse; &lt;br /&gt;
  background: #f8fcff; &lt;br /&gt;
  border: 1px solid #aaa; &lt;br /&gt;
  border-left: 15px solid #39f;       /* Barra azul predeterminada */&lt;br /&gt;
}&lt;br /&gt;
table.ambox th, table.ambox td {      /* Celda(s) de mensajes */&lt;br /&gt;
  padding: 0.25em 0.5em;              /* 0.5em left/right */&lt;br /&gt;
}&lt;br /&gt;
table.ambox td.ambox-image {          /* Celda de img a la izquierda */&lt;br /&gt;
  width: 52px; &lt;br /&gt;
  padding: 2px 0px 2px 0.5em;         /* 0.5em left, 0px right */&lt;br /&gt;
  text-align: center; &lt;br /&gt;
}&lt;br /&gt;
table.ambox td.ambox-imageright {     /* Celda de img a la derecha */&lt;br /&gt;
  width: 52px; &lt;br /&gt;
  padding: 2px 0.5em 2px 0px;         /* 0px left, 0.5em right */&lt;br /&gt;
  text-align: center; &lt;br /&gt;
}&lt;br /&gt;
table.ambox-notice {&lt;br /&gt;
  border-left: 15px solid #0080FF;    /* Azul */&lt;br /&gt;
}&lt;br /&gt;
table.ambox-serious {&lt;br /&gt;
  border-left: 15px solid #C00;       /* Rojo */&lt;br /&gt;
}&lt;br /&gt;
table.ambox-content {&lt;br /&gt;
  border-left: 15px solid #F63;       /* Naranja */&lt;br /&gt;
}&lt;br /&gt;
table.ambox-style {&lt;br /&gt;
  border-left: 15px solid #FC3;       /* Amarillo */&lt;br /&gt;
}&lt;br /&gt;
table.ambox-merge {&lt;br /&gt;
  border-left: 15px solid #95B;       /* Purpura */&lt;br /&gt;
}&lt;br /&gt;
table.ambox-license {&lt;br /&gt;
  border-left: 15px solid #088A08;    /* Verde */&lt;br /&gt;
}&lt;br /&gt;
table.ambox-protection {&lt;br /&gt;
  border-left: 15px solid #BBA;       /* Gris */&lt;br /&gt;
}&lt;br /&gt;
/* Arrow button formatting */&lt;br /&gt;
&lt;br /&gt;
.arrowbutton {&lt;br /&gt;
	color:#ffffff;&lt;br /&gt;
	width:100px;&lt;br /&gt;
	padding:0.4em;&lt;br /&gt;
	line-height:1.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton::before {&lt;br /&gt;
	content:&amp;quot;⇒ &amp;quot;;&lt;br /&gt;
	font-weight:bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-red {&lt;br /&gt;
	background:#990000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-green {&lt;br /&gt;
	background:#339966;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-blue {&lt;br /&gt;
	background:#0063BF;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-gold {&lt;br /&gt;
	background:#E5B921;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-red:hover {&lt;br /&gt;
    background: #ffb3b3 !important;&lt;br /&gt;
    color: #000000 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-green:hover {&lt;br /&gt;
    background: #c6ecd9 !important;&lt;br /&gt;
    color: #000000 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-blue:hover {&lt;br /&gt;
    background: #b3daff !important;&lt;br /&gt;
    color: #000000 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-gold:hover {&lt;br /&gt;
    background: #faefcb !important;&lt;br /&gt;
    color: #000000 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Cortesía de Platonides */&lt;br /&gt;
#p-navigation { display: block; }&lt;br /&gt;
nav.vector-menu-portal { display: none; }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* estilo de tablas */&lt;br /&gt;
&lt;br /&gt;
table.rowlines { &lt;br /&gt;
    border-collapse:collapse;&lt;br /&gt;
    border: 2px solid #BBBDBF;&lt;br /&gt;
    width:  100%;&lt;br /&gt;
    vertical-align: top;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.rowlines th {&lt;br /&gt;
    border-bottom: 1px solid #BBBDBF;&lt;br /&gt;
    border-top:    1px solid #BBBDBF;&lt;br /&gt;
    padding:       5px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.rowlines td {&lt;br /&gt;
    border-bottom: 1px dotted #BBBDBF;&lt;br /&gt;
    padding:       5px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
div.rowlines-wrapper {&lt;br /&gt;
    padding: 0 10px 0 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Header mega template */&lt;br /&gt;
&lt;br /&gt;
#megaheader {&lt;br /&gt;
  position:relative;&lt;br /&gt;
  padding-bottom:1em;&lt;br /&gt;
  border:none;&lt;br /&gt;
  margin-bottom:2em;&lt;br /&gt;
  overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (min-width:982px) {&lt;br /&gt;
  #megaheader {&lt;br /&gt;
    margin-top:-3em;&lt;br /&gt;
    margin-left:-1.5em;&lt;br /&gt;
    margin-right:-1.5em;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (min-width:768px) and (max-width:981px) {&lt;br /&gt;
  #megaheader {&lt;br /&gt;
    margin-top:-2.7em;&lt;br /&gt;
    margin-left:-1em;&lt;br /&gt;
    margin-right:-1em;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (max-width:767px) {&lt;br /&gt;
  #megaheader {&lt;br /&gt;
    margin-top:-3em;&lt;br /&gt;
    margin-left:-1.15em;&lt;br /&gt;
    margin-right:-1.15em;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
@media screen and (min-width:768px) {&lt;br /&gt;
  #megaheader {&lt;br /&gt;
    height:500px;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  #megaheader-short {&lt;br /&gt;
  	height:200px;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (max-width:767px) {&lt;br /&gt;
  #megaheader {&lt;br /&gt;
     height:auto;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#megaheader img {&lt;br /&gt;
  -moz-transition: opacity 2s; /* Firefox 4 */&lt;br /&gt;
  -webkit-transition: opacity 2s; /* Safari and Chrome */&lt;br /&gt;
  -o-transition: opacity 2s;&lt;br /&gt;
  transition: opacity 2s;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Round button formatting */&lt;br /&gt;
&lt;br /&gt;
.roundbutton {&lt;br /&gt;
    display:inline-block; border-radius:50%; color:#ffffff; width:54px; height:54px; padding:12px; margin-right:0.5em; margin-bottom:0.5em; text-align:center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.roundbutton-large {&lt;br /&gt;
    display:inline-block; border-radius:50%; color:#ffffff; width:68px; height:68px; padding:15px; margin-right:0.5em; margin-bottom:0.5em; text-align:center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Copied from Wikivoyage for scalable-width images */&lt;br /&gt;
&lt;br /&gt;
@media screen and (max-width:767px) {&lt;br /&gt;
  .banner-image {&lt;br /&gt;
    position: relative;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    max-width: 1125px; &lt;br /&gt;
    width: 100%;&lt;br /&gt;
    height: auto;&lt;br /&gt;
    margin-bottom: .6em;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding-left: 0 !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image img {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    height: auto;&lt;br /&gt;
    width: auto\9;&lt;br /&gt;
    margin:0 auto;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (min-width:768px) {&lt;br /&gt;
  .banner-image {&lt;br /&gt;
    position: relative;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    max-width: 1125px; &lt;br /&gt;
    height: auto;&lt;br /&gt;
    margin-bottom: .6em;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image img {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    height: auto;&lt;br /&gt;
    width: auto\9;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-left {&lt;br /&gt;
    float: left !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-left img {&lt;br /&gt;
    float: left !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-right {&lt;br /&gt;
    float: right !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-right img {&lt;br /&gt;
    float: right !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-none {&lt;br /&gt;
    float: none !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-none img {&lt;br /&gt;
    float: none !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-center {&lt;br /&gt;
    padding-left: none !important;&lt;br /&gt;
    float: none !important;&lt;br /&gt;
    margin-left: auto !important;&lt;br /&gt;
    margin-right: auto !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-center img {&lt;br /&gt;
    float: none !important;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (max-width:767px) {&lt;br /&gt;
	.no-narrow {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media screen and (min-width:768px) {&lt;br /&gt;
	.narrow-only {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Style for horizontal lists (separator following item).&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/Horizontal_lists&lt;br /&gt;
 * @revision 7 (2015-11-12)&lt;br /&gt;
 * @author [[User:Edokter]]&lt;br /&gt;
 */&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;&lt;br /&gt;
	display: inline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.nonumtoc .tocnumber {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.nonumtoc #toc ul,&lt;br /&gt;
.nonumtoc .toc ul {&lt;br /&gt;
	line-height: 1.5em;&lt;br /&gt;
	list-style: none none;&lt;br /&gt;
	margin: .3em 0 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hlist.nonumtoc #toc ul ul,&lt;br /&gt;
.hlist.nonumtoc .toc ul ul {&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	margin: 0;&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, .hlist dl ol, .hlist dl ul,&lt;br /&gt;
.hlist ol dl, .hlist ol ol, .hlist ol ul,&lt;br /&gt;
.hlist ul dl, .hlist ul ol, .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, .hlist dd dt:first-child:before, .hlist dd li:first-child:before,&lt;br /&gt;
.hlist dt dd:first-child:before, .hlist dt dt:first-child:before, .hlist dt li:first-child:before,&lt;br /&gt;
.hlist li dd:first-child:before, .hlist li dt:first-child:before, .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, .hlist dd dt:last-child:after, .hlist dd li:last-child:after,&lt;br /&gt;
.hlist dt dd:last-child:after, .hlist dt dt:last-child:after, .hlist dt li:last-child:after,&lt;br /&gt;
.hlist li dd:last-child:after, .hlist li dt:last-child:after, .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; &amp;quot;;&lt;br /&gt;
	white-space: nowrap;&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; &amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ----------------------------------------------&lt;br /&gt;
 * Generated by Animista on 2021-9-30 18:30:28&lt;br /&gt;
 * Licensed under FreeBSD License.&lt;br /&gt;
 * See http://animista.net/license for more info. &lt;br /&gt;
 * w: http://animista.net, t: @cssanimista&lt;br /&gt;
 * ---------------------------------------------- */&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 * animation bounce-in-top&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
.bounce-in-top {&lt;br /&gt;
	-webkit-animation: bounce-in-top 1.1s 1s both;&lt;br /&gt;
	        animation: bounce-in-top 1.1s 1s both;&lt;br /&gt;
}&lt;br /&gt;
@-webkit-keyframes bounce-in-top {&lt;br /&gt;
  0% {&lt;br /&gt;
    -webkit-transform: translateY(-500px);&lt;br /&gt;
            transform: translateY(-500px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
  }&lt;br /&gt;
  38% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
  }&lt;br /&gt;
  55% {&lt;br /&gt;
    -webkit-transform: translateY(-65px);&lt;br /&gt;
            transform: translateY(-65px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
  }&lt;br /&gt;
  72% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
  }&lt;br /&gt;
  81% {&lt;br /&gt;
    -webkit-transform: translateY(-28px);&lt;br /&gt;
            transform: translateY(-28px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
  }&lt;br /&gt;
  90% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
  }&lt;br /&gt;
  95% {&lt;br /&gt;
    -webkit-transform: translateY(-8px);&lt;br /&gt;
            transform: translateY(-8px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
  }&lt;br /&gt;
  100% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
@keyframes bounce-in-top {&lt;br /&gt;
  0% {&lt;br /&gt;
    -webkit-transform: translateY(-500px);&lt;br /&gt;
            transform: translateY(-500px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
  }&lt;br /&gt;
  38% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
  }&lt;br /&gt;
  55% {&lt;br /&gt;
    -webkit-transform: translateY(-65px);&lt;br /&gt;
            transform: translateY(-65px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
  }&lt;br /&gt;
  72% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
  }&lt;br /&gt;
  81% {&lt;br /&gt;
    -webkit-transform: translateY(-28px);&lt;br /&gt;
            transform: translateY(-28px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
  }&lt;br /&gt;
  90% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
  }&lt;br /&gt;
  95% {&lt;br /&gt;
    -webkit-transform: translateY(-8px);&lt;br /&gt;
            transform: translateY(-8px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
  }&lt;br /&gt;
  100% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 * animation tracking-in-expand&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
.tracking-in-expand {&lt;br /&gt;
	-webkit-animation: tracking-in-expand 0.7s cubic-bezier(0.215, 0.610, 0.355, 1.000) both;&lt;br /&gt;
	        animation: tracking-in-expand 0.7s cubic-bezier(0.215, 0.610, 0.355, 1.000) both;&lt;br /&gt;
}&lt;br /&gt;
@-webkit-keyframes tracking-in-expand {&lt;br /&gt;
  0% {&lt;br /&gt;
    letter-spacing: -0.5em;&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
  }&lt;br /&gt;
  40% {&lt;br /&gt;
    opacity: 0.6;&lt;br /&gt;
  }&lt;br /&gt;
  100% {&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
@keyframes tracking-in-expand {&lt;br /&gt;
  0% {&lt;br /&gt;
    letter-spacing: -0.5em;&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
  }&lt;br /&gt;
  40% {&lt;br /&gt;
    opacity: 0.6;&lt;br /&gt;
  }&lt;br /&gt;
  100% {&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 * animation text-shadow-pop-bl&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
.text-shadow-pop-bl {&lt;br /&gt;
	-webkit-animation: text-shadow-pop-bl 1s both;&lt;br /&gt;
	        animation: text-shadow-pop-bl 1s both;&lt;br /&gt;
}&lt;br /&gt;
@-webkit-keyframes text-shadow-pop-bl {&lt;br /&gt;
  0% {&lt;br /&gt;
    text-shadow: 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555;&lt;br /&gt;
    -webkit-transform: translateX(0) translateY(0);&lt;br /&gt;
            transform: translateX(0) translateY(0);&lt;br /&gt;
  }&lt;br /&gt;
  100% {&lt;br /&gt;
    text-shadow: -1px 1px #555555, -2px 2px #555555, -3px 3px #555555, -4px 4px #555555, -5px 5px #555555, -6px 6px #555555, -7px 7px #555555, -8px 8px #555555;&lt;br /&gt;
    -webkit-transform: translateX(8px) translateY(-8px);&lt;br /&gt;
            transform: translateX(8px) translateY(-8px);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
@keyframes text-shadow-pop-bl {&lt;br /&gt;
  0% {&lt;br /&gt;
    text-shadow: 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555;&lt;br /&gt;
    -webkit-transform: translateX(0) translateY(0);&lt;br /&gt;
            transform: translateX(0) translateY(0);&lt;br /&gt;
  }&lt;br /&gt;
  100% {&lt;br /&gt;
    text-shadow: -1px 1px #555555, -2px 2px #555555, -3px 3px #555555, -4px 4px #555555, -5px 5px #555555, -6px 6px #555555, -7px 7px #555555, -8px 8px #555555;&lt;br /&gt;
    -webkit-transform: translateX(8px) translateY(-8px);&lt;br /&gt;
            transform: translateX(8px) translateY(-8px);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 * Fondos con imágenes molonas&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
.bgp {&lt;br /&gt;
align-items: center;&lt;br /&gt;
background-image: url(https://upload.wikimedia.org/wikipedia/commons/e/e3/Wikipedia_logo_letters_banner.svg);&lt;br /&gt;
background-position: center;&lt;br /&gt;
background-repeat: no-repeat;&lt;br /&gt;
background-size: cover;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bglogo {&lt;br /&gt;
align-items: center;&lt;br /&gt;
background-image: url(https://upload.wikimedia.org/wikipedia/commons/2/23/Wikisp-logo-icon.svg);&lt;br /&gt;
background-position: right center;&lt;br /&gt;
background-origin: padding-box;&lt;br /&gt;
background-repeat: no-repeat;&lt;br /&gt;
background-size: 50%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* remove border from language bar */&lt;br /&gt;
.mw-pt-languages {&lt;br /&gt;
	border: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Ocultar título, categorías y fecha de la última edición en la Portada */&lt;br /&gt;
body.page-Página_principal h1.firstHeading,&lt;br /&gt;
body.page-Página_principal h1.pagetitle,&lt;br /&gt;
body.page-Página_principal p.subtitle,&lt;br /&gt;
body.page-Página_principal #catlinks,&lt;br /&gt;
body.page-Página_principal #footer-info-lastmod {&lt;br /&gt;
    display:none;&lt;br /&gt;
}&lt;br /&gt;
/* Hide title and edit tools on main page */&lt;br /&gt;
.page-Página_principal .mw-side,&lt;br /&gt;
.page-Página_principal #siteSub {&lt;br /&gt;
	display: none!important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Force override until skin is updated */&lt;br /&gt;
.skin-citizen blockquote {&lt;br /&gt;
	margin: 0.8rem 20px;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
mbox {&lt;br /&gt;
    --type-important: rgba(200, 0, 0, 0.8);&lt;br /&gt;
    --type-moderate: rgba(233, 124, 47, 0.8);&lt;br /&gt;
    --type-minor: rgba(241, 197, 37, 0.8);&lt;br /&gt;
    display: flex;&lt;br /&gt;
    position: relative;&lt;br /&gt;
    background-color: rgba(255, 255, 255, 0.7);&lt;br /&gt;
    border: 1px solid #d6d6d6;&lt;br /&gt;
    border-left-width: 8px;&lt;br /&gt;
    border-left-color: #d6d6d6;&lt;br /&gt;
    border-radius: 3px;&lt;br /&gt;
    margin-bottom: 5px;&lt;br /&gt;
    min-height: 32px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox.mbox-type-important {&lt;br /&gt;
    border-left-color: var(--type-important);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox.mbox-type-moderate {&lt;br /&gt;
    border-left-color: var(--type-moderate);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox.mbox-type-minor {&lt;br /&gt;
    border-left-color: var(--type-minor);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content {&lt;br /&gt;
    display: table;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    padding: 8px 15px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__image {&lt;br /&gt;
    display: table-cell;&lt;br /&gt;
    width: 40px;&lt;br /&gt;
    height: 100%;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    vertical-align: middle;&lt;br /&gt;
    padding-right: 15px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__wrapper {&lt;br /&gt;
    display: table-cell;&lt;br /&gt;
    vertical-align: middle;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__header {&lt;br /&gt;
    display: block;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__text {&lt;br /&gt;
    display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__text__comment {&lt;br /&gt;
    font-size: small;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__aside {&lt;br /&gt;
    display: table-cell;&lt;br /&gt;
    width: 100px;&lt;br /&gt;
    vertical-align: middle;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding-left: 15px;&lt;br /&gt;
    border-left: 1px solid #d6d6d6;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__close {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    right: 0;&lt;br /&gt;
    top: 0;&lt;br /&gt;
    padding: 2px 7px;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    font-size: 16px;&lt;br /&gt;
    color: #bbb;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    transition: all .15s ease-in;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__close:hover {&lt;br /&gt;
    color: #777;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__close:after {&lt;br /&gt;
    content: &#039;×&#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-collapsed + .mbox__close {&lt;br /&gt;
    transform: rotate(45deg);&lt;br /&gt;
    padding: 4px 7px 5px 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Ensure text is readable in the FandomDesktop dark theme. */&lt;br /&gt;
.theme-fandomdesktop-dark .mbox {&lt;br /&gt;
    background-color: var(--theme-page-background-color--secondary);&lt;br /&gt;
    border-color: var(--theme-border-color);&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=MediaWiki:Common.css&amp;diff=7498</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=MediaWiki:Common.css&amp;diff=7498"/>
		<updated>2023-11-01T22:26:50Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: Revertidos los cambios de Jsmura (disc.) a la última edición de Galahad&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;body, #firstHeading, h1, h2, h3, h4, h5,&lt;br /&gt;
.mw-body h1, .mw-body h2, .mw-body #firstHeading, &lt;br /&gt;
body em, body i, body strong {font-family: &#039;Open Sans&#039;, sans-serif;}&lt;br /&gt;
body.page-Página_principal.action-view h1.firstHeading, body.page-Página_principal.action-submit h1.firstHeading { display: none; }&lt;br /&gt;
&lt;br /&gt;
li#footer-info-lastmod,&lt;br /&gt;
li#footer-info-viewcount,&lt;br /&gt;
li#footer-places-about,&lt;br /&gt;
li#footer-places-disclaimer {&lt;br /&gt;
  display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-navigation h5 {&lt;br /&gt;
  display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.nowrap { &lt;br /&gt;
    white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.toggle-head {&lt;br /&gt;
  background:url(//upload.wikimedia.org/wikipedia/commons/thumb/1/1c/HW_open_arrow.svg/10px-HW_open_arrow.svg.png) no-repeat 0% center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.toggle-head:hover {&lt;br /&gt;
  text-decoration:underline;&lt;br /&gt;
  cursor:pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.redirect-in-category, .allpagesredirect a {&lt;br /&gt;
  color: gray;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.nodisplay {&lt;br /&gt;
  display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Ambox: Noticias y páginas de proyecto */&lt;br /&gt;
&lt;br /&gt;
table.ambox {&lt;br /&gt;
  width: 80%; &lt;br /&gt;
  margin: 0 auto; &lt;br /&gt;
  border-collapse: collapse; &lt;br /&gt;
  background: #f8fcff; &lt;br /&gt;
  border: 1px solid #aaa; &lt;br /&gt;
  border-left: 15px solid #39f;       /* Barra azul predeterminada */&lt;br /&gt;
}&lt;br /&gt;
table.ambox th, table.ambox td {      /* Celda(s) de mensajes */&lt;br /&gt;
  padding: 0.25em 0.5em;              /* 0.5em left/right */&lt;br /&gt;
}&lt;br /&gt;
table.ambox td.ambox-image {          /* Celda de img a la izquierda */&lt;br /&gt;
  width: 52px; &lt;br /&gt;
  padding: 2px 0px 2px 0.5em;         /* 0.5em left, 0px right */&lt;br /&gt;
  text-align: center; &lt;br /&gt;
}&lt;br /&gt;
table.ambox td.ambox-imageright {     /* Celda de img a la derecha */&lt;br /&gt;
  width: 52px; &lt;br /&gt;
  padding: 2px 0.5em 2px 0px;         /* 0px left, 0.5em right */&lt;br /&gt;
  text-align: center; &lt;br /&gt;
}&lt;br /&gt;
table.ambox-notice {&lt;br /&gt;
  border-left: 15px solid #0080FF;    /* Azul */&lt;br /&gt;
}&lt;br /&gt;
table.ambox-serious {&lt;br /&gt;
  border-left: 15px solid #C00;       /* Rojo */&lt;br /&gt;
}&lt;br /&gt;
table.ambox-content {&lt;br /&gt;
  border-left: 15px solid #F63;       /* Naranja */&lt;br /&gt;
}&lt;br /&gt;
table.ambox-style {&lt;br /&gt;
  border-left: 15px solid #FC3;       /* Amarillo */&lt;br /&gt;
}&lt;br /&gt;
table.ambox-merge {&lt;br /&gt;
  border-left: 15px solid #95B;       /* Purpura */&lt;br /&gt;
}&lt;br /&gt;
table.ambox-license {&lt;br /&gt;
  border-left: 15px solid #088A08;    /* Verde */&lt;br /&gt;
}&lt;br /&gt;
table.ambox-protection {&lt;br /&gt;
  border-left: 15px solid #BBA;       /* Gris */&lt;br /&gt;
}&lt;br /&gt;
/* Arrow button formatting */&lt;br /&gt;
&lt;br /&gt;
.arrowbutton {&lt;br /&gt;
	color:#ffffff;&lt;br /&gt;
	width:100px;&lt;br /&gt;
	padding:0.4em;&lt;br /&gt;
	line-height:1.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton::before {&lt;br /&gt;
	content:&amp;quot;⇒ &amp;quot;;&lt;br /&gt;
	font-weight:bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-red {&lt;br /&gt;
	background:#990000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-green {&lt;br /&gt;
	background:#339966;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-blue {&lt;br /&gt;
	background:#0063BF;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-gold {&lt;br /&gt;
	background:#E5B921;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-red:hover {&lt;br /&gt;
    background: #ffb3b3 !important;&lt;br /&gt;
    color: #000000 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-green:hover {&lt;br /&gt;
    background: #c6ecd9 !important;&lt;br /&gt;
    color: #000000 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-blue:hover {&lt;br /&gt;
    background: #b3daff !important;&lt;br /&gt;
    color: #000000 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-gold:hover {&lt;br /&gt;
    background: #faefcb !important;&lt;br /&gt;
    color: #000000 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Cortesía de Platonides */&lt;br /&gt;
#p-navigation { display: block; }&lt;br /&gt;
nav.vector-menu-portal { display: none; }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* estilo de tablas */&lt;br /&gt;
&lt;br /&gt;
table.rowlines { &lt;br /&gt;
    border-collapse:collapse;&lt;br /&gt;
    border: 2px solid #BBBDBF;&lt;br /&gt;
    width:  100%;&lt;br /&gt;
    vertical-align: top;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.rowlines th {&lt;br /&gt;
    border-bottom: 1px solid #BBBDBF;&lt;br /&gt;
    border-top:    1px solid #BBBDBF;&lt;br /&gt;
    padding:       5px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.rowlines td {&lt;br /&gt;
    border-bottom: 1px dotted #BBBDBF;&lt;br /&gt;
    padding:       5px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
div.rowlines-wrapper {&lt;br /&gt;
    padding: 0 10px 0 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Header mega template */&lt;br /&gt;
&lt;br /&gt;
#megaheader {&lt;br /&gt;
  position:relative;&lt;br /&gt;
  padding-bottom:1em;&lt;br /&gt;
  border:none;&lt;br /&gt;
  margin-bottom:2em;&lt;br /&gt;
  overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (min-width:982px) {&lt;br /&gt;
  #megaheader {&lt;br /&gt;
    margin-top:-3em;&lt;br /&gt;
    margin-left:-1.5em;&lt;br /&gt;
    margin-right:-1.5em;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (min-width:768px) and (max-width:981px) {&lt;br /&gt;
  #megaheader {&lt;br /&gt;
    margin-top:-2.7em;&lt;br /&gt;
    margin-left:-1em;&lt;br /&gt;
    margin-right:-1em;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (max-width:767px) {&lt;br /&gt;
  #megaheader {&lt;br /&gt;
    margin-top:-3em;&lt;br /&gt;
    margin-left:-1.15em;&lt;br /&gt;
    margin-right:-1.15em;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
@media screen and (min-width:768px) {&lt;br /&gt;
  #megaheader {&lt;br /&gt;
    height:500px;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  #megaheader-short {&lt;br /&gt;
  	height:200px;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (max-width:767px) {&lt;br /&gt;
  #megaheader {&lt;br /&gt;
     height:auto;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#megaheader img {&lt;br /&gt;
  -moz-transition: opacity 2s; /* Firefox 4 */&lt;br /&gt;
  -webkit-transition: opacity 2s; /* Safari and Chrome */&lt;br /&gt;
  -o-transition: opacity 2s;&lt;br /&gt;
  transition: opacity 2s;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Round button formatting */&lt;br /&gt;
&lt;br /&gt;
.roundbutton {&lt;br /&gt;
    display:inline-block; border-radius:50%; color:#ffffff; width:54px; height:54px; padding:12px; margin-right:0.5em; margin-bottom:0.5em; text-align:center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.roundbutton-large {&lt;br /&gt;
    display:inline-block; border-radius:50%; color:#ffffff; width:68px; height:68px; padding:15px; margin-right:0.5em; margin-bottom:0.5em; text-align:center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Copied from Wikivoyage for scalable-width images */&lt;br /&gt;
&lt;br /&gt;
@media screen and (max-width:767px) {&lt;br /&gt;
  .banner-image {&lt;br /&gt;
    position: relative;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    max-width: 1125px; &lt;br /&gt;
    width: 100%;&lt;br /&gt;
    height: auto;&lt;br /&gt;
    margin-bottom: .6em;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding-left: 0 !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image img {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    height: auto;&lt;br /&gt;
    width: auto\9;&lt;br /&gt;
    margin:0 auto;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (min-width:768px) {&lt;br /&gt;
  .banner-image {&lt;br /&gt;
    position: relative;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    max-width: 1125px; &lt;br /&gt;
    height: auto;&lt;br /&gt;
    margin-bottom: .6em;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image img {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    height: auto;&lt;br /&gt;
    width: auto\9;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-left {&lt;br /&gt;
    float: left !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-left img {&lt;br /&gt;
    float: left !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-right {&lt;br /&gt;
    float: right !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-right img {&lt;br /&gt;
    float: right !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-none {&lt;br /&gt;
    float: none !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-none img {&lt;br /&gt;
    float: none !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-center {&lt;br /&gt;
    padding-left: none !important;&lt;br /&gt;
    float: none !important;&lt;br /&gt;
    margin-left: auto !important;&lt;br /&gt;
    margin-right: auto !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-center img {&lt;br /&gt;
    float: none !important;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (max-width:767px) {&lt;br /&gt;
	.no-narrow {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media screen and (min-width:768px) {&lt;br /&gt;
	.narrow-only {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Style for horizontal lists (separator following item).&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/Horizontal_lists&lt;br /&gt;
 * @revision 7 (2015-11-12)&lt;br /&gt;
 * @author [[User:Edokter]]&lt;br /&gt;
 */&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;&lt;br /&gt;
	display: inline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.nonumtoc .tocnumber {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.nonumtoc #toc ul,&lt;br /&gt;
.nonumtoc .toc ul {&lt;br /&gt;
	line-height: 1.5em;&lt;br /&gt;
	list-style: none none;&lt;br /&gt;
	margin: .3em 0 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hlist.nonumtoc #toc ul ul,&lt;br /&gt;
.hlist.nonumtoc .toc ul ul {&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	margin: 0;&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, .hlist dl ol, .hlist dl ul,&lt;br /&gt;
.hlist ol dl, .hlist ol ol, .hlist ol ul,&lt;br /&gt;
.hlist ul dl, .hlist ul ol, .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, .hlist dd dt:first-child:before, .hlist dd li:first-child:before,&lt;br /&gt;
.hlist dt dd:first-child:before, .hlist dt dt:first-child:before, .hlist dt li:first-child:before,&lt;br /&gt;
.hlist li dd:first-child:before, .hlist li dt:first-child:before, .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, .hlist dd dt:last-child:after, .hlist dd li:last-child:after,&lt;br /&gt;
.hlist dt dd:last-child:after, .hlist dt dt:last-child:after, .hlist dt li:last-child:after,&lt;br /&gt;
.hlist li dd:last-child:after, .hlist li dt:last-child:after, .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; &amp;quot;;&lt;br /&gt;
	white-space: nowrap;&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; &amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ----------------------------------------------&lt;br /&gt;
 * Generated by Animista on 2021-9-30 18:30:28&lt;br /&gt;
 * Licensed under FreeBSD License.&lt;br /&gt;
 * See http://animista.net/license for more info. &lt;br /&gt;
 * w: http://animista.net, t: @cssanimista&lt;br /&gt;
 * ---------------------------------------------- */&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 * animation bounce-in-top&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
.bounce-in-top {&lt;br /&gt;
	-webkit-animation: bounce-in-top 1.1s 1s both;&lt;br /&gt;
	        animation: bounce-in-top 1.1s 1s both;&lt;br /&gt;
}&lt;br /&gt;
@-webkit-keyframes bounce-in-top {&lt;br /&gt;
  0% {&lt;br /&gt;
    -webkit-transform: translateY(-500px);&lt;br /&gt;
            transform: translateY(-500px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
  }&lt;br /&gt;
  38% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
  }&lt;br /&gt;
  55% {&lt;br /&gt;
    -webkit-transform: translateY(-65px);&lt;br /&gt;
            transform: translateY(-65px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
  }&lt;br /&gt;
  72% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
  }&lt;br /&gt;
  81% {&lt;br /&gt;
    -webkit-transform: translateY(-28px);&lt;br /&gt;
            transform: translateY(-28px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
  }&lt;br /&gt;
  90% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
  }&lt;br /&gt;
  95% {&lt;br /&gt;
    -webkit-transform: translateY(-8px);&lt;br /&gt;
            transform: translateY(-8px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
  }&lt;br /&gt;
  100% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
@keyframes bounce-in-top {&lt;br /&gt;
  0% {&lt;br /&gt;
    -webkit-transform: translateY(-500px);&lt;br /&gt;
            transform: translateY(-500px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
  }&lt;br /&gt;
  38% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
  }&lt;br /&gt;
  55% {&lt;br /&gt;
    -webkit-transform: translateY(-65px);&lt;br /&gt;
            transform: translateY(-65px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
  }&lt;br /&gt;
  72% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
  }&lt;br /&gt;
  81% {&lt;br /&gt;
    -webkit-transform: translateY(-28px);&lt;br /&gt;
            transform: translateY(-28px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
  }&lt;br /&gt;
  90% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
  }&lt;br /&gt;
  95% {&lt;br /&gt;
    -webkit-transform: translateY(-8px);&lt;br /&gt;
            transform: translateY(-8px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
  }&lt;br /&gt;
  100% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 * animation tracking-in-expand&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
.tracking-in-expand {&lt;br /&gt;
	-webkit-animation: tracking-in-expand 0.7s cubic-bezier(0.215, 0.610, 0.355, 1.000) both;&lt;br /&gt;
	        animation: tracking-in-expand 0.7s cubic-bezier(0.215, 0.610, 0.355, 1.000) both;&lt;br /&gt;
}&lt;br /&gt;
@-webkit-keyframes tracking-in-expand {&lt;br /&gt;
  0% {&lt;br /&gt;
    letter-spacing: -0.5em;&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
  }&lt;br /&gt;
  40% {&lt;br /&gt;
    opacity: 0.6;&lt;br /&gt;
  }&lt;br /&gt;
  100% {&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
@keyframes tracking-in-expand {&lt;br /&gt;
  0% {&lt;br /&gt;
    letter-spacing: -0.5em;&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
  }&lt;br /&gt;
  40% {&lt;br /&gt;
    opacity: 0.6;&lt;br /&gt;
  }&lt;br /&gt;
  100% {&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 * animation text-shadow-pop-bl&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
.text-shadow-pop-bl {&lt;br /&gt;
	-webkit-animation: text-shadow-pop-bl 1s both;&lt;br /&gt;
	        animation: text-shadow-pop-bl 1s both;&lt;br /&gt;
}&lt;br /&gt;
@-webkit-keyframes text-shadow-pop-bl {&lt;br /&gt;
  0% {&lt;br /&gt;
    text-shadow: 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555;&lt;br /&gt;
    -webkit-transform: translateX(0) translateY(0);&lt;br /&gt;
            transform: translateX(0) translateY(0);&lt;br /&gt;
  }&lt;br /&gt;
  100% {&lt;br /&gt;
    text-shadow: -1px 1px #555555, -2px 2px #555555, -3px 3px #555555, -4px 4px #555555, -5px 5px #555555, -6px 6px #555555, -7px 7px #555555, -8px 8px #555555;&lt;br /&gt;
    -webkit-transform: translateX(8px) translateY(-8px);&lt;br /&gt;
            transform: translateX(8px) translateY(-8px);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
@keyframes text-shadow-pop-bl {&lt;br /&gt;
  0% {&lt;br /&gt;
    text-shadow: 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555;&lt;br /&gt;
    -webkit-transform: translateX(0) translateY(0);&lt;br /&gt;
            transform: translateX(0) translateY(0);&lt;br /&gt;
  }&lt;br /&gt;
  100% {&lt;br /&gt;
    text-shadow: -1px 1px #555555, -2px 2px #555555, -3px 3px #555555, -4px 4px #555555, -5px 5px #555555, -6px 6px #555555, -7px 7px #555555, -8px 8px #555555;&lt;br /&gt;
    -webkit-transform: translateX(8px) translateY(-8px);&lt;br /&gt;
            transform: translateX(8px) translateY(-8px);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 * Fondos con imágenes molonas&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
.bgp {&lt;br /&gt;
align-items: center;&lt;br /&gt;
background-image: url(https://upload.wikimedia.org/wikipedia/commons/e/e3/Wikipedia_logo_letters_banner.svg);&lt;br /&gt;
background-position: center;&lt;br /&gt;
background-repeat: no-repeat;&lt;br /&gt;
background-size: cover;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bglogo {&lt;br /&gt;
align-items: center;&lt;br /&gt;
background-image: url(https://upload.wikimedia.org/wikipedia/commons/2/23/Wikisp-logo-icon.svg);&lt;br /&gt;
background-position: right center;&lt;br /&gt;
background-origin: padding-box;&lt;br /&gt;
background-repeat: no-repeat;&lt;br /&gt;
background-size: 50%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* remove border from language bar */&lt;br /&gt;
.mw-pt-languages {&lt;br /&gt;
	border: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Ocultar título, categorías y fecha de la última edición en la Portada */&lt;br /&gt;
body.page-Página_principal h1.firstHeading,&lt;br /&gt;
body.page-Página_principal h1.pagetitle,&lt;br /&gt;
body.page-Página_principal p.subtitle,&lt;br /&gt;
body.page-Página_principal #catlinks,&lt;br /&gt;
body.page-Página_principal #footer-info-lastmod {&lt;br /&gt;
    display:none;&lt;br /&gt;
}&lt;br /&gt;
/* Hide title and edit tools on main page */&lt;br /&gt;
.page-Página_principal .mw-side,&lt;br /&gt;
.page-Página_principal #siteSub {&lt;br /&gt;
	display: none!important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Force override until skin is updated */&lt;br /&gt;
.skin-citizen blockquote {&lt;br /&gt;
	margin: 0.8rem 20px;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=MediaWiki:Common.css&amp;diff=7497</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=MediaWiki:Common.css&amp;diff=7497"/>
		<updated>2023-11-01T22:25:55Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;body, #firstHeading, h1, h2, h3, h4, h5,&lt;br /&gt;
.mw-body h1, .mw-body h2, .mw-body #firstHeading, &lt;br /&gt;
body em, body i, body strong {font-family: &#039;Open Sans&#039;, sans-serif;}&lt;br /&gt;
body.page-Página_principal.action-view h1.firstHeading, body.page-Página_principal.action-submit h1.firstHeading { display: none; }&lt;br /&gt;
&lt;br /&gt;
li#footer-info-lastmod,&lt;br /&gt;
li#footer-info-viewcount,&lt;br /&gt;
li#footer-places-about,&lt;br /&gt;
li#footer-places-disclaimer {&lt;br /&gt;
  display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-navigation h5 {&lt;br /&gt;
  display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.nowrap { &lt;br /&gt;
    white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.toggle-head {&lt;br /&gt;
  background:url(//upload.wikimedia.org/wikipedia/commons/thumb/1/1c/HW_open_arrow.svg/10px-HW_open_arrow.svg.png) no-repeat 0% center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.toggle-head:hover {&lt;br /&gt;
  text-decoration:underline;&lt;br /&gt;
  cursor:pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.redirect-in-category, .allpagesredirect a {&lt;br /&gt;
  color: gray;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.nodisplay {&lt;br /&gt;
  display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Ambox: Noticias y páginas de proyecto */&lt;br /&gt;
&lt;br /&gt;
table.ambox {&lt;br /&gt;
  width: 80%; &lt;br /&gt;
  margin: 0 auto; &lt;br /&gt;
  border-collapse: collapse; &lt;br /&gt;
  background: #f8fcff; &lt;br /&gt;
  border: 1px solid #aaa; &lt;br /&gt;
  border-left: 15px solid #39f;       /* Barra azul predeterminada */&lt;br /&gt;
}&lt;br /&gt;
table.ambox th, table.ambox td {      /* Celda(s) de mensajes */&lt;br /&gt;
  padding: 0.25em 0.5em;              /* 0.5em left/right */&lt;br /&gt;
}&lt;br /&gt;
table.ambox td.ambox-image {          /* Celda de img a la izquierda */&lt;br /&gt;
  width: 52px; &lt;br /&gt;
  padding: 2px 0px 2px 0.5em;         /* 0.5em left, 0px right */&lt;br /&gt;
  text-align: center; &lt;br /&gt;
}&lt;br /&gt;
table.ambox td.ambox-imageright {     /* Celda de img a la derecha */&lt;br /&gt;
  width: 52px; &lt;br /&gt;
  padding: 2px 0.5em 2px 0px;         /* 0px left, 0.5em right */&lt;br /&gt;
  text-align: center; &lt;br /&gt;
}&lt;br /&gt;
table.ambox-notice {&lt;br /&gt;
  border-left: 15px solid #0080FF;    /* Azul */&lt;br /&gt;
}&lt;br /&gt;
table.ambox-serious {&lt;br /&gt;
  border-left: 15px solid #C00;       /* Rojo */&lt;br /&gt;
}&lt;br /&gt;
table.ambox-content {&lt;br /&gt;
  border-left: 15px solid #F63;       /* Naranja */&lt;br /&gt;
}&lt;br /&gt;
table.ambox-style {&lt;br /&gt;
  border-left: 15px solid #FC3;       /* Amarillo */&lt;br /&gt;
}&lt;br /&gt;
table.ambox-merge {&lt;br /&gt;
  border-left: 15px solid #95B;       /* Purpura */&lt;br /&gt;
}&lt;br /&gt;
table.ambox-license {&lt;br /&gt;
  border-left: 15px solid #088A08;    /* Verde */&lt;br /&gt;
}&lt;br /&gt;
table.ambox-protection {&lt;br /&gt;
  border-left: 15px solid #BBA;       /* Gris */&lt;br /&gt;
}&lt;br /&gt;
/* Arrow button formatting */&lt;br /&gt;
&lt;br /&gt;
.arrowbutton {&lt;br /&gt;
	color:#ffffff;&lt;br /&gt;
	width:100px;&lt;br /&gt;
	padding:0.4em;&lt;br /&gt;
	line-height:1.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton::before {&lt;br /&gt;
	content:&amp;quot;⇒ &amp;quot;;&lt;br /&gt;
	font-weight:bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-red {&lt;br /&gt;
	background:#990000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-green {&lt;br /&gt;
	background:#339966;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-blue {&lt;br /&gt;
	background:#0063BF;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-gold {&lt;br /&gt;
	background:#E5B921;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-red:hover {&lt;br /&gt;
    background: #ffb3b3 !important;&lt;br /&gt;
    color: #000000 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-green:hover {&lt;br /&gt;
    background: #c6ecd9 !important;&lt;br /&gt;
    color: #000000 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-blue:hover {&lt;br /&gt;
    background: #b3daff !important;&lt;br /&gt;
    color: #000000 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.arrowbutton-gold:hover {&lt;br /&gt;
    background: #faefcb !important;&lt;br /&gt;
    color: #000000 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Cortesía de Platonides */&lt;br /&gt;
#p-navigation { display: block; }&lt;br /&gt;
nav.vector-menu-portal { display: none; }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* estilo de tablas */&lt;br /&gt;
&lt;br /&gt;
table.rowlines { &lt;br /&gt;
    border-collapse:collapse;&lt;br /&gt;
    border: 2px solid #BBBDBF;&lt;br /&gt;
    width:  100%;&lt;br /&gt;
    vertical-align: top;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.rowlines th {&lt;br /&gt;
    border-bottom: 1px solid #BBBDBF;&lt;br /&gt;
    border-top:    1px solid #BBBDBF;&lt;br /&gt;
    padding:       5px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.rowlines td {&lt;br /&gt;
    border-bottom: 1px dotted #BBBDBF;&lt;br /&gt;
    padding:       5px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
div.rowlines-wrapper {&lt;br /&gt;
    padding: 0 10px 0 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Header mega template */&lt;br /&gt;
&lt;br /&gt;
#megaheader {&lt;br /&gt;
  position:relative;&lt;br /&gt;
  padding-bottom:1em;&lt;br /&gt;
  border:none;&lt;br /&gt;
  margin-bottom:2em;&lt;br /&gt;
  overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (min-width:982px) {&lt;br /&gt;
  #megaheader {&lt;br /&gt;
    margin-top:-3em;&lt;br /&gt;
    margin-left:-1.5em;&lt;br /&gt;
    margin-right:-1.5em;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (min-width:768px) and (max-width:981px) {&lt;br /&gt;
  #megaheader {&lt;br /&gt;
    margin-top:-2.7em;&lt;br /&gt;
    margin-left:-1em;&lt;br /&gt;
    margin-right:-1em;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (max-width:767px) {&lt;br /&gt;
  #megaheader {&lt;br /&gt;
    margin-top:-3em;&lt;br /&gt;
    margin-left:-1.15em;&lt;br /&gt;
    margin-right:-1.15em;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
@media screen and (min-width:768px) {&lt;br /&gt;
  #megaheader {&lt;br /&gt;
    height:500px;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  #megaheader-short {&lt;br /&gt;
  	height:200px;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (max-width:767px) {&lt;br /&gt;
  #megaheader {&lt;br /&gt;
     height:auto;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#megaheader img {&lt;br /&gt;
  -moz-transition: opacity 2s; /* Firefox 4 */&lt;br /&gt;
  -webkit-transition: opacity 2s; /* Safari and Chrome */&lt;br /&gt;
  -o-transition: opacity 2s;&lt;br /&gt;
  transition: opacity 2s;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Round button formatting */&lt;br /&gt;
&lt;br /&gt;
.roundbutton {&lt;br /&gt;
    display:inline-block; border-radius:50%; color:#ffffff; width:54px; height:54px; padding:12px; margin-right:0.5em; margin-bottom:0.5em; text-align:center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.roundbutton-large {&lt;br /&gt;
    display:inline-block; border-radius:50%; color:#ffffff; width:68px; height:68px; padding:15px; margin-right:0.5em; margin-bottom:0.5em; text-align:center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Copied from Wikivoyage for scalable-width images */&lt;br /&gt;
&lt;br /&gt;
@media screen and (max-width:767px) {&lt;br /&gt;
  .banner-image {&lt;br /&gt;
    position: relative;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    max-width: 1125px; &lt;br /&gt;
    width: 100%;&lt;br /&gt;
    height: auto;&lt;br /&gt;
    margin-bottom: .6em;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding-left: 0 !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image img {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    height: auto;&lt;br /&gt;
    width: auto\9;&lt;br /&gt;
    margin:0 auto;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (min-width:768px) {&lt;br /&gt;
  .banner-image {&lt;br /&gt;
    position: relative;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    max-width: 1125px; &lt;br /&gt;
    height: auto;&lt;br /&gt;
    margin-bottom: .6em;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image img {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    height: auto;&lt;br /&gt;
    width: auto\9;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-left {&lt;br /&gt;
    float: left !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-left img {&lt;br /&gt;
    float: left !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-right {&lt;br /&gt;
    float: right !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-right img {&lt;br /&gt;
    float: right !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-none {&lt;br /&gt;
    float: none !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-none img {&lt;br /&gt;
    float: none !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-center {&lt;br /&gt;
    padding-left: none !important;&lt;br /&gt;
    float: none !important;&lt;br /&gt;
    margin-left: auto !important;&lt;br /&gt;
    margin-right: auto !important;&lt;br /&gt;
  }&lt;br /&gt;
  .banner-image-center img {&lt;br /&gt;
    float: none !important;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (max-width:767px) {&lt;br /&gt;
	.no-narrow {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media screen and (min-width:768px) {&lt;br /&gt;
	.narrow-only {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Style for horizontal lists (separator following item).&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/Horizontal_lists&lt;br /&gt;
 * @revision 7 (2015-11-12)&lt;br /&gt;
 * @author [[User:Edokter]]&lt;br /&gt;
 */&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;&lt;br /&gt;
	display: inline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.nonumtoc .tocnumber {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.nonumtoc #toc ul,&lt;br /&gt;
.nonumtoc .toc ul {&lt;br /&gt;
	line-height: 1.5em;&lt;br /&gt;
	list-style: none none;&lt;br /&gt;
	margin: .3em 0 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hlist.nonumtoc #toc ul ul,&lt;br /&gt;
.hlist.nonumtoc .toc ul ul {&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	margin: 0;&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, .hlist dl ol, .hlist dl ul,&lt;br /&gt;
.hlist ol dl, .hlist ol ol, .hlist ol ul,&lt;br /&gt;
.hlist ul dl, .hlist ul ol, .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, .hlist dd dt:first-child:before, .hlist dd li:first-child:before,&lt;br /&gt;
.hlist dt dd:first-child:before, .hlist dt dt:first-child:before, .hlist dt li:first-child:before,&lt;br /&gt;
.hlist li dd:first-child:before, .hlist li dt:first-child:before, .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, .hlist dd dt:last-child:after, .hlist dd li:last-child:after,&lt;br /&gt;
.hlist dt dd:last-child:after, .hlist dt dt:last-child:after, .hlist dt li:last-child:after,&lt;br /&gt;
.hlist li dd:last-child:after, .hlist li dt:last-child:after, .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; &amp;quot;;&lt;br /&gt;
	white-space: nowrap;&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; &amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ----------------------------------------------&lt;br /&gt;
 * Generated by Animista on 2021-9-30 18:30:28&lt;br /&gt;
 * Licensed under FreeBSD License.&lt;br /&gt;
 * See http://animista.net/license for more info. &lt;br /&gt;
 * w: http://animista.net, t: @cssanimista&lt;br /&gt;
 * ---------------------------------------------- */&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 * animation bounce-in-top&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
.bounce-in-top {&lt;br /&gt;
	-webkit-animation: bounce-in-top 1.1s 1s both;&lt;br /&gt;
	        animation: bounce-in-top 1.1s 1s both;&lt;br /&gt;
}&lt;br /&gt;
@-webkit-keyframes bounce-in-top {&lt;br /&gt;
  0% {&lt;br /&gt;
    -webkit-transform: translateY(-500px);&lt;br /&gt;
            transform: translateY(-500px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
  }&lt;br /&gt;
  38% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
  }&lt;br /&gt;
  55% {&lt;br /&gt;
    -webkit-transform: translateY(-65px);&lt;br /&gt;
            transform: translateY(-65px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
  }&lt;br /&gt;
  72% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
  }&lt;br /&gt;
  81% {&lt;br /&gt;
    -webkit-transform: translateY(-28px);&lt;br /&gt;
            transform: translateY(-28px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
  }&lt;br /&gt;
  90% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
  }&lt;br /&gt;
  95% {&lt;br /&gt;
    -webkit-transform: translateY(-8px);&lt;br /&gt;
            transform: translateY(-8px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
  }&lt;br /&gt;
  100% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
@keyframes bounce-in-top {&lt;br /&gt;
  0% {&lt;br /&gt;
    -webkit-transform: translateY(-500px);&lt;br /&gt;
            transform: translateY(-500px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
  }&lt;br /&gt;
  38% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
  }&lt;br /&gt;
  55% {&lt;br /&gt;
    -webkit-transform: translateY(-65px);&lt;br /&gt;
            transform: translateY(-65px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
  }&lt;br /&gt;
  72% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
  }&lt;br /&gt;
  81% {&lt;br /&gt;
    -webkit-transform: translateY(-28px);&lt;br /&gt;
            transform: translateY(-28px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
  }&lt;br /&gt;
  90% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
  }&lt;br /&gt;
  95% {&lt;br /&gt;
    -webkit-transform: translateY(-8px);&lt;br /&gt;
            transform: translateY(-8px);&lt;br /&gt;
    -webkit-animation-timing-function: ease-in;&lt;br /&gt;
            animation-timing-function: ease-in;&lt;br /&gt;
  }&lt;br /&gt;
  100% {&lt;br /&gt;
    -webkit-transform: translateY(0);&lt;br /&gt;
            transform: translateY(0);&lt;br /&gt;
    -webkit-animation-timing-function: ease-out;&lt;br /&gt;
            animation-timing-function: ease-out;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 * animation tracking-in-expand&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
.tracking-in-expand {&lt;br /&gt;
	-webkit-animation: tracking-in-expand 0.7s cubic-bezier(0.215, 0.610, 0.355, 1.000) both;&lt;br /&gt;
	        animation: tracking-in-expand 0.7s cubic-bezier(0.215, 0.610, 0.355, 1.000) both;&lt;br /&gt;
}&lt;br /&gt;
@-webkit-keyframes tracking-in-expand {&lt;br /&gt;
  0% {&lt;br /&gt;
    letter-spacing: -0.5em;&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
  }&lt;br /&gt;
  40% {&lt;br /&gt;
    opacity: 0.6;&lt;br /&gt;
  }&lt;br /&gt;
  100% {&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
@keyframes tracking-in-expand {&lt;br /&gt;
  0% {&lt;br /&gt;
    letter-spacing: -0.5em;&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
  }&lt;br /&gt;
  40% {&lt;br /&gt;
    opacity: 0.6;&lt;br /&gt;
  }&lt;br /&gt;
  100% {&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 * animation text-shadow-pop-bl&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
.text-shadow-pop-bl {&lt;br /&gt;
	-webkit-animation: text-shadow-pop-bl 1s both;&lt;br /&gt;
	        animation: text-shadow-pop-bl 1s both;&lt;br /&gt;
}&lt;br /&gt;
@-webkit-keyframes text-shadow-pop-bl {&lt;br /&gt;
  0% {&lt;br /&gt;
    text-shadow: 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555;&lt;br /&gt;
    -webkit-transform: translateX(0) translateY(0);&lt;br /&gt;
            transform: translateX(0) translateY(0);&lt;br /&gt;
  }&lt;br /&gt;
  100% {&lt;br /&gt;
    text-shadow: -1px 1px #555555, -2px 2px #555555, -3px 3px #555555, -4px 4px #555555, -5px 5px #555555, -6px 6px #555555, -7px 7px #555555, -8px 8px #555555;&lt;br /&gt;
    -webkit-transform: translateX(8px) translateY(-8px);&lt;br /&gt;
            transform: translateX(8px) translateY(-8px);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
@keyframes text-shadow-pop-bl {&lt;br /&gt;
  0% {&lt;br /&gt;
    text-shadow: 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555, 0 0 #555555;&lt;br /&gt;
    -webkit-transform: translateX(0) translateY(0);&lt;br /&gt;
            transform: translateX(0) translateY(0);&lt;br /&gt;
  }&lt;br /&gt;
  100% {&lt;br /&gt;
    text-shadow: -1px 1px #555555, -2px 2px #555555, -3px 3px #555555, -4px 4px #555555, -5px 5px #555555, -6px 6px #555555, -7px 7px #555555, -8px 8px #555555;&lt;br /&gt;
    -webkit-transform: translateX(8px) translateY(-8px);&lt;br /&gt;
            transform: translateX(8px) translateY(-8px);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 * Fondos con imágenes molonas&lt;br /&gt;
 * ----------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
.bgp {&lt;br /&gt;
align-items: center;&lt;br /&gt;
background-image: url(https://upload.wikimedia.org/wikipedia/commons/e/e3/Wikipedia_logo_letters_banner.svg);&lt;br /&gt;
background-position: center;&lt;br /&gt;
background-repeat: no-repeat;&lt;br /&gt;
background-size: cover;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bglogo {&lt;br /&gt;
align-items: center;&lt;br /&gt;
background-image: url(https://upload.wikimedia.org/wikipedia/commons/2/23/Wikisp-logo-icon.svg);&lt;br /&gt;
background-position: right center;&lt;br /&gt;
background-origin: padding-box;&lt;br /&gt;
background-repeat: no-repeat;&lt;br /&gt;
background-size: 50%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* remove border from language bar */&lt;br /&gt;
.mw-pt-languages {&lt;br /&gt;
	border: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Ocultar título, categorías y fecha de la última edición en la Portada */&lt;br /&gt;
body.page-Página_principal h1.firstHeading,&lt;br /&gt;
body.page-Página_principal h1.pagetitle,&lt;br /&gt;
body.page-Página_principal p.subtitle,&lt;br /&gt;
body.page-Página_principal #catlinks,&lt;br /&gt;
body.page-Página_principal #footer-info-lastmod {&lt;br /&gt;
    display:none;&lt;br /&gt;
}&lt;br /&gt;
/* Hide title and edit tools on main page */&lt;br /&gt;
.page-Página_principal .mw-side,&lt;br /&gt;
.page-Página_principal #siteSub {&lt;br /&gt;
	display: none!important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Force override until skin is updated */&lt;br /&gt;
.skin-citizen blockquote {&lt;br /&gt;
	margin: 0.8rem 20px;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Message Boxes */&lt;br /&gt;
.mbox {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	position: relative;&lt;br /&gt;
	background-color: var(--theme-page-background-color--secondary);&lt;br /&gt;
	border: 1px solid;&lt;br /&gt;
	border-left-width: 8px;&lt;br /&gt;
	border-color: var(--blurple);&lt;br /&gt;
	border-radius: 3px;&lt;br /&gt;
	margin-bottom: 5px;&lt;br /&gt;
	min-height: 32px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox.mbox-type-warn {&lt;br /&gt;
	border-color: var(--yellow);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox.mbox-type-red {&lt;br /&gt;
	border-color: var(--red);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content {&lt;br /&gt;
	display: table;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	padding: 8px 15px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__image {&lt;br /&gt;
	display: table-cell;&lt;br /&gt;
	width: 40px;&lt;br /&gt;
	height: 100%;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
	padding-right: 15px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__wrapper {&lt;br /&gt;
	display: table-cell;&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__header {&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__text {&lt;br /&gt;
	display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__text__comment {&lt;br /&gt;
	font-size: small;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__aside {&lt;br /&gt;
	display: table-cell;&lt;br /&gt;
	width: 100px;&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding-left: 15px;&lt;br /&gt;
	border-left: 1px solid var(--theme-border-color);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__close {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=MediaWiki:Citizen.css&amp;diff=7496</id>
		<title>MediaWiki:Citizen.css</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=MediaWiki:Citizen.css&amp;diff=7496"/>
		<updated>2023-11-01T22:24:24Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* All CSS here will be loaded for users of the Citizen skin */&lt;br /&gt;
/* Courtesy of starcitizen.tools */&lt;br /&gt;
:root {&lt;br /&gt;
	--color-primary__h: 205;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Adjust contrast since we changed primary color */&lt;br /&gt;
:root.skin-citizen-dark {&lt;br /&gt;
	--color-primary__l: 56%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Align icon opacity with skin default */&lt;br /&gt;
.mw-logo-icon {&lt;br /&gt;
	opacity: var( --opacity-icon-base );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Footer icons&lt;br /&gt;
 * We use custom footer icons so we need to fine tune it&lt;br /&gt;
&lt;br /&gt;
/* More space between icons&lt;br /&gt;
#footer-icons ul {&lt;br /&gt;
	gap: var( --space-md );&lt;br /&gt;
}&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
/* Background responsive para las plantillas */&lt;br /&gt;
&lt;br /&gt;
.bgesp {&lt;br /&gt;
	background-color:#f9fafb;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-citizen-dark .bgesp {&lt;br /&gt;
	background-color: #1d2830;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Color de letra Púrpura para las plantillas */&lt;br /&gt;
&lt;br /&gt;
.purpura {&lt;br /&gt;
	color:#520044;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-citizen-dark .purpura {&lt;br /&gt;
	color: #df00b9;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Message Boxes */&lt;br /&gt;
.mbox {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	position: relative;&lt;br /&gt;
	background-color: var(--theme-page-background-color--secondary);&lt;br /&gt;
	border: 1px solid;&lt;br /&gt;
	border-left-width: 8px;&lt;br /&gt;
	border-color: var(--blurple);&lt;br /&gt;
	border-radius: 3px;&lt;br /&gt;
	margin-bottom: 5px;&lt;br /&gt;
	min-height: 32px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox.mbox-type-warn {&lt;br /&gt;
	border-color: var(--yellow);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox.mbox-type-red {&lt;br /&gt;
	border-color: var(--red);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content {&lt;br /&gt;
	display: table;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	padding: 8px 15px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__image {&lt;br /&gt;
	display: table-cell;&lt;br /&gt;
	width: 40px;&lt;br /&gt;
	height: 100%;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
	padding-right: 15px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__wrapper {&lt;br /&gt;
	display: table-cell;&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__header {&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__text {&lt;br /&gt;
	display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__text__comment {&lt;br /&gt;
	font-size: small;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__content__aside {&lt;br /&gt;
	display: table-cell;&lt;br /&gt;
	width: 100px;&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding-left: 15px;&lt;br /&gt;
	border-left: 1px solid var(--theme-border-color);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox__close {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=M%C3%B3dulo:I18n&amp;diff=7495</id>
		<title>Módulo:I18n</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=M%C3%B3dulo:I18n&amp;diff=7495"/>
		<updated>2023-11-01T22:15:47Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: Página creada con «-- &amp;lt;nowiki&amp;gt; return {     [&amp;quot;_metadata&amp;quot;] = {         [&amp;quot;order&amp;quot;] = {             &amp;quot;aside&amp;quot;,             &amp;quot;bgcolor&amp;quot;,             &amp;quot;bordercolor&amp;quot;,             &amp;quot;class&amp;quot;,             &amp;quot;collapsed&amp;quot;,             &amp;quot;comment&amp;quot;,             &amp;quot;dismiss&amp;quot;,             &amp;quot;header&amp;quot;,             &amp;quot;id&amp;quot;,             &amp;quot;image&amp;quot;,             &amp;quot;imagelink&amp;quot;,             &amp;quot;imagewidth&amp;quot;,             &amp;quot;style&amp;quot;,             &amp;quot;text&amp;quot;,             &amp;quot;type&amp;quot;         }     },     [&amp;quot;en&amp;quot;] = {         [&amp;quot;aside&amp;quot;] = &amp;quot;aside&amp;quot;,         [&amp;quot;b…»&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;aside&amp;quot;,&lt;br /&gt;
            &amp;quot;bgcolor&amp;quot;,&lt;br /&gt;
            &amp;quot;bordercolor&amp;quot;,&lt;br /&gt;
            &amp;quot;class&amp;quot;,&lt;br /&gt;
            &amp;quot;collapsed&amp;quot;,&lt;br /&gt;
            &amp;quot;comment&amp;quot;,&lt;br /&gt;
            &amp;quot;dismiss&amp;quot;,&lt;br /&gt;
            &amp;quot;header&amp;quot;,&lt;br /&gt;
            &amp;quot;id&amp;quot;,&lt;br /&gt;
            &amp;quot;image&amp;quot;,&lt;br /&gt;
            &amp;quot;imagelink&amp;quot;,&lt;br /&gt;
            &amp;quot;imagewidth&amp;quot;,&lt;br /&gt;
            &amp;quot;style&amp;quot;,&lt;br /&gt;
            &amp;quot;text&amp;quot;,&lt;br /&gt;
            &amp;quot;type&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;en&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;aside&amp;quot;] = &amp;quot;aside&amp;quot;,&lt;br /&gt;
        [&amp;quot;bgcolor&amp;quot;] = &amp;quot;bgcolor&amp;quot;,&lt;br /&gt;
        [&amp;quot;bordercolor&amp;quot;] = &amp;quot;bordercolor&amp;quot;,&lt;br /&gt;
        [&amp;quot;class&amp;quot;] = &amp;quot;class&amp;quot;,&lt;br /&gt;
        [&amp;quot;collapsed&amp;quot;] = &amp;quot;collapsed&amp;quot;,&lt;br /&gt;
        [&amp;quot;comment&amp;quot;] = &amp;quot;comment&amp;quot;,&lt;br /&gt;
        [&amp;quot;dismiss&amp;quot;] = &amp;quot;Dismiss&amp;quot;,&lt;br /&gt;
        [&amp;quot;header&amp;quot;] = &amp;quot;header&amp;quot;,&lt;br /&gt;
        [&amp;quot;id&amp;quot;] = &amp;quot;id&amp;quot;,&lt;br /&gt;
        [&amp;quot;image&amp;quot;] = &amp;quot;image&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagelink&amp;quot;] = &amp;quot;imagelink&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagewidth&amp;quot;] = &amp;quot;imagewidth&amp;quot;,&lt;br /&gt;
        [&amp;quot;style&amp;quot;] = &amp;quot;style&amp;quot;,&lt;br /&gt;
        [&amp;quot;text&amp;quot;] = &amp;quot;text&amp;quot;,&lt;br /&gt;
        [&amp;quot;type&amp;quot;] = &amp;quot;type&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;de&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;aside&amp;quot;] = &amp;quot;nebenbemerkung&amp;quot;,&lt;br /&gt;
        [&amp;quot;bgcolor&amp;quot;] = &amp;quot;hintergrundfarbe&amp;quot;,&lt;br /&gt;
        [&amp;quot;bordercolor&amp;quot;] = &amp;quot;randfarbe&amp;quot;,&lt;br /&gt;
        [&amp;quot;class&amp;quot;] = &amp;quot;klasse&amp;quot;,&lt;br /&gt;
        [&amp;quot;collapsed&amp;quot;] = &amp;quot;eingeklappt&amp;quot;,&lt;br /&gt;
        [&amp;quot;comment&amp;quot;] = &amp;quot;Kommentar&amp;quot;,&lt;br /&gt;
        [&amp;quot;dismiss&amp;quot;] = &amp;quot;Verstecken&amp;quot;,&lt;br /&gt;
        [&amp;quot;header&amp;quot;] = &amp;quot;Titel&amp;quot;,&lt;br /&gt;
        [&amp;quot;id&amp;quot;] = &amp;quot;id&amp;quot;,&lt;br /&gt;
        [&amp;quot;image&amp;quot;] = &amp;quot;bild&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagelink&amp;quot;] = &amp;quot;bildlink&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagewidth&amp;quot;] = &amp;quot;bildbreite&amp;quot;,&lt;br /&gt;
        [&amp;quot;style&amp;quot;] = &amp;quot;style&amp;quot;,&lt;br /&gt;
        [&amp;quot;text&amp;quot;] = &amp;quot;Text&amp;quot;,&lt;br /&gt;
        [&amp;quot;type&amp;quot;] = &amp;quot;typ&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;et&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;aside&amp;quot;] = &amp;quot;kõrval&amp;quot;,&lt;br /&gt;
        [&amp;quot;bgcolor&amp;quot;] = &amp;quot;taustavärv&amp;quot;,&lt;br /&gt;
        [&amp;quot;bordercolor&amp;quot;] = &amp;quot;piirivärv&amp;quot;,&lt;br /&gt;
        [&amp;quot;class&amp;quot;] = &amp;quot;klass&amp;quot;,&lt;br /&gt;
        [&amp;quot;comment&amp;quot;] = &amp;quot;kommentaar&amp;quot;,&lt;br /&gt;
        [&amp;quot;dismiss&amp;quot;] = &amp;quot;Loobu&amp;quot;,&lt;br /&gt;
        [&amp;quot;id&amp;quot;] = &amp;quot;id&amp;quot;,&lt;br /&gt;
        [&amp;quot;image&amp;quot;] = &amp;quot;pilt&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagelink&amp;quot;] = &amp;quot;pildilink&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagewidth&amp;quot;] = &amp;quot;pildisuurus&amp;quot;,&lt;br /&gt;
        [&amp;quot;style&amp;quot;] = &amp;quot;stiil&amp;quot;,&lt;br /&gt;
        [&amp;quot;text&amp;quot;] = &amp;quot;tekst&amp;quot;,&lt;br /&gt;
        [&amp;quot;type&amp;quot;] = &amp;quot;tüüp&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;hi&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;aside&amp;quot;] = &amp;quot;अलग&amp;quot;,&lt;br /&gt;
        [&amp;quot;bgcolor&amp;quot;] = &amp;quot;bgcolor&amp;quot;,&lt;br /&gt;
        [&amp;quot;bordercolor&amp;quot;] = &amp;quot;bordercolour&amp;quot;,&lt;br /&gt;
        [&amp;quot;class&amp;quot;] = &amp;quot;क्लास&amp;quot;,&lt;br /&gt;
        [&amp;quot;collapsed&amp;quot;] = &amp;quot;छोटा&amp;quot;,&lt;br /&gt;
        [&amp;quot;comment&amp;quot;] = &amp;quot;टिप्पणी&amp;quot;,&lt;br /&gt;
        [&amp;quot;dismiss&amp;quot;] = &amp;quot;हटाएँ&amp;quot;,&lt;br /&gt;
        [&amp;quot;header&amp;quot;] = &amp;quot;हैडर&amp;quot;,&lt;br /&gt;
        [&amp;quot;id&amp;quot;] = &amp;quot;id&amp;quot;,&lt;br /&gt;
        [&amp;quot;image&amp;quot;] = &amp;quot;चित्र&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagelink&amp;quot;] = &amp;quot;imagelink&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagewidth&amp;quot;] = &amp;quot;imagewidth&amp;quot;,&lt;br /&gt;
        [&amp;quot;style&amp;quot;] = &amp;quot;स्टाइल&amp;quot;,&lt;br /&gt;
        [&amp;quot;text&amp;quot;] = &amp;quot;टेक्स्ट&amp;quot;,&lt;br /&gt;
        [&amp;quot;type&amp;quot;] = &amp;quot;प्रकार&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ja&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;aside&amp;quot;] = &amp;quot;アサイド&amp;quot;,&lt;br /&gt;
        [&amp;quot;bgcolor&amp;quot;] = &amp;quot;背景色&amp;quot;,&lt;br /&gt;
        [&amp;quot;bordercolor&amp;quot;] = &amp;quot;境界線の色&amp;quot;,&lt;br /&gt;
        [&amp;quot;class&amp;quot;] = &amp;quot;クラス&amp;quot;,&lt;br /&gt;
        [&amp;quot;collapsed&amp;quot;] = &amp;quot;折り畳む&amp;quot;,&lt;br /&gt;
        [&amp;quot;comment&amp;quot;] = &amp;quot;コメント&amp;quot;,&lt;br /&gt;
        [&amp;quot;dismiss&amp;quot;] = &amp;quot;後で見る&amp;quot;,&lt;br /&gt;
        [&amp;quot;header&amp;quot;] = &amp;quot;ヘッダー&amp;quot;,&lt;br /&gt;
        [&amp;quot;id&amp;quot;] = &amp;quot;ID&amp;quot;,&lt;br /&gt;
        [&amp;quot;image&amp;quot;] = &amp;quot;画像&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagelink&amp;quot;] = &amp;quot;画像リンク&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagewidth&amp;quot;] = &amp;quot;画像の幅&amp;quot;,&lt;br /&gt;
        [&amp;quot;style&amp;quot;] = &amp;quot;スタイル&amp;quot;,&lt;br /&gt;
        [&amp;quot;text&amp;quot;] = &amp;quot;テキスト&amp;quot;,&lt;br /&gt;
        [&amp;quot;type&amp;quot;] = &amp;quot;種類&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;pl&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;aside&amp;quot;] = &amp;quot;aside&amp;quot;,&lt;br /&gt;
        [&amp;quot;bgcolor&amp;quot;] = &amp;quot;tło&amp;quot;,&lt;br /&gt;
        [&amp;quot;bordercolor&amp;quot;] = &amp;quot;krawędź&amp;quot;,&lt;br /&gt;
        [&amp;quot;class&amp;quot;] = &amp;quot;klasa&amp;quot;,&lt;br /&gt;
        [&amp;quot;collapsed&amp;quot;] = &amp;quot;zwinięty&amp;quot;,&lt;br /&gt;
        [&amp;quot;comment&amp;quot;] = &amp;quot;komentarz&amp;quot;,&lt;br /&gt;
        [&amp;quot;dismiss&amp;quot;] = &amp;quot;Odrzuć&amp;quot;,&lt;br /&gt;
        [&amp;quot;header&amp;quot;] = &amp;quot;nagłówek&amp;quot;,&lt;br /&gt;
        [&amp;quot;id&amp;quot;] = &amp;quot;id&amp;quot;,&lt;br /&gt;
        [&amp;quot;image&amp;quot;] = &amp;quot;obraz&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagelink&amp;quot;] = &amp;quot;link obrazu&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagewidth&amp;quot;] = &amp;quot;szerokość obrazu&amp;quot;,&lt;br /&gt;
        [&amp;quot;style&amp;quot;] = &amp;quot;style&amp;quot;,&lt;br /&gt;
        [&amp;quot;text&amp;quot;] = &amp;quot;tekst&amp;quot;,&lt;br /&gt;
        [&amp;quot;type&amp;quot;] = &amp;quot;typ&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;pt-br&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;aside&amp;quot;] = &amp;quot;de lado&amp;quot;,&lt;br /&gt;
        [&amp;quot;bgcolor&amp;quot;] = &amp;quot;bgcolor&amp;quot;,&lt;br /&gt;
        [&amp;quot;bordercolor&amp;quot;] = &amp;quot;cor da borda&amp;quot;,&lt;br /&gt;
        [&amp;quot;class&amp;quot;] = &amp;quot;class&amp;quot;,&lt;br /&gt;
        [&amp;quot;collapsed&amp;quot;] = &amp;quot;recolher&amp;quot;,&lt;br /&gt;
        [&amp;quot;comment&amp;quot;] = &amp;quot;comentário&amp;quot;,&lt;br /&gt;
        [&amp;quot;dismiss&amp;quot;] = &amp;quot;Dispensar&amp;quot;,&lt;br /&gt;
        [&amp;quot;header&amp;quot;] = &amp;quot;cabeçalho&amp;quot;,&lt;br /&gt;
        [&amp;quot;id&amp;quot;] = &amp;quot;id&amp;quot;,&lt;br /&gt;
        [&amp;quot;image&amp;quot;] = &amp;quot;imagem&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagelink&amp;quot;] = &amp;quot;link imagem&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagewidth&amp;quot;] = &amp;quot;largura da imagem&amp;quot;,&lt;br /&gt;
        [&amp;quot;style&amp;quot;] = &amp;quot;estilo&amp;quot;,&lt;br /&gt;
        [&amp;quot;text&amp;quot;] = &amp;quot;texto&amp;quot;,&lt;br /&gt;
        [&amp;quot;type&amp;quot;] = &amp;quot;tipo&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ru&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;aside&amp;quot;] = &amp;quot;текст справа&amp;quot;,&lt;br /&gt;
        [&amp;quot;bgcolor&amp;quot;] = &amp;quot;bgcolor&amp;quot;,&lt;br /&gt;
        [&amp;quot;bordercolor&amp;quot;] = &amp;quot;bordercolor&amp;quot;,&lt;br /&gt;
        [&amp;quot;class&amp;quot;] = &amp;quot;class&amp;quot;,&lt;br /&gt;
        [&amp;quot;collapsed&amp;quot;] = &amp;quot;collapsed&amp;quot;,&lt;br /&gt;
        [&amp;quot;comment&amp;quot;] = &amp;quot;дополнение&amp;quot;,&lt;br /&gt;
        [&amp;quot;dismiss&amp;quot;] = &amp;quot;dismiss&amp;quot;,&lt;br /&gt;
        [&amp;quot;header&amp;quot;] = &amp;quot;заголовок&amp;quot;,&lt;br /&gt;
        [&amp;quot;id&amp;quot;] = &amp;quot;id&amp;quot;,&lt;br /&gt;
        [&amp;quot;image&amp;quot;] = &amp;quot;изображение&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagelink&amp;quot;] = &amp;quot;ссылка в изображении&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagewidth&amp;quot;] = &amp;quot;ширина изображения&amp;quot;,&lt;br /&gt;
        [&amp;quot;style&amp;quot;] = &amp;quot;style&amp;quot;,&lt;br /&gt;
        [&amp;quot;text&amp;quot;] = &amp;quot;текст&amp;quot;,&lt;br /&gt;
        [&amp;quot;type&amp;quot;] = &amp;quot;type&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;tr&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;aside&amp;quot;] = &amp;quot;kenar&amp;quot;,&lt;br /&gt;
        [&amp;quot;bgcolor&amp;quot;] = &amp;quot;aprengi&amp;quot;,&lt;br /&gt;
        [&amp;quot;bordercolor&amp;quot;] = &amp;quot;kenarlıkrengi&amp;quot;,&lt;br /&gt;
        [&amp;quot;class&amp;quot;] = &amp;quot;sınıf&amp;quot;,&lt;br /&gt;
        [&amp;quot;collapsed&amp;quot;] = &amp;quot;daratılmış&amp;quot;,&lt;br /&gt;
        [&amp;quot;comment&amp;quot;] = &amp;quot;yorum&amp;quot;,&lt;br /&gt;
        [&amp;quot;dismiss&amp;quot;] = &amp;quot;Kapat&amp;quot;,&lt;br /&gt;
        [&amp;quot;header&amp;quot;] = &amp;quot;başlık&amp;quot;,&lt;br /&gt;
        [&amp;quot;id&amp;quot;] = &amp;quot;kimlik&amp;quot;,&lt;br /&gt;
        [&amp;quot;image&amp;quot;] = &amp;quot;resim&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagelink&amp;quot;] = &amp;quot;resimbağlantısı&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagewidth&amp;quot;] = &amp;quot;resimgenişliği&amp;quot;,&lt;br /&gt;
        [&amp;quot;style&amp;quot;] = &amp;quot;stil&amp;quot;,&lt;br /&gt;
        [&amp;quot;text&amp;quot;] = &amp;quot;metin&amp;quot;,&lt;br /&gt;
        [&amp;quot;type&amp;quot;] = &amp;quot;tür&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;vi&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;aside&amp;quot;] = &amp;quot;phía bên&amp;quot;,&lt;br /&gt;
        [&amp;quot;bgcolor&amp;quot;] = &amp;quot;màu nền&amp;quot;,&lt;br /&gt;
        [&amp;quot;bordercolor&amp;quot;] = &amp;quot;màu viền&amp;quot;,&lt;br /&gt;
        [&amp;quot;class&amp;quot;] = &amp;quot;lớp&amp;quot;,&lt;br /&gt;
        [&amp;quot;collapsed&amp;quot;] = &amp;quot;đã đóng&amp;quot;,&lt;br /&gt;
        [&amp;quot;comment&amp;quot;] = &amp;quot;bình luận&amp;quot;,&lt;br /&gt;
        [&amp;quot;dismiss&amp;quot;] = &amp;quot;Bỏ qua&amp;quot;,&lt;br /&gt;
        [&amp;quot;header&amp;quot;] = &amp;quot;tiêu đề&amp;quot;,&lt;br /&gt;
        [&amp;quot;id&amp;quot;] = &amp;quot;id&amp;quot;,&lt;br /&gt;
        [&amp;quot;image&amp;quot;] = &amp;quot;hình ảnh&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagelink&amp;quot;] = &amp;quot;liên kết ảnh&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagewidth&amp;quot;] = &amp;quot;độ rộng ảnh&amp;quot;,&lt;br /&gt;
        [&amp;quot;style&amp;quot;] = &amp;quot;phong cách&amp;quot;,&lt;br /&gt;
        [&amp;quot;text&amp;quot;] = &amp;quot;văn bản&amp;quot;,&lt;br /&gt;
        [&amp;quot;type&amp;quot;] = &amp;quot;loại&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;zh&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;aside&amp;quot;] = &amp;quot;侧栏&amp;quot;,&lt;br /&gt;
        [&amp;quot;bgcolor&amp;quot;] = &amp;quot;背景颜色&amp;quot;,&lt;br /&gt;
        [&amp;quot;bordercolor&amp;quot;] = &amp;quot;边框颜色&amp;quot;,&lt;br /&gt;
        [&amp;quot;class&amp;quot;] = &amp;quot;类&amp;quot;,&lt;br /&gt;
        [&amp;quot;collapsed&amp;quot;] = &amp;quot;折叠&amp;quot;,&lt;br /&gt;
        [&amp;quot;comment&amp;quot;] = &amp;quot;备注&amp;quot;,&lt;br /&gt;
        [&amp;quot;dismiss&amp;quot;] = &amp;quot;关闭&amp;quot;,&lt;br /&gt;
        [&amp;quot;header&amp;quot;] = &amp;quot;标题&amp;quot;,&lt;br /&gt;
        [&amp;quot;id&amp;quot;] = &amp;quot;id&amp;quot;,&lt;br /&gt;
        [&amp;quot;image&amp;quot;] = &amp;quot;图像&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagelink&amp;quot;] = &amp;quot;图像链接&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagewidth&amp;quot;] = &amp;quot;图像宽度&amp;quot;,&lt;br /&gt;
        [&amp;quot;style&amp;quot;] = &amp;quot;样式&amp;quot;,&lt;br /&gt;
        [&amp;quot;text&amp;quot;] = &amp;quot;文字&amp;quot;,&lt;br /&gt;
        [&amp;quot;type&amp;quot;] = &amp;quot;类型&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;zh-tw&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;aside&amp;quot;] = &amp;quot;邊界&amp;quot;,&lt;br /&gt;
        [&amp;quot;bgcolor&amp;quot;] = &amp;quot;背景色彩&amp;quot;,&lt;br /&gt;
        [&amp;quot;bordercolor&amp;quot;] = &amp;quot;邊框色彩&amp;quot;,&lt;br /&gt;
        [&amp;quot;class&amp;quot;] = &amp;quot;屬性&amp;quot;,&lt;br /&gt;
        [&amp;quot;collapsed&amp;quot;] = &amp;quot;摺疊&amp;quot;,&lt;br /&gt;
        [&amp;quot;comment&amp;quot;] = &amp;quot;評論&amp;quot;,&lt;br /&gt;
        [&amp;quot;dismiss&amp;quot;] = &amp;quot;忽略&amp;quot;,&lt;br /&gt;
        [&amp;quot;header&amp;quot;] = &amp;quot;標頭&amp;quot;,&lt;br /&gt;
        [&amp;quot;id&amp;quot;] = &amp;quot;ID&amp;quot;,&lt;br /&gt;
        [&amp;quot;image&amp;quot;] = &amp;quot;圖片&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagelink&amp;quot;] = &amp;quot;圖片連結&amp;quot;,&lt;br /&gt;
        [&amp;quot;imagewidth&amp;quot;] = &amp;quot;圖片長度&amp;quot;,&lt;br /&gt;
        [&amp;quot;style&amp;quot;] = &amp;quot;樣式&amp;quot;,&lt;br /&gt;
        [&amp;quot;text&amp;quot;] = &amp;quot;文字&amp;quot;,&lt;br /&gt;
        [&amp;quot;type&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>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=Propuestas:General/Cambios_al_Texto_Fundamental&amp;diff=7295</id>
		<title>Propuestas:General/Cambios al Texto Fundamental</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=Propuestas:General/Cambios_al_Texto_Fundamental&amp;diff=7295"/>
		<updated>2023-09-15T02:41:30Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Proponer propuesta&lt;br /&gt;
|Fecha de inicio=12 de septiembre de 2023&lt;br /&gt;
|Título= Cambios al Texto Fundamental&lt;br /&gt;
|Descripción= Cambios propuestos por el Coordinador General al Texto Fundamental&lt;br /&gt;
|Estado= revisión&lt;br /&gt;
|Comentario=&lt;br /&gt;
|Exposición de motivos= El Texto Fundamental fue modificado en [[Propuestas:General/Nuevo_Texto_Fundamental|9 de enero de 2023]] para adaptarse al crecimiento del grupo. No obstante en revisiones del Consejo de Administración durante la tercera y quinta sesión, han determinado que es necesario algunos cambios para detallar con mayor precisión el texto fundamental.&lt;br /&gt;
&lt;br /&gt;
Resumen de los cambios:&lt;br /&gt;
* El Comité Consultivo pasa a ser la Asamblea,&lt;br /&gt;
* El Comité Revisor de Incidencias se disuelve,&lt;br /&gt;
* El Consejo de Administración se amplia de 5 a 7: cuatro escogidos por la Asamblea, dos por el Consejo y uno reservado al fundador.&lt;br /&gt;
* Los miembros del Consejo de Administración extienden su período a dos años iniciando desde octubre de 2022 y pueden estar en el Consejo hasta un máximo de seis años consecutivos.&lt;br /&gt;
* Los asesores del Consejo de Administración pueden servir hasta un máximo de tres años consecutivos.&lt;br /&gt;
* Ajustes al Comité Ejecutivo, entre dichos ajustes el Coordinador General ya no debe entregar el reporte anual a la Asamblea sino al Consejo de Administración.&lt;br /&gt;
* Otros cambios importantes.&lt;br /&gt;
&lt;br /&gt;
Los cambios propuestos se pueden observar a través de [https://wikisp.org/wiki/index.php?title=Texto_Fundamental&amp;amp;diff=7252&amp;amp;oldid=6594&amp;amp;diffmode=source estas diferencias] ([https://wikisp.org/wiki/index.php?title=Texto_Fundamental&amp;amp;diff=7252&amp;amp;oldid=6594&amp;amp;diffmode=visual versión visual])&lt;br /&gt;
&lt;br /&gt;
* [https://wikisp-org.translate.goog/wiki/Propuestas:General/Cambios_al_Texto_Fundamental?_x_tr_sl=es&amp;amp;_x_tr_tl=en&amp;amp;_x_tr_hl=es-419&amp;amp;_x_tr_pto=wapp English version of this proposal]&lt;br /&gt;
* [https://wikisp-org.translate.goog/wiki/index.php?title=Texto_Fundamental&amp;amp;diff=7252&amp;amp;oldid=6594&amp;amp;diffmode=source&amp;amp;_x_tr_sl=es&amp;amp;_x_tr_tl=en&amp;amp;_x_tr_hl=es-419&amp;amp;_x_tr_pto=wapp English version of the proposed changes]&lt;br /&gt;
Both provided by Google Translate&lt;br /&gt;
|Componentes afectados= [[Comité Consultivo]]&lt;br /&gt;
&lt;br /&gt;
[[Consejo de Administración]]&lt;br /&gt;
&lt;br /&gt;
Comité Revisor de Incidencias&lt;br /&gt;
&lt;br /&gt;
[[Comité Ejecutivo]]&lt;br /&gt;
&lt;br /&gt;
[[Texto Fundamental]]&lt;br /&gt;
&amp;lt;!--Puedes insertar opciones hasta la 6ta solo agregando otro &amp;quot;|Opción#=&amp;quot; y continuando la numeración--&amp;gt;&lt;br /&gt;
|Opción1= Aprobar los cambios al Texto Fundamental&lt;br /&gt;
&amp;lt;!-- //////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                                        ¡VOTA AQUÍ!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Valores disponibles:&amp;quot;sí&amp;quot;, &amp;quot;no&amp;quot;.&lt;br /&gt;
Para insertar un voto en cualquier opción solo usa &amp;quot;u##op#&amp;quot; (u##=usuario más tu número de orden, op#=es el número de opción a votar)--&amp;gt; &lt;br /&gt;
|u1=Galahad|u1op1= &lt;br /&gt;
|u2=NoonIcarus|u2op1= &lt;br /&gt;
|u3=Hispano76|u3op1= sí&lt;br /&gt;
|u4=Millars|u4op1= &lt;br /&gt;
|u6=LuchoCR|u6op1= &lt;br /&gt;
|u8=Peter Bowman|u8op1= &lt;br /&gt;
|u9=DerFussi|u9op1= &lt;br /&gt;
|u10=Hasley|u10op1= &lt;br /&gt;
|u12=Bromoxido|u12op1= sí &lt;br /&gt;
|u14=Balou46|u14op1= &lt;br /&gt;
|u15=Althair|u15op1= &lt;br /&gt;
|u17=Alexandrabello|u17op1= &lt;br /&gt;
|u19=Jsmura|u19op1= sí&lt;br /&gt;
|u20=Villalaso|u20op1= &lt;br /&gt;
|u22=Bedivere|u22op1= &lt;br /&gt;
|u24=Felino Volador|u24op1= &lt;br /&gt;
|u25=Sargento de Hierro|u25op1= &lt;br /&gt;
|u26=SHB2000|u26op1= &lt;br /&gt;
|u27=JOAN|u27op1= &lt;br /&gt;
|u28=-sasha-|u28op1= &lt;br /&gt;
|u30=Koavf|u30op1= &lt;br /&gt;
|u32=Jaluj|u32op1= &lt;br /&gt;
|u33=Olea|u33op1= &lt;br /&gt;
|u34=Urci dream|u34op1= &lt;br /&gt;
|u35=SrCerberus|u35op1= &lt;br /&gt;
|u38=RichdVarela|u38op1= sí}}&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=Cont%C3%A1ctanos&amp;diff=7236</id>
		<title>Contáctanos</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=Cont%C3%A1ctanos&amp;diff=7236"/>
		<updated>2023-09-12T03:25:59Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;templatestyles src=&amp;quot;Contáctanos/styles.css&amp;quot; /&amp;gt;&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; width=&amp;quot;60%&amp;quot;|&lt;br /&gt;
{|class=&amp;quot;bgesp&amp;quot;|border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; style=&amp;quot;border-width:1px; border-style:solid; border-color:#888888; border-collapse:collapse; empty-cells:show; width:100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#0063BF; padding: .5em 1em; color:white&amp;quot; colspan=&amp;quot;2&amp;quot;| &amp;lt;translate&amp;gt;&amp;lt;!--T:1--&amp;gt; Contacto&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#0063BF; padding: .5em 1em; color:white; width:20%;&amp;quot;| &#039;&#039;&#039;E-mail&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;padding: .5em 1em;&amp;quot;| hello{{@}}wikisp.org&lt;br /&gt;
|-	&lt;br /&gt;
| style=&amp;quot;background:#0063BF; padding: .5em 1em; color:white; width:20%;&amp;quot;| &#039;&#039;&#039;&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt; Coordinador General&amp;lt;/translate&amp;gt;&#039;&#039;&#039; 	&lt;br /&gt;
| style=&amp;quot;padding: .5em 1em;&amp;quot;| &#039;&#039;&#039;Galahad&#039;&#039;&#039;&amp;lt;br/&amp;gt;galahad{{@}}wikisp.org&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#0063BF; padding: .5em 1em; color:white; width:20%;&amp;quot;| &#039;&#039;&#039;&amp;lt;translate&amp;gt;&amp;lt;!--T:3--&amp;gt; Consejo de Administración&amp;lt;/translate&amp;gt;&#039;&#039;&#039;	&lt;br /&gt;
| style=&amp;quot;padding: .5em 1em;&amp;quot;| &#039;&#039;&#039;Alexandrabello, Jsmura, NoonIcarus, Ybsen_lucero&#039;&#039;&#039;&amp;lt;br/&amp;gt;admincom{{@}}wikisp.org&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#0063BF; padding: .5em 1em; color:white; width:20%;&amp;quot;| &#039;&#039;&#039;&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt; Boletín informativo&amp;lt;/translate&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;padding: .5em 1em;&amp;quot;| [[m:Special:MyLanguage/Wikimedia Small Projects in Spanish/Newsletter|&amp;lt;translate&amp;gt;&amp;lt;!--T:6--&amp;gt; Boletín informativo&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#0063BF; padding: .5em 1em; color:white; width:20%;&amp;quot;| &#039;&#039;&#039;&amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt; Lista de correo&amp;lt;/translate&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;padding: .5em 1em;&amp;quot;| [//lists.wikimedia.org/postorius/lists/wikisp.lists.wikimedia.org/ wikisp{{@}}lists.wikimedia.org]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#0063BF; padding: .5em 1em; color:white; width:20%;&amp;quot;| &#039;&#039;&#039;&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt; Canal IRC&amp;lt;/translate&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;padding: .5em 1em;&amp;quot;| {{IRC|wikimedia-sp}}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#0063BF; padding: .5em 1em; color:white; width:20%;&amp;quot;| &#039;&#039;&#039;Blog&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;padding: .5em 1em;&amp;quot;| [[blog:|&amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt; Blog oficial&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#0063BF; padding: .5em 1em; color:white; width:20%;&amp;quot;| &#039;&#039;&#039;Wikimedia Meta-Wiki&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;padding: .5em 1em;&amp;quot;| [[m:Special:MyLanguage/Wikimedia Small Projects|Wikimedia Small Projects]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-direction: column; align-items: center; gap: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;home-card-discord&amp;quot; class=&amp;quot;home-card home-card--col2 home-card--button plainlinks&amp;quot; style=&amp;quot;width: 300px; padding: 0.7em&amp;quot;&amp;gt;[https://discord.gg/bA5AWtDzqy [[File:Discord-logo-white.svg|x30px|link=|alt=Discord]]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;home-card-facebook&amp;quot; class=&amp;quot;home-card home-card--col2 home-card--button plainlinks&amp;quot; style=&amp;quot;width: 300px; padding: 0.7em&amp;quot;&amp;gt;[https://facebook.com/wikimediasp [[File:Facebook Logo (2019).svg|x30px|link=|alt=Facebook]]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;home-card-kofi&amp;quot; class=&amp;quot;home-card home-card--col2 home-card--button plainlinks&amp;quot; style=&amp;quot;width: 300px; padding: 0.7em&amp;quot;&amp;gt;[https://ko-fi.com/wikisp [[File:Kofi Icon.svg|x30px|link=|alt=Ko-fi]]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;home-card-twitter&amp;quot; class=&amp;quot;home-card home-card--col2 home-card--button plainlinks&amp;quot; style=&amp;quot;width: 300px; padding: 0.7em&amp;quot;&amp;gt;[https://twitter.com/wmspug [[File:Twitter logo.svg|x30px|link=|alt=Twitter]]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;home-card-telegram&amp;quot; class=&amp;quot;home-card home-card--col2 home-card--button plainlinks&amp;quot; style=&amp;quot;width: 300px; padding: 0.7em&amp;quot;&amp;gt;[https://t.me/wikimediasp [[File:Telegram text logo.svg|x30px|link=|alt=Telegram]]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;home-card-youtube&amp;quot; class=&amp;quot;home-card home-card--col2 home-card--button plainlinks&amp;quot; style=&amp;quot;width: 300px; padding: 0.7em&amp;quot;&amp;gt;[https://youtube.com/@wikimediasp [[File:YouTube light logo (2017).svg|x30px|link=|alt=Youtube]]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;home-card-instagram&amp;quot; class=&amp;quot;home-card home-card--col2 home-card--button plainlinks&amp;quot; style=&amp;quot;width: 300px; padding: 0.7em&amp;quot;&amp;gt;[https://instagram.com/wikimediasp [[File:Instagram logo.svg|x30px|link=|alt=Instagram]]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;languages /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Categoría:WikiSP]]&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=Cont%C3%A1ctanos&amp;diff=7235</id>
		<title>Contáctanos</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=Cont%C3%A1ctanos&amp;diff=7235"/>
		<updated>2023-09-12T03:20:46Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;templatestyles src=&amp;quot;Contáctanos/styles.css&amp;quot; /&amp;gt;&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; width=&amp;quot;60%&amp;quot;|&lt;br /&gt;
{|class=&amp;quot;bgesp&amp;quot;|border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; style=&amp;quot;border-width:1px; border-style:solid; border-color:#888888; border-collapse:collapse; empty-cells:show; width:100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#0063BF; padding: .5em 1em; color:white&amp;quot; colspan=&amp;quot;2&amp;quot;| &amp;lt;translate&amp;gt;&amp;lt;!--T:1--&amp;gt; Contacto&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#0063BF; padding: .5em 1em; color:white; width:20%;&amp;quot;| &#039;&#039;&#039;E-mail&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;padding: .5em 1em;&amp;quot;| hello{{@}}wikisp.org&lt;br /&gt;
|-	&lt;br /&gt;
| style=&amp;quot;background:#0063BF; padding: .5em 1em; color:white; width:20%;&amp;quot;| &#039;&#039;&#039;&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt; Coordinador General&amp;lt;/translate&amp;gt;&#039;&#039;&#039; 	&lt;br /&gt;
| style=&amp;quot;padding: .5em 1em;&amp;quot;| &#039;&#039;&#039;Galahad&#039;&#039;&#039;&amp;lt;br/&amp;gt;galahad{{@}}wikisp.org&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#0063BF; padding: .5em 1em; color:white; width:20%;&amp;quot;| &#039;&#039;&#039;&amp;lt;translate&amp;gt;&amp;lt;!--T:3--&amp;gt; Consejo de Administración&amp;lt;/translate&amp;gt;&#039;&#039;&#039;	&lt;br /&gt;
| style=&amp;quot;padding: .5em 1em;&amp;quot;| &#039;&#039;&#039;Alexandrabello, Jsmura, NoonIcarus, Ybsen_lucero&#039;&#039;&#039;&amp;lt;br/&amp;gt;admincom{{@}}wikisp.org&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#0063BF; padding: .5em 1em; color:white; width:20%;&amp;quot;| &#039;&#039;&#039;&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt; Boletín informativo&amp;lt;/translate&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;padding: .5em 1em;&amp;quot;| [[m:Special:MyLanguage/Wikimedia Small Projects in Spanish/Newsletter|&amp;lt;translate&amp;gt;&amp;lt;!--T:6--&amp;gt; Boletín informativo&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#0063BF; padding: .5em 1em; color:white; width:20%;&amp;quot;| &#039;&#039;&#039;&amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt; Lista de correo&amp;lt;/translate&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;padding: .5em 1em;&amp;quot;| [//lists.wikimedia.org/postorius/lists/wikisp.lists.wikimedia.org/ wikisp{{@}}lists.wikimedia.org]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#0063BF; padding: .5em 1em; color:white; width:20%;&amp;quot;| &#039;&#039;&#039;&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt; Canal IRC&amp;lt;/translate&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;padding: .5em 1em;&amp;quot;| {{IRC|wikimedia-sp}}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#0063BF; padding: .5em 1em; color:white; width:20%;&amp;quot;| &#039;&#039;&#039;Blog&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;padding: .5em 1em;&amp;quot;| [[blog:|&amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt; Blog oficial&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#0063BF; padding: .5em 1em; color:white; width:20%;&amp;quot;| &#039;&#039;&#039;Wikimedia Meta-Wiki&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;padding: .5em 1em;&amp;quot;| [[m:Special:MyLanguage/Wikimedia Small Projects|Wikimedia Small Projects]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-direction: column; align-items: center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;home-card-discord&amp;quot; class=&amp;quot;home-card home-card--col2 home-card--button plainlinks&amp;quot; style=&amp;quot;width: 300px; padding: 0.7em&amp;quot;&amp;gt;[https://discord.gg/bA5AWtDzqy [[File:Discord-logo-white.svg|x30px|link=|alt=Discord]]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;home-card-facebook&amp;quot; class=&amp;quot;home-card home-card--col2 home-card--button plainlinks&amp;quot; style=&amp;quot;width: 300px; padding: 0.7em&amp;quot;&amp;gt;[https://facebook.com/wikimediasp [[File:Facebook Logo (2019).svg|x30px|link=|alt=Facebook]]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;home-card-kofi&amp;quot; class=&amp;quot;home-card home-card--col2 home-card--button plainlinks&amp;quot; style=&amp;quot;width: 300px; padding: 0.7em&amp;quot;&amp;gt;[https://ko-fi.com/wikisp [[File:Kofi Icon.svg|x30px|link=|alt=Ko-fi]]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;home-card-twitter&amp;quot; class=&amp;quot;home-card home-card--col2 home-card--button plainlinks&amp;quot; style=&amp;quot;width: 300px; padding: 0.7em&amp;quot;&amp;gt;[https://twitter.com/wmspug [[File:Twitter logo.svg|x30px|link=|alt=Twitter]]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;home-card-telegram&amp;quot; class=&amp;quot;home-card home-card--col2 home-card--button plainlinks&amp;quot; style=&amp;quot;width: 300px; padding: 0.7em&amp;quot;&amp;gt;[https://t.me/wikimediasp [[File:Telegram text logo.svg|x30px|link=|alt=Telegram]]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;home-card-youtube&amp;quot; class=&amp;quot;home-card home-card--col2 home-card--button plainlinks&amp;quot; style=&amp;quot;width: 300px; padding: 0.7em&amp;quot;&amp;gt;[https://youtube.com/@wikimediasp [[File:YouTube light logo (2017).svg|x30px|link=|alt=Youtube]]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;home-card-instagram&amp;quot; class=&amp;quot;home-card home-card--col2 home-card--button plainlinks&amp;quot; style=&amp;quot;width: 300px; padding: 0.7em&amp;quot;&amp;gt;[https://instagram.com/wikimediasp [[File:Instagram logo.svg|x30px|link=|alt=Instagram]]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;languages /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Categoría:WikiSP]]&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=Usuario:Galahad&amp;diff=7219</id>
		<title>Usuario:Galahad</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=Usuario:Galahad&amp;diff=7219"/>
		<updated>2023-09-11T19:32:31Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;templatestyles src=&amp;quot;Contáctanos/styles.css&amp;quot; /&amp;gt;&lt;br /&gt;
Coordinador General de WSP&lt;br /&gt;
&amp;lt;div id=&amp;quot;home-card-discord&amp;quot; class=&amp;quot;home-card home-card--col2 home-card--button plainlinks&amp;quot; style=&amp;quot;width: 300px; padding: 0.7em&amp;quot;&amp;gt;[https://discord.gg/XcKwqyD4sc [[File:Discord-logo-white.svg|x30px|link=|alt=Discord]]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;home-card-patreon&amp;quot; class=&amp;quot;home-card home-card--col2 home-card--button plainlinks&amp;quot; style=&amp;quot;width: 300px; padding: 0.7em&amp;quot;&amp;gt;[https://www.patreon.com/starcitizentools [[File:Patreon wordmark white.svg|x30px|link=|alt=Patreon]]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;home-card-kofi&amp;quot; class=&amp;quot;home-card home-card--col2 home-card--button plainlinks&amp;quot; style=&amp;quot;width: 300px; padding: 0.7em&amp;quot;&amp;gt;[https://ko-fi.com/starcitizentools [[File:Kofi icon white.svg|x30px|link=|alt=Ko-fi]]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;home-card-reddit&amp;quot; class=&amp;quot;home-card home-card--col2 home-card--button plainlinks&amp;quot; style=&amp;quot;width: 300px; padding: 0.7em&amp;quot;&amp;gt;[https://www.reddit.com/r/starcitizen [[File:Reddit wordmark white.svg|x30px|link=|alt=Reddit]]]&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=Usuario:Galahad&amp;diff=7218</id>
		<title>Usuario:Galahad</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=Usuario:Galahad&amp;diff=7218"/>
		<updated>2023-09-11T19:31:43Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;templatestyles src=&amp;quot;Contáctanos/styles.css&amp;quot; /&amp;gt;&lt;br /&gt;
Coordinador General de WSP&lt;br /&gt;
&amp;lt;div id=&amp;quot;home-card-discord&amp;quot; class=&amp;quot;home-card home-card--col2 home-card--button&amp;quot; style=&amp;quot;width: 300px; padding: 0.7em&amp;quot;&amp;gt;[https://discord.gg/XcKwqyD4sc [[File:Discord-logo-white.svg|x30px|link=|alt=Discord]]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;home-card-patreon&amp;quot; class=&amp;quot;home-card home-card--col2 home-card--button&amp;quot; style=&amp;quot;width: 300px; padding: 0.7em&amp;quot;&amp;gt;[https://www.patreon.com/starcitizentools [[File:Patreon wordmark white.svg|x30px|link=|alt=Patreon]]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;home-card-kofi&amp;quot; class=&amp;quot;home-card home-card--col2 home-card--button&amp;quot; style=&amp;quot;width: 300px; padding: 0.7em&amp;quot;&amp;gt;[https://ko-fi.com/starcitizentools [[File:Kofi icon white.svg|x30px|link=|alt=Ko-fi]]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;home-card-reddit&amp;quot; class=&amp;quot;home-card home-card--col2 home-card--button&amp;quot; style=&amp;quot;width: 300px; padding: 0.7em&amp;quot;&amp;gt;[https://www.reddit.com/r/starcitizen [[File:Reddit wordmark white.svg|x30px|link=|alt=Reddit]]]&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=Propuestas:General/Aprobaci%C3%B3n_de_nueva_tesorera&amp;diff=7180</id>
		<title>Propuestas:General/Aprobación de nueva tesorera</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=Propuestas:General/Aprobaci%C3%B3n_de_nueva_tesorera&amp;diff=7180"/>
		<updated>2023-09-09T23:16:54Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Proponer propuesta&lt;br /&gt;
|Fecha de inicio=09 de septiembre de 2023&lt;br /&gt;
|Título= Aprobación de nueva tesorera&lt;br /&gt;
|Descripción= El Consejo de Administración ha recomendado a [[m:User:Alexandrabello|Alexandra Bello]] para ser escogida como tesorera&lt;br /&gt;
|Estado= revisión&lt;br /&gt;
|Comentario=&lt;br /&gt;
|Exposición de motivos=  En la [[Reuniones/CA-2023#Tercera_sesión_bimensual|tercera sesión bimensual]] del Consejo de Administración, NoonIcarus indicó su deseo de no renovar para un segundo período como tesorero. De conformidad con el [[Texto_Fundamental#Artículo_V:_Comité_Ejecutivo|artículo V, segunda sección, segunda cláusula]] el Comité Consultivo debe aprobar o rechazar la recomendación provista por el Consejo de Administración.&lt;br /&gt;
&lt;br /&gt;
Por ello, el Consejo de Administración [[Resolución:CA/006|recomendó]] a Alexandra Bello como sucesora de NoonIcarus. En caso de que sea aprobado, Alexandra entrará al período 2024-2025.&lt;br /&gt;
&lt;br /&gt;
* [https://wikisp-org.translate.goog/wiki/Propuestas:General/Aprobación_de_nueva_tesorera?_x_tr_sl=es&amp;amp;_x_tr_tl=en&amp;amp;_x_tr_hl=es-419&amp;amp;_x_tr_pto=wapp Automatic translation provided by Google Translate]&lt;br /&gt;
|Componentes afectados= [[Comité Ejecutivo]]&lt;br /&gt;
&amp;lt;!--Puedes insertar opciones hasta la 6ta solo agregando otro &amp;quot;|Opción#=&amp;quot; y continuando la numeración--&amp;gt;&lt;br /&gt;
|Opción1= Aprobar a Alexandra cómo nueva tesorera&lt;br /&gt;
&amp;lt;!-- //////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                                        ¡VOTA AQUÍ!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Valores disponibles:&amp;quot;sí&amp;quot;, &amp;quot;no&amp;quot;.&lt;br /&gt;
Para insertar un voto en cualquier opción solo usa &amp;quot;u##op#&amp;quot; (u##=usuario más tu número de orden, op#=es el número de opción a votar)--&amp;gt; &lt;br /&gt;
|u1=Galahad|u1op1= &lt;br /&gt;
|u2=NoonIcarus|u2op1= &lt;br /&gt;
|u3=Hispano76|u3op1= &lt;br /&gt;
|u4=Millars|u4op1= &lt;br /&gt;
|u6=LuchoCR|u6op1= &lt;br /&gt;
|u8=Peter Bowman|u8op1= &lt;br /&gt;
|u9=DerFussi|u9op1= &lt;br /&gt;
|u10=Hasley|u10op1=sí&lt;br /&gt;
|u12=Bromoxido|u12op1=sí&lt;br /&gt;
|u14=Balou46|u14op1= &lt;br /&gt;
|u15=Althair|u15op1= &lt;br /&gt;
|u17=Alexandrabello|u17op1= &lt;br /&gt;
|u19=Jsmura|u19op1=sí&lt;br /&gt;
|u20=Villalaso|u20op1= &lt;br /&gt;
|u22=Bedivere|u22op1= &lt;br /&gt;
|u24=Felino Volador|u24op1= &lt;br /&gt;
|u25=Sargento de Hierro|u25op1= &lt;br /&gt;
|u26=SHB2000|u26op1= &lt;br /&gt;
|u27=JOAN|u27op1= &lt;br /&gt;
|u28=-sasha-|u28op1= sí&lt;br /&gt;
|u30=Koavf|u30op1= &lt;br /&gt;
|u32=Jaluj|u32op1= &lt;br /&gt;
|u33=Olea|u33op1= &lt;br /&gt;
|u34=Urci dream|u34op1= &lt;br /&gt;
|u35=SrCerberus|u35op1= &lt;br /&gt;
|u38=RichdVarela|u38op1= }}&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=Plantilla:Staff&amp;diff=7148</id>
		<title>Plantilla:Staff</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=Plantilla:Staff&amp;diff=7148"/>
		<updated>2023-07-28T19:21:51Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&amp;lt;div style=&amp;quot;margin:0; text-align:initial; border-color:#663399; border-radius:3px; border-style:solid; border-width:1px; clear:right; float:{{#if:{{{center|}}}|none|right}}; margin:0 0 18px 18px; width:270px; display:flex; flex-direction:column; max-width:270px;{{#if:{{{center}}}|display:inline-block; vertical-align:top|}}&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #520044; color: white; padding-bottom:9px; padding-top:9px; padding-left:9px; padding-right:9px;text-align:center;  font-size:20px; font-family: Helvetica,Arial,sans-serif; font-weight: bold;&amp;quot;&amp;gt;{{{nombre}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bgesp&amp;quot; style=&amp;quot;padding-top: 6px; padding-bottom: 6px; padding-left:9px&amp;quot;&amp;gt;{{#if:{{{file|}}}|[[File:{{{file|Beethoven.png}}}|center|{{{filesize|210px}}}]]}}&lt;br /&gt;
{{{contenido|}}}&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;font-weight: bold;&amp;quot;| &amp;lt;translate&amp;gt;&amp;lt;!--T:1--&amp;gt; Posición:&amp;lt;/translate&amp;gt; ||colspan=&amp;quot;2&amp;quot;| {{{posición}}}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;font-weight: bold; | {{int:username}} ||colspan=&amp;quot;2&amp;quot;| [[m:Special:CentralAuth/{{{usuario|Example}}}|&amp;lt;span&amp;gt;{{{usuario}}}&amp;lt;/span&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;font-weight: bold; | {{int:prefs-languages}}: ||colspan=&amp;quot;2&amp;quot;| {{{idiomas}}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-top: 1px solid #663399;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bgesp&amp;quot; style=&amp;quot;padding-top: 6px; padding-bottom: 6px; padding-left:9px&amp;quot;&amp;gt;&lt;br /&gt;
[[User talk:{{{usuario|Example}}}|&amp;lt;span&amp;gt;{{int:mytalk}}&amp;lt;/span&amp;gt;]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=Wikimania_Venezuela_2022&amp;diff=7147</id>
		<title>Wikimania Venezuela 2022</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=Wikimania_Venezuela_2022&amp;diff=7147"/>
		<updated>2023-07-28T04:11:55Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:&amp;lt;span style=&amp;quot;display:none;&amp;quot;&amp;gt;{{FULLPAGENAME}}&amp;lt;/span&amp;gt;}}&lt;br /&gt;
&amp;lt;templatestyles src=&amp;quot;Conference/styles.css&amp;quot; /&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; style=&amp;quot;background-color: #2a4b8d; border-radius: 5px; margin-bottom: 0.5em; color: #fff;&amp;quot;&lt;br /&gt;
| width=&amp;quot;20%&amp;quot; style=&amp;quot;padding: 0.5em;&amp;quot; | [[File:Wikimania Venezuela 2022 logo.jpg|200px|center]]&lt;br /&gt;
| width=&amp;quot;65%&amp;quot; style=&amp;quot;font-size: 225%; line-height: 1.2em; padding-left:1em;&amp;quot; | Wikimania Venezuela 2022&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:white; font-size:65%; line-height:0.7&amp;quot;&amp;gt;&#039;&#039;&#039;Únete al festival de Wikimania en Caracas del 12 al 14 de agosto en WeCode&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;div class=&amp;quot;wp20-menu wp20-menu-selected-1 plainlinks&amp;quot;&amp;gt;&lt;br /&gt;
* [[File:Wikimania2022 illustrations 11.svg|100px]]&amp;lt;small&amp;gt;En este festival discutimos el estado del acceso al conocimiento libre en Venezuela al igual que promovemos la interacción y colaboración entre el voluntariado que hace vida en el territorio.&amp;lt;/small&amp;gt;&lt;br /&gt;
* [[File:Wikimedia Venezuela logo negro.svg|50px]] [[File:Wikisp-logo-v2-black.svg|60px]]&amp;lt;small&amp;gt;Esto no habría sido posible sin la colaboración entre Wikimedia Venezuela y Wikimedia Small Projects; sus esfuerzos en conjunto lograron que este festival sea una realidad.&amp;lt;/small&amp;gt;&lt;br /&gt;
* [[File:SuenaWiki-v2-black-logo.png|50px]] &amp;lt;small&amp;gt;Todo el festival será transmitido en vivo a través de SuenaWiki Reloaded&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width: 100%;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| class=&amp;quot;plainlinks&amp;quot; style=&amp;quot;width: 100%; padding-top: 10px; text-align: center;&amp;quot; | [https://survey.wikisp.org/index.php/788559?lang=es &amp;lt;span class=&amp;quot;mw-ui-button mw-ui-progressive&amp;quot; style=&amp;quot;float: none; display: inline-block; color: #fff&amp;quot;&amp;gt;¡Inscríbete aquí!&amp;lt;/span&amp;gt;]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Wikimania Venezuela: El festival de Wikimania en Caracas es uno de los numerosos [[wikimania:2022:In-person events|eventos locales]] alrededor del mundo que giran en torno a la edición 2022 de Wikimania. Para Venezuela, es la primera vez que un evento relacionado sea posible.&lt;br /&gt;
&lt;br /&gt;
Todos los residentes en Venezuela, independiente de su participación en el movimiento Wikimedia, pueden ser parte de Wikimania Venezuela. Para ello contamos con una serie de becas que facilitarán el acceso a la misma durante los días que se ejecutará.&lt;br /&gt;
&lt;br /&gt;
Dichas becas se dividen en tres:&lt;br /&gt;
* Beca total: Destinado para los residentes de Venezuela que vivan en el interior del país, esta beca cubrirá los gastos de transporte del interior hacia la capital, gastos de hotel y alimentación durante los días de la conferencia.&lt;br /&gt;
* Beca parcial: Esta beca cubrirá los gastos de hotel y alimentación durante los días de la conferencia.&lt;br /&gt;
* Beca de evento: Esta beca cubrirá los gastos de alimentación durante los días de la conferencia.&lt;br /&gt;
&lt;br /&gt;
La sede de la conferencia será WeCode ubicado en la Av el Parque, con Av Sta Lucía en Caracas mientras que el hotel será el Vistavila Suites que se ubica en la Av. Libertador, entre Av. Las Acacias y, Avenida Los Jabillos. Puedes conocer más de cómo llegar a través de este [[voy:Wikimanía Venezuela 2022|artículo de Wikiviajes]].&lt;br /&gt;
&lt;br /&gt;
== Programa ==&lt;br /&gt;
El programa de este festival será una combinación entre talleres de edición, charlas y actividades que permitan conocer al movimiento Wikimedia.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; data-expandtext=&amp;quot;Actividades&amp;quot; data-collapsetext=&amp;quot;Actividades&amp;quot; style=&amp;quot;margin-top: 1em; text-align: center; padding-bottom: 10px&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;mw-collapsible-toggle mw-ui-button mw-ui-progressive mw-ui progressive&amp;quot; style=&amp;quot;float: none; display: inline-block;&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;mw-collapsible-text font-weight: bold;&amp;quot;&amp;gt;Actividades&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;margin-top: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
;&amp;lt;big&amp;gt;Viernes, 12 de agosto&amp;lt;/big&amp;gt;&lt;br /&gt;
{{ConferenceCard&lt;br /&gt;
| date = 2022-07-12&lt;br /&gt;
| time = 08:30&lt;br /&gt;
| duration = 30 minutos&lt;br /&gt;
| title = Bienvenida y registro&lt;br /&gt;
}}&lt;br /&gt;
{{ConferenceCard&lt;br /&gt;
| date = 2022-07-12&lt;br /&gt;
| time = 09:00&lt;br /&gt;
| duration = 15 minutos&lt;br /&gt;
| title = Apertura y presentaciones&lt;br /&gt;
| speaker = [[m:User:Alexandra Bello|Alexandra Bello]], [[m:User:Galahad|Carlos Mora]] e [[m:User:Ybsen_lucero|Ybsen Lucero]]&lt;br /&gt;
| speakerimage = [[File:Wikimania2022 illustrations 20.svg]]&lt;br /&gt;
}}&lt;br /&gt;
{{ConferenceCard&lt;br /&gt;
| date = 2022-07-12&lt;br /&gt;
| time = 09:15&lt;br /&gt;
| duration = 45 minutos&lt;br /&gt;
| title = Ronda de preguntas y respuestas&lt;br /&gt;
| speaker = [[m:User:Galahad|Carlos Mora]] e [[m:User:Ybsen_lucero|Ybsen Lucero]]&lt;br /&gt;
| speakerimage = [[File:Wikimania2022 illustrations 20.svg]]&lt;br /&gt;
}}&lt;br /&gt;
{{ConferenceCard&lt;br /&gt;
| date = 2022-07-12&lt;br /&gt;
| time = 10:00&lt;br /&gt;
| duration = 45 minutos&lt;br /&gt;
| title = Seguridad digital&lt;br /&gt;
| speaker = Luis Serrano&lt;br /&gt;
}}&lt;br /&gt;
{{ConferenceCard&lt;br /&gt;
| emoji = ☕&lt;br /&gt;
| break2 = Coffee Break&lt;br /&gt;
| breakt = 10:45&lt;br /&gt;
| breakd = 15 minutos&lt;br /&gt;
}}&lt;br /&gt;
{{ConferenceCard&lt;br /&gt;
| date = 2022-07-12&lt;br /&gt;
| time = 11:00&lt;br /&gt;
| duration = 1 hora&lt;br /&gt;
| title = Impacto de las ONGs en Redes Sociales ¿cómo puedes causar un impacto con tu activismo en redes?&lt;br /&gt;
| speaker = Gabriel Cabrera&lt;br /&gt;
}}&lt;br /&gt;
{{ConferenceCard&lt;br /&gt;
| date = 2022-07-12&lt;br /&gt;
| time = 12:00&lt;br /&gt;
| duration = 1 hora&lt;br /&gt;
| title = Derechos Humanos en entornos digitales&lt;br /&gt;
| speaker = Luis Carlos Diaz&lt;br /&gt;
}}&lt;br /&gt;
{{ConferenceCard&lt;br /&gt;
| emoji = 🍝&lt;br /&gt;
| break2 = Almuerzo&lt;br /&gt;
| breakt = 13:00&lt;br /&gt;
| breakd = 60 minutos &lt;br /&gt;
}}&lt;br /&gt;
{{ConferenceCard&lt;br /&gt;
| date = 2022-07-12&lt;br /&gt;
| time = 14:00&lt;br /&gt;
| duration = 1 hora&lt;br /&gt;
| title = Turismo para todos; Ocio y Recreación al alcance de la mano&lt;br /&gt;
| speaker = Raysilut Valero&lt;br /&gt;
}}&lt;br /&gt;
{{ConferenceCard&lt;br /&gt;
| emoji = ☕&lt;br /&gt;
| break2 = Pausa Activa - Coffee break&lt;br /&gt;
| breakt = 15:00&lt;br /&gt;
| breakd = 30 minutos&lt;br /&gt;
}}&lt;br /&gt;
{{ConferenceCard&lt;br /&gt;
| date = 2022-07-12&lt;br /&gt;
| time = 15:30&lt;br /&gt;
| duration = 1 hora&lt;br /&gt;
| title = Debate abierto: Conocimiento libre en Venezuela&lt;br /&gt;
}}&lt;br /&gt;
{{ConferenceCard&lt;br /&gt;
| date = 2022-07-12&lt;br /&gt;
| time = 16:30&lt;br /&gt;
| duration = 15 minutos&lt;br /&gt;
| title = Cierre y despedida &lt;br /&gt;
}}&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;big&amp;gt;Sábado, 13 de agosto&amp;lt;/big&amp;gt;&lt;br /&gt;
{{ConferenceCard&lt;br /&gt;
| date = 2022-07-13&lt;br /&gt;
| time = 09:00&lt;br /&gt;
| duration = 1 hora&lt;br /&gt;
| title = Tecnología y Educación&lt;br /&gt;
| speaker = Lourdes Herrera&lt;br /&gt;
}}&lt;br /&gt;
{{ConferenceCard&lt;br /&gt;
| date = 2022-07-13&lt;br /&gt;
| time = 10:00&lt;br /&gt;
| duration = 45 minutos&lt;br /&gt;
| title = Érase una vez en Venezuela: editando Wikipedia en medio de la censura, los cortes de energía, la escasez de combustible y protestas generalizadas&lt;br /&gt;
| speaker = Oscar Costero&lt;br /&gt;
}}&lt;br /&gt;
{{ConferenceCard&lt;br /&gt;
| emoji = ☕&lt;br /&gt;
| break2 = Coffee Break&lt;br /&gt;
| breakt = 10:45&lt;br /&gt;
| breakd = 15 minutos&lt;br /&gt;
}}&lt;br /&gt;
{{ConferenceCard&lt;br /&gt;
| date = 2022-07-13&lt;br /&gt;
| time = 11:00&lt;br /&gt;
| duration = 1 hora&lt;br /&gt;
| title = Implementación de la Estrategia de Movimiento:Oportunidades para las comunidades emergentes&lt;br /&gt;
|speaker= Oscar Costero&lt;br /&gt;
}}&lt;br /&gt;
{{ConferenceCard&lt;br /&gt;
| date = 2022-07-13&lt;br /&gt;
| time = 12:00&lt;br /&gt;
| duration = 1 hora&lt;br /&gt;
| title = Proyectos Wikimedia&lt;br /&gt;
| speaker = [[m:User:Galahad|Carlos Mora]]&lt;br /&gt;
}}&lt;br /&gt;
{{ConferenceCard&lt;br /&gt;
| emoji = 🍝&lt;br /&gt;
| break2 = Almuerzo&lt;br /&gt;
| breakt = 13:00&lt;br /&gt;
| breakd = 45 minutos &lt;br /&gt;
}}&lt;br /&gt;
{{ConferenceCard&lt;br /&gt;
| date = 2022-07-12&lt;br /&gt;
| time = 14:00&lt;br /&gt;
| duration = 1 hora&lt;br /&gt;
| title = Edit-a-thon: DataVoyage in Commons&lt;br /&gt;
| speaker = [[m:User:Galahad|Carlos Mora]]&lt;br /&gt;
}}&lt;br /&gt;
{{ConferenceCard&lt;br /&gt;
| emoji = &lt;br /&gt;
| break2 = FOTOGRAFIA DE GRUPO - AREA DE TERRAZA&lt;br /&gt;
| breakt = 15:00&lt;br /&gt;
| breakd = 15 minutos&lt;br /&gt;
}}{{ConferenceCard&lt;br /&gt;
| emoji = ☕&lt;br /&gt;
| break2 = Pausa&lt;br /&gt;
| breakt = 15:15&lt;br /&gt;
| breakd = 15 minutos&lt;br /&gt;
}}&lt;br /&gt;
{{ConferenceCard&lt;br /&gt;
| date = 2022-07-12&lt;br /&gt;
| time = 15:30&lt;br /&gt;
| duration = 1 hora&lt;br /&gt;
| title = Behavior design&lt;br /&gt;
| speaker = Carlos Egaña&lt;br /&gt;
}}&lt;br /&gt;
{{ConferenceCard&lt;br /&gt;
| date = 2022-07-12&lt;br /&gt;
| time = 16:30&lt;br /&gt;
| duration = 15 minutos&lt;br /&gt;
| title = Cierre y despedida &lt;br /&gt;
}}&lt;br /&gt;
{{ConferenceCard&lt;br /&gt;
| emoji = 🎷&lt;br /&gt;
| break2 = Sábado cultural&lt;br /&gt;
| breakt = 16:45&lt;br /&gt;
| breakd = 15 minutos&lt;br /&gt;
}}&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;big&amp;gt;Domingo, 14 de agosto&amp;lt;/big&amp;gt;&lt;br /&gt;
{{ConferenceCard&lt;br /&gt;
| emoji = 📷&lt;br /&gt;
| date = 2022-07-14&lt;br /&gt;
| time = 09:15&lt;br /&gt;
| duration = 3 horas&lt;br /&gt;
| title = Paseo fotográfico&lt;br /&gt;
}}&lt;br /&gt;
{{ConferenceCard&lt;br /&gt;
| emoji = 🍝&lt;br /&gt;
| break2 = Almuerzo&lt;br /&gt;
| breakt = 13:00&lt;br /&gt;
| breakd = 60 minutos &lt;br /&gt;
}}&lt;br /&gt;
{{ConferenceCard&lt;br /&gt;
| date = 2022-07-14&lt;br /&gt;
| time = 14:00&lt;br /&gt;
| duration = 30 minutos&lt;br /&gt;
| title = Despedida de los becados&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Equipo organizador ==&lt;br /&gt;
{| style=&amp;quot;margin: 1em auto;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
{{Voluntario|contenido=Coordinador General de Wikimedia Small Projects y Vicepresidente de Wikimedia Venezuela|center=yes|nombre=Carlos Mora|usuario=Galahad|idiomas=es, en-1}}&lt;br /&gt;
{{Voluntario|desc=yes|center=yes|nombre=Alexandra Bello|usuario=Alexandrabello|idiomas=es,en-3}}&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{{Voluntario|contenido=Presidente de Wikimedia Venezuela y observador de Wikimedia Small Projects|center=yes|nombre=Ybsen Lucero|usuario=Ybsen_lucero|idiomas=es, en-2, ar-1, ca-1}}&lt;br /&gt;
{{Voluntario|contenido=Observador e integrante del Equipo de Comunicación de Wikimedia Small Projects|center=yes|nombre=Richard Varela|usuario=RichdVarela|idiomas=es, en-1}}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=Plantilla:Proponer_propuesta&amp;diff=7146</id>
		<title>Plantilla:Proponer propuesta</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=Plantilla:Proponer_propuesta&amp;diff=7146"/>
		<updated>2023-07-28T04:02:04Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:&amp;lt;span style=&amp;quot;display:none;&amp;quot;&amp;gt;{{FULLPAGENAME}}&amp;lt;/span&amp;gt;}}&lt;br /&gt;
{| class=&amp;quot;bgesp&amp;quot; style=&amp;quot;padding: 0.2em; margin-bottom: 1em;;  border-radius: .2em; width: 100%; border: 1px solid #a2a9b1; border-bottom: 5px solid #32AFAF&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: .4em 1.6em 1em; text-align: left;&amp;quot; | &amp;lt;strong style=&amp;quot;font-size: 220%;&amp;quot;&amp;gt;[[Archivo:Wikisp-logo-icon.svg|100px]]&amp;amp;nbsp;{{{título}}}&amp;lt;/strong&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
{| style=&amp;quot;width: 100%; center; border-radius: .2em; border: 1px solid #a2a9b1; margin-top: 2px; margin-bottom: 2px; padding: 0.2em;&amp;quot;|&lt;br /&gt;
   &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;p style=&amp;quot;border: solid #32AFAF; border-width: 0 0 0 5px; padding: 0 0 0 .5em;&amp;quot;&amp;gt;{{{desc|Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.}}}&amp;lt;/p&amp;gt;&lt;br /&gt;
{| style=&amp;quot;margin-bottom:0;&amp;quot;|&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td style=&amp;quot;{{#switch:{{{estado}}}|nuevo=border: 2px solid #2a4b8d; font-weight: bold;|background: #a2a9b1; border-right-color: #fff; color: #666;}}&amp;quot;&amp;gt;Nueva propuesta&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td style=&amp;quot;{{#switch:{{{estado}}}|revisión=border: 2px solid #2a4b8d; font-weight: bold;|background: #a2a9b1; border-right-color: #fff; color: #666;}}&amp;quot;&amp;gt;Bajo revisión&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td style=&amp;quot;{{#switch:{{{estado}}}|aprobado|rechazado=border: 2px solid #2a4b8d; font-weight: bold;|background: #a2a9b1; border-right-color: #fff; color: #666;}}&amp;quot;&amp;gt;Decisión final&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
{| style=&amp;quot;width: 100%; margin-top: 0;&amp;quot;|&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td valign=&amp;quot;center&amp;quot; style=&amp;quot;width: 50px; border: 0;&amp;quot;&amp;gt;{{#switch:{{{estado}}}&lt;br /&gt;
 |nuevo       = [[Archivo:OOjs_UI_icon_articleNew-ltr.svg|50px]]&lt;br /&gt;
 |revisión    = [[Archivo:OOjs_UI_icon_articleSearch-ltr-progressive.svg|50px]]&lt;br /&gt;
 |aprobado    = [[Archivo:OOjs_UI_icon_check-constructive.svg|50px]]&lt;br /&gt;
 |rechazado   = [[Archivo:OOjs UI icon close-ltr-destructive.svg|50px]]&lt;br /&gt;
    }}&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td style=&amp;quot;border:0;&amp;quot;&amp;gt;{{#switch:{{{estado}}}&lt;br /&gt;
 |nuevo = Esta es una nueva propuesta. Siéntase libre de comentarla en la [[Talk:{{SUBPAGENAME}}|discusión]]. Durante este período, las sugerencias respecto a cambios sustanciales en la propuesta son permisibles.&lt;br /&gt;
 |revisión = Esta propuesta está bajo revisión. Ahora los miembros activos del Consejo deliberarán si pueden recomendar su viabilidad o no a la [[Comisión Administrativa]]. Aún puedes comentarla en la [[Talk:{{SUBPAGENAME}}|discusión]], pero la propuesta estará protegida para evitar cambios que afecten el contenido a revisar.&lt;br /&gt;
 |aprobado = Conforme a la recomendación del Consejo, la Comisión Administrativa ha aprobado esta propuesta.&lt;br /&gt;
 |rechazado = La propuesta no es conveniente para los intereses del grupo, por lo que el Consejo la ha rechazado.&lt;br /&gt;
}}&lt;br /&gt;
{{#switch:{{{estado}}}&lt;br /&gt;
 |{{#if:{{{comentario|}}}|&amp;lt;p&amp;gt;El siguiente comentario expresado por {{REVISIONUSER}} denota los motivos por las cuales ha sido {{#switch:{{{estado}}}|aprobado=aprobada|rechazado=rechazada}}: &amp;lt;/p&amp;gt; &amp;lt;div style=&amp;quot;margin-left: 2em; font-style: italic;&amp;quot;&amp;quot;&amp;gt;«{{{comentario}}}»&amp;lt;/div&amp;gt;}}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{#switch:{{{estado|}}}&lt;br /&gt;
 |nuevo        = [[Categoría:Nuevas propuestas]]&lt;br /&gt;
 |revisión     = [[Categoría:Propuestas bajo revisión]]&lt;br /&gt;
 |aprobado     = [[Categoría:Propuestas aprobadas]]&lt;br /&gt;
 |rechazado    = [[Categoría:Propuestas rechazadas]]&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=MediaWiki:Citizen.css&amp;diff=7145</id>
		<title>MediaWiki:Citizen.css</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=MediaWiki:Citizen.css&amp;diff=7145"/>
		<updated>2023-07-28T03:59:07Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* All CSS here will be loaded for users of the Citizen skin */&lt;br /&gt;
/* Courtesy of starcitizen.tools */&lt;br /&gt;
:root {&lt;br /&gt;
    --width-layout: 1280px; /* Slightly wider content */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Adjust primary color &lt;br /&gt;
:root {&lt;br /&gt;
	--color-primary__h: 205;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Adjust contrast since we changed primary color&lt;br /&gt;
:root.skin-citizen-dark {&lt;br /&gt;
	--color-primary__l: 56%;&lt;br /&gt;
}&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
/* Align icon opacity with skin default */&lt;br /&gt;
.mw-logo-icon {&lt;br /&gt;
	opacity: var( --opacity-icon-base );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Footer icons&lt;br /&gt;
 * We use custom footer icons so we need to fine tune it&lt;br /&gt;
&lt;br /&gt;
/* More space between icons&lt;br /&gt;
#footer-icons ul {&lt;br /&gt;
	gap: var( --space-md );&lt;br /&gt;
}&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
/* Background responsive para las plantillas */&lt;br /&gt;
&lt;br /&gt;
.bgesp {&lt;br /&gt;
	background-color:#f9fafb;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-citizen-dark .bgesp {&lt;br /&gt;
	background-color: #1d2830;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Color de letra Púrpura para las plantillas */&lt;br /&gt;
&lt;br /&gt;
.purpura {&lt;br /&gt;
	color:#520044;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-citizen-dark .purpura {&lt;br /&gt;
	color: #df00b9;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=SuenaWiki/Episodes&amp;diff=7144</id>
		<title>SuenaWiki/Episodes</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=SuenaWiki/Episodes&amp;diff=7144"/>
		<updated>2023-07-28T03:53:15Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;templatestyles src=&amp;quot;SuenaWiki/styles.css&amp;quot; /&amp;gt;&lt;br /&gt;
{{DISPLAYTITLE:Episodios de SuenaWiki}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Primera temporada ==&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-style=&amp;quot;color:#FFF&amp;quot;&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;3%&amp;quot; | №&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;3%&amp;quot; | #&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot;            | Título&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;18%&amp;quot;| Invitados&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;15%&amp;quot;| Fecha de emisión&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;15%&amp;quot;| Reproducir&lt;br /&gt;
|-&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 01&lt;br /&gt;
 |EpisodeNumber2  = 01&lt;br /&gt;
 |Title           = Fake News&lt;br /&gt;
 |Guests          = Carlos Delgado Flores&lt;br /&gt;
 |OriginalAirDate = 19 de diciembre de 2018&lt;br /&gt;
 |Link            = https://m.soundcloud.com/wikimedia_ve/episodio-1-fake-news-suena-wiki&lt;br /&gt;
 |ShortSummary    = 0101&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 02&lt;br /&gt;
 |EpisodeNumber2  = 02&lt;br /&gt;
 |Title           = Brecha de Género&lt;br /&gt;
 |Guests          = Yenni Peña&lt;br /&gt;
 |OriginalAirDate = 28 de diciembre de 2018&lt;br /&gt;
 |Link            = https://m.soundcloud.com/wikimedia_ve/episodio-4-brecha-de-genero-suena-wiki&lt;br /&gt;
 |ShortSummary    = 0202&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 03&lt;br /&gt;
 |EpisodeNumber2  = 03&lt;br /&gt;
 |Title           = Acceso a la información pública&lt;br /&gt;
 |Guests          = Mildred Rojas&lt;br /&gt;
 |OriginalAirDate = 24 de enero de 2019&lt;br /&gt;
 |Link            = https://m.soundcloud.com/wikimedia_ve/episodio-2-acceso-a-la-informacion-publica-suena-wiki&lt;br /&gt;
 |ShortSummary    = 0303&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 04&lt;br /&gt;
 |EpisodeNumber2  = 04&lt;br /&gt;
 |Title           = Wikimedia&lt;br /&gt;
 |Guests          = -&lt;br /&gt;
 |OriginalAirDate = 25 de enero de 2019&lt;br /&gt;
 |Link            = https://m.soundcloud.com/wikimedia_ve/episodio-3-wikimedia-suena-wiki&lt;br /&gt;
 |ShortSummary    = 0404&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 05&lt;br /&gt;
 |EpisodeNumber2  = 05&lt;br /&gt;
 |Title           = WikiDDHH&lt;br /&gt;
 |Guests          = Luisina Ferrante&lt;br /&gt;
 |OriginalAirDate = 25 de enero de 2019&lt;br /&gt;
 |Link            = https://m.soundcloud.com/wikimedia_ve/episodio-5-wikiddhh-suena-wiki&lt;br /&gt;
 |ShortSummary    = 0505&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 06&lt;br /&gt;
 |EpisodeNumber2  = 06&lt;br /&gt;
 |Title           = Bloqueo a Wikipedia&lt;br /&gt;
 |Guests          = -&lt;br /&gt;
 |OriginalAirDate = 15 de febrero de 2019&lt;br /&gt;
 |Link            = https://m.soundcloud.com/wikimedia_ve/bloqueo-a-wikipedia-suena-wiki&lt;br /&gt;
 |ShortSummary    = 0606&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
|}&lt;br /&gt;
== Segunda temporada ==&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-style=&amp;quot;color:#FFF&amp;quot;&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;3%&amp;quot; | №&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;3%&amp;quot; | #&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot;            | Título&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;18%&amp;quot;| Invitados&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;15%&amp;quot;| Fecha de emisión&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;15%&amp;quot;| Reproducir&lt;br /&gt;
|-&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 07&lt;br /&gt;
 |EpisodeNumber2  = 01&lt;br /&gt;
 |Title           = SuenaWiki #2.1 con Neima Paz&lt;br /&gt;
 |Guests          = [[m:User:Neimapaz|Neima Paz]]&lt;br /&gt;
 |OriginalAirDate = 09 de abril de 2020&lt;br /&gt;
 |Link            = https://anchor.fm/suenawiki/episodes/SuenaWiki-2-1-con-Neima-Paz-eclne5&lt;br /&gt;
 |ShortSummary    = 0701&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 08&lt;br /&gt;
 |EpisodeNumber2  = 02&lt;br /&gt;
 |Title           = SuenaWiki #2.2 con Jin Kadaba&lt;br /&gt;
 |Guests          = [[m:User:Talueses|Jin Kadaba]]&lt;br /&gt;
 |OriginalAirDate = 09 de abril de 2020&lt;br /&gt;
 |Link            = https://anchor.fm/suenawiki/episodes/SuenaWiki-2-2-con-Jin-Kadaba-ecu3tp&lt;br /&gt;
 |ShortSummary    = 0802&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 09&lt;br /&gt;
 |EpisodeNumber2  = 03&lt;br /&gt;
 |Title           = SuenaWiki #2.3 con Anna Torres&lt;br /&gt;
 |Guests          = [[m:User:Anna Torres (WMAR)|Anna Torres]]&lt;br /&gt;
 |OriginalAirDate = 17 de abril de 2020&lt;br /&gt;
 |Link            = https://anchor.fm/suenawiki/episodes/SuenaWiki-2-3-con-Anna-Torres-ed1o84&lt;br /&gt;
 |ShortSummary    = 0903&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 10&lt;br /&gt;
 |EpisodeNumber2  = 04&lt;br /&gt;
 |Title           = SuenaWiki #2.4 con Mariammny Contreras&lt;br /&gt;
 |Guests          = [[m:User:Marinati55|Mariammny Contreras]]&lt;br /&gt;
 |OriginalAirDate = 8 de mayo de 2020&lt;br /&gt;
 |Link            = https://anchor.fm/suenawiki/episodes/SuenaWiki-2-4-con-Mariamnny-Contreras-edqe0f&lt;br /&gt;
 |ShortSummary    = 1004&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 11&lt;br /&gt;
 |EpisodeNumber2  = 05&lt;br /&gt;
 |Title           = SuenaWiki #2.5 con Santiago de Viana&lt;br /&gt;
 |Guests          = Santiago de Viana&lt;br /&gt;
 |OriginalAirDate = 23 de mayo de 2020&lt;br /&gt;
 |Link            = https://anchor.fm/suenawiki/episodes/SuenaWiki-2-5-con-Santiago-de-Viana-eefgi3&lt;br /&gt;
 |ShortSummary    = 1105&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 12&lt;br /&gt;
 |EpisodeNumber2  = 06&lt;br /&gt;
 |Title           = SuenaWiki #2.6 con Aura Marina Boadas&lt;br /&gt;
 |Guests          = Aura Marina Boadas&lt;br /&gt;
 |OriginalAirDate = 4 de junio de 2020&lt;br /&gt;
 |Link            = https://anchor.fm/suenawiki/episodes/SuenaWiki-2-7-con-Carlos-Delgado-Flores-egsuoo&lt;br /&gt;
 |ShortSummary    = 1206&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 13&lt;br /&gt;
 |EpisodeNumber2  = 07&lt;br /&gt;
 |Title           = SuenaWiki #2.7 con Carlos Delgado Flores&lt;br /&gt;
 |Guests          = Carlos Delgado Flores&lt;br /&gt;
 |OriginalAirDate = 17 de julio de 2020&lt;br /&gt;
 |Link            = https://anchor.fm/suenawiki/episodes/SuenaWiki-2-7-con-Carlos-Delgado-Flores-egsuoo&lt;br /&gt;
 |ShortSummary    = 1307&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 14&lt;br /&gt;
 |EpisodeNumber2  = 08&lt;br /&gt;
 |Title           = SuenaWiki #2.8 con José Luis Mendoza&lt;br /&gt;
 |Guests          = José Luis Mendoza&lt;br /&gt;
 |OriginalAirDate = 31 de julio de 2020&lt;br /&gt;
 |Link            = https://anchor.fm/suenawiki/episodes/SuenaWiki-2-8-con-Jos-Luis-Mendoza-ehgm78&lt;br /&gt;
 |ShortSummary    = 1408&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tercera temporada ==&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-style=&amp;quot;color:#FFF&amp;quot;&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;3%&amp;quot; | №&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;3%&amp;quot; | #&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot;            | Título&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;18%&amp;quot;| Invitados&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;15%&amp;quot;| Fecha de emisión&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;15%&amp;quot;| Reproducir&lt;br /&gt;
|-&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 15&lt;br /&gt;
 |EpisodeNumber2  = 01&lt;br /&gt;
 |Title           = ¡Esto es SuenaWiki!&lt;br /&gt;
 |Guests          = [[User:Galahad|Galahad]]&lt;br /&gt;
 |OriginalAirDate = 23 de septiembre de 2021&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWikiT3E1-Podcast.mp3&lt;br /&gt;
 |ShortSummary    = 1501&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 16&lt;br /&gt;
 |EpisodeNumber2  = 02&lt;br /&gt;
 |Title           = ¡Hablemos de Wikiviajes y Wikinoticias!&lt;br /&gt;
 |Guests          = [[User:Galahad|Galahad]]&lt;br /&gt;
 |OriginalAirDate = 18 de octubre de 2021&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWikiT3E2-Podcast.mp3&lt;br /&gt;
 |ShortSummary    = 1602&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 17&lt;br /&gt;
 |EpisodeNumber2  = 03&lt;br /&gt;
 |Title           = Derechos humanos y Wikimedia&lt;br /&gt;
 |Guests          = Sofía Marquina&lt;br /&gt;
 |OriginalAirDate = 18 de octubre de 2021&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWikiT3E3_-_Podcast.mp3&lt;br /&gt;
 |ShortSummary    = 1703&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 18&lt;br /&gt;
 |EpisodeNumber2  = 04&lt;br /&gt;
 |Title           = Aniversario de Wikimedia Venezuela&lt;br /&gt;
 |Guests          = [[m:User:Talueses|Jin Kadaba]]&amp;lt;br&amp;gt;[[m:User:Oscar_.|Oscar Costero]]&amp;lt;br&amp;gt;[[m:User:Ybsen_lucero|Ybsen Lucero]]&lt;br /&gt;
 |OriginalAirDate = 28 de octubre de 2021&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWikiT3E4-Podcast.mp3&lt;br /&gt;
 |ShortSummary    = 1804&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 19&lt;br /&gt;
 |EpisodeNumber2  = 05&lt;br /&gt;
 |Title           = Premios Allie&lt;br /&gt;
 |Guests          = [[m:User:IMony.|IMony.]]&lt;br /&gt;
 |OriginalAirDate = 16 de noviembre de 2021&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWikiT3E7-Podcast.mp3&lt;br /&gt;
 |ShortSummary    = 1905&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 20&lt;br /&gt;
 |EpisodeNumber2  = 06&lt;br /&gt;
 |Title           = Wikimedia en la educación&lt;br /&gt;
 |Guests          = José Ibarra&lt;br /&gt;
 |OriginalAirDate = 21 de noviembre de 2021&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWikiT3E5-Podcast.mp3&lt;br /&gt;
 |ShortSummary    = 2006&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 21&lt;br /&gt;
 |EpisodeNumber2  = 07&lt;br /&gt;
 |Title           = Proyecto de ley de reformas digitales&lt;br /&gt;
 |Guests          = Patricia Diaz&lt;br /&gt;
 |OriginalAirDate = 28 de noviembre de 2021&lt;br /&gt;
 |Link            = https://anchor.fm/wikisp/episodes/SuenaWiki-Patricia-Diaz-e1abckg&lt;br /&gt;
 |ShortSummary    = 2107&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 22&lt;br /&gt;
 |EpisodeNumber2  = 08&lt;br /&gt;
 |Title           = Digital Services Act&lt;br /&gt;
 |Guests          = Pepe Florez&lt;br /&gt;
 |OriginalAirDate = 21 de enero de 2022&lt;br /&gt;
 |Link            = https://anchor.fm/wikisp/episodes/Episodio-8-Pepe-Flores-Wikimedia-Mxico-e1d90do&lt;br /&gt;
 |ShortSummary    = 2208&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Cuarta temporada ==&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-style=&amp;quot;color:#FFF&amp;quot;&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;3%&amp;quot; | №&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;3%&amp;quot; | #&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot;            | Título&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;18%&amp;quot;| Invitados&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;15%&amp;quot;| Fecha de emisión&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;15%&amp;quot;| Reproducir&lt;br /&gt;
|-&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 23&lt;br /&gt;
 |EpisodeNumber2  = 01&lt;br /&gt;
 |Title           = Comité de Afiliaciones&lt;br /&gt;
 |Guests          = [[m:User:Maor X|Carlos Colina]]&lt;br /&gt;
 |OriginalAirDate = 27 de febrero de 2022&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWiki_Podcast_E1-T4.mp3&lt;br /&gt;
 |ShortSummary    = 2301&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 24&lt;br /&gt;
 |EpisodeNumber2  = 02&lt;br /&gt;
 |Title           = Wiki Loves Folklore&lt;br /&gt;
 |Guests          = [[m:User:TaronjaSatsuma|Francesc Fort]]&lt;br /&gt;
 |OriginalAirDate = 27 de febrero de 2022&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWiki_Podcast_E2-T4.mp3&lt;br /&gt;
 |ShortSummary    = 2402&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 25&lt;br /&gt;
 |EpisodeNumber2  = 03&lt;br /&gt;
 |Title           = JCPA (inglés)&lt;br /&gt;
 |Guests          = Kate Ruane&lt;br /&gt;
 |OriginalAirDate = 05 de marzo de 2022&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWiki_Podcast_E3-T4.mp3&lt;br /&gt;
 |ShortSummary    = 2503&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 26&lt;br /&gt;
 |EpisodeNumber2  = 04&lt;br /&gt;
 |Title           = JCPA (español)&lt;br /&gt;
 |Guests          = Alexandra Bello&lt;br /&gt;
 |OriginalAirDate = 29 de marzo de 2022&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWiki_Podcast_E4-T4.mp3&lt;br /&gt;
 |ShortSummary    = 2604&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 27&lt;br /&gt;
 |EpisodeNumber2  = 05&lt;br /&gt;
 |Title           = Ucrania&lt;br /&gt;
 |Guests          = Elber Ortiz&amp;lt;br&amp;gt;Francesc Fort&amp;lt;br&amp;gt;Galahad&lt;br /&gt;
 |OriginalAirDate = 29 de marzo de 2022&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWiki_Podcast_E5-T4.mp3&lt;br /&gt;
 |ShortSummary    = 2705&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 28&lt;br /&gt;
 |EpisodeNumber2  = 06&lt;br /&gt;
 |Title           = WikiForHumanRights&lt;br /&gt;
 |Guests          = Carlo Brescia&lt;br /&gt;
 |OriginalAirDate = 04 de abril de 2022&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWiki_Podcast_E6-T4.mp3&lt;br /&gt;
 |ShortSummary    = 2806&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 29&lt;br /&gt;
 |EpisodeNumber2  = 07&lt;br /&gt;
 |Title           = SoundLogo&lt;br /&gt;
 |Guests          = Mehrdad Pourzaki&lt;br /&gt;
 |OriginalAirDate = 27 de junio de 2022&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWiki_Podcast_E7-T4.mp3&lt;br /&gt;
 |ShortSummary    = 2907&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 30&lt;br /&gt;
 |EpisodeNumber2  = 08&lt;br /&gt;
 |Title           = Wikimania&lt;br /&gt;
 |Guests          = Evelin Heidel&amp;lt;br&amp;gt;Omar Sansi&lt;br /&gt;
 |OriginalAirDate = 01 de julio de 2022&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWiki_Podcast_E8-T4.mp3&lt;br /&gt;
 |ShortSummary    = 3008&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 31&lt;br /&gt;
 |EpisodeNumber2  = 09&lt;br /&gt;
 |Title           = Wikimedia Summit&lt;br /&gt;
 |Guests          = Cornelius Kibelka&lt;br /&gt;
 |OriginalAirDate = 01 de julio de 2022&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWiki_Podcast_E9-T4.mp3&lt;br /&gt;
 |ShortSummary    = 3109&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
|}&lt;br /&gt;
== Quinta temporada ==&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{| class=&amp;quot;mw-collapsible wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-style=&amp;quot;color:#FFF&amp;quot;&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;3%&amp;quot; | №&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;3%&amp;quot; | #&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot;            | Título&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;18%&amp;quot;| Invitados&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;15%&amp;quot;| Fecha de emisión&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;15%&amp;quot;| Reproducir&lt;br /&gt;
|-&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 32&lt;br /&gt;
 |EpisodeNumber2  = 01&lt;br /&gt;
 |Title           = Desarrollo de Liderazgo&lt;br /&gt;
 |Guests          = [[m:User:La Mantis|Rocío Consales]]&lt;br /&gt;
 |OriginalAirDate = 20 de octubre de 2022&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWiki_Podcast_E1T5.mp3&lt;br /&gt;
 |ShortSummary    = 3201&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 33&lt;br /&gt;
 |EpisodeNumber2  = 02&lt;br /&gt;
 |Title           = Premios Allie&lt;br /&gt;
 |Guests          = [[m:User:GBordoy (WMF)|Giselle Bordoy]]&lt;br /&gt;
 |OriginalAirDate = 16 de noviembre de 2022&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWiki_Podcast_E2T5.mp3&lt;br /&gt;
 |ShortSummary    = 3202&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 34&lt;br /&gt;
 |EpisodeNumber2  = 03&lt;br /&gt;
 |Title           = Comunidad lusófona y su relación con la comunidad hispana&lt;br /&gt;
 |Guests          = [[m:User:TCappilletto (WMF)|Tila Cappilletto]]&lt;br /&gt;
 |OriginalAirDate = 28 de diciembre de 2022&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWiki_T5E3.mp3&lt;br /&gt;
 |ShortSummary    = 3202&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 35&lt;br /&gt;
 |EpisodeNumber2  = 04&lt;br /&gt;
 |Title           = Wikimedia y los gobiernos&lt;br /&gt;
 |Guests          = [[m:User:ProtoplasmaKid|ProtoplasmaKid]]&lt;br /&gt;
 |OriginalAirDate = 23 de enero de 2023&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWiki_T5-E4.mp3&lt;br /&gt;
 |ShortSummary    = 3504&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 36&lt;br /&gt;
 |EpisodeNumber2  = 05&lt;br /&gt;
 |Title           = Brecha de género&lt;br /&gt;
 |Guests          = [[m:User:Metik|Carmen Alcázar]], [[m:User:Tiputini|Ester Bonet]]&lt;br /&gt;
 |OriginalAirDate = 15 de febrero de 2023&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWiki_Podcast_-_T5E5.mp3&lt;br /&gt;
 |ShortSummary    = 3605&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 37&lt;br /&gt;
 |EpisodeNumber2  = 06&lt;br /&gt;
 |Title           = WikiLearn&lt;br /&gt;
 |Guests          = [[m:User:Asaf (WMF)|Asaf Bartov]]&lt;br /&gt;
 |OriginalAirDate = 20 de febrero de 2023&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWiki_Podcast_-_T5E6.mp3&lt;br /&gt;
 |ShortSummary    = 3706&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 38&lt;br /&gt;
 |EpisodeNumber2  = 07&lt;br /&gt;
 |Title           = ¡Alto! Mujeres trabajando&lt;br /&gt;
 |Guests          = Anna Torres, Paula Domínguez&lt;br /&gt;
 |OriginalAirDate = 28 de marzo de 2023&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWiki_Podcast_-_T5E7.mp3&lt;br /&gt;
 |ShortSummary    = 3807&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 39&lt;br /&gt;
 |EpisodeNumber2  = 08&lt;br /&gt;
 |Title           = Internet Archive&lt;br /&gt;
 |Guests          = Iván Martínez&lt;br /&gt;
 |OriginalAirDate = 03 de abril de 2023&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWiki_Podcast_-_E8T5.mp3&lt;br /&gt;
 |ShortSummary    = 3908&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 40&lt;br /&gt;
 |EpisodeNumber2  = 09&lt;br /&gt;
 |Title           = Queering Wikipedia&lt;br /&gt;
 |Guests          = MiguelAngelCS, Vic&lt;br /&gt;
 |OriginalAirDate = 20 de mayo de 2023&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWiki_Podcast_-_E9T5.mp3&lt;br /&gt;
 |ShortSummary    = 4009&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 41&lt;br /&gt;
 |EpisodeNumber2  = 10&lt;br /&gt;
 |Title           = Desequilibrio en traducciones en Wikipedia&lt;br /&gt;
 |Guests          = Nathaly Toledo&lt;br /&gt;
 |OriginalAirDate = 22 de mayo de 2023&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWiki_Podcast_-_E10T5.mp3&lt;br /&gt;
 |ShortSummary    = 4110&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 42&lt;br /&gt;
 |EpisodeNumber2  = 11&lt;br /&gt;
 |Title           = Wikisource&lt;br /&gt;
 |Guests          = Ignacio Rodríguez&lt;br /&gt;
 |OriginalAirDate = 26 de junio de 2023&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWiki_Podcast_-_E11T5.mp3&lt;br /&gt;
 |ShortSummary    = 4211&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
|}&lt;br /&gt;
[[Categoría:SuenaWiki]]&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=Plantilla:EpisodeList&amp;diff=7143</id>
		<title>Plantilla:EpisodeList</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=Plantilla:EpisodeList&amp;diff=7143"/>
		<updated>2023-07-28T03:51:04Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;tr class=&amp;quot;bgesp&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{EpisodeNumber|ʁ}}}|ʁ| |&amp;lt;td id=&amp;quot;ep{{{EpisodeNumber}}}&amp;quot;&amp;gt;{{{EpisodeNumber}}}{{{EpisodeNumber_ref|}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&amp;lt;ref&amp;gt;&amp;lt;/ref&amp;gt;&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{EpisodeNumber2|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{EpisodeNumber2}}}&amp;lt;/td&amp;gt;}}&lt;br /&gt;
&amp;lt;td&amp;gt;{{#if:{{{Title|}}}|&#039;&#039;&#039;«{{{Title}}}»&#039;&#039;&#039;}}{{{RTitle|}}}&amp;amp;nbsp;{{#if:{{{AltTitle|}}}|&amp;lt;br&amp;gt;«{{{AltTitle}}}»}}&amp;lt;/td&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{Aux1|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{Aux1}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{Guests|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{Guests}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{DirectedBy|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{DirectedBy}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{WrittenBy|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{WrittenBy}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{Aux2|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{Aux2}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{Aux3|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{Aux3}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{OriginalAirDate|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{OriginalAirDate}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{AltDate|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{AltDate}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{ProdCode|ʁ}}}|ʁ| |&amp;lt;td id=&amp;quot;pc{{{ProdCode}}}&amp;quot;&amp;gt;{{{ProdCode}}}{{{ProdCod_ref|}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{Viewers|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{Viewers}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{Link|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{button|url={{{Link}}}|1=Reproducir|class=mw-ui-progressive}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{Aux4|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{Aux4}}}&amp;lt;/td&amp;gt;}}&amp;lt;/tr&amp;gt;{{#ifeq:{{{ShortSummary|ʁ}}}|ʁ| |&amp;lt;tr class=&amp;quot;bgesp&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-bottom:3px solid #{{#if:{{{LineColor|}}}|{{{LineColor}}}|CCCCFF}}&amp;quot; colspan=&amp;quot;{{#expr:{{#ifeq:{{{Title|ʁ}}}|ʁ|{{#ifeq:{{{AltTitle|ʁ}}}|ʁ|{{#ifeq:{{{RTitle|ʁ}}}|ʁ|0|1}}|1}}|1}}+{{#ifeq:{{{Guests|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{DirectedBy|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{WrittenBy|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{Aux1|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{Aux2|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{Aux3|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{Aux4|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{Viewers|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{Link|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{AltDate|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{OriginalAirDate|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{ProdCode|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{EpisodeNumber|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{EpisodeNumber2|ʁ}}}|ʁ|0|1}}}}&amp;quot;&amp;gt;&lt;br /&gt;
{{EpisodeList/desc|id={{{ShortSummary}}}}}&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=SuenaWiki/Episodes&amp;diff=7142</id>
		<title>SuenaWiki/Episodes</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=SuenaWiki/Episodes&amp;diff=7142"/>
		<updated>2023-07-28T03:45:10Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;templatestyles src=&amp;quot;SuenaWiki/styles.css&amp;quot; /&amp;gt;&lt;br /&gt;
{{DISPLAYTITLE:Episodios de SuenaWiki}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Primera temporada ==&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-style=&amp;quot;color:#FFF&amp;quot;&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;3%&amp;quot; | №&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;3%&amp;quot; | #&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot;            | Título&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;18%&amp;quot;| Invitados&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;15%&amp;quot;| Fecha de emisión&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;15%&amp;quot;| Reproducir&lt;br /&gt;
|-&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 01&lt;br /&gt;
 |EpisodeNumber2  = 01&lt;br /&gt;
 |Title           = Fake News&lt;br /&gt;
 |Guests          = Carlos Delgado Flores&lt;br /&gt;
 |OriginalAirDate = 19 de diciembre de 2018&lt;br /&gt;
 |Link            = https://m.soundcloud.com/wikimedia_ve/episodio-1-fake-news-suena-wiki&lt;br /&gt;
 |ShortSummary    = 0101&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 02&lt;br /&gt;
 |EpisodeNumber2  = 02&lt;br /&gt;
 |Title           = Brecha de Género&lt;br /&gt;
 |Guests          = Yenni Peña&lt;br /&gt;
 |OriginalAirDate = 28 de diciembre de 2018&lt;br /&gt;
 |Link            = https://m.soundcloud.com/wikimedia_ve/episodio-4-brecha-de-genero-suena-wiki&lt;br /&gt;
 |ShortSummary    = 0202&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 03&lt;br /&gt;
 |EpisodeNumber2  = 03&lt;br /&gt;
 |Title           = Acceso a la información pública&lt;br /&gt;
 |Guests          = Mildred Rojas&lt;br /&gt;
 |OriginalAirDate = 24 de enero de 2019&lt;br /&gt;
 |Link            = https://m.soundcloud.com/wikimedia_ve/episodio-2-acceso-a-la-informacion-publica-suena-wiki&lt;br /&gt;
 |ShortSummary    = 0303&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 04&lt;br /&gt;
 |EpisodeNumber2  = 04&lt;br /&gt;
 |Title           = Wikimedia&lt;br /&gt;
 |Guests          = -&lt;br /&gt;
 |OriginalAirDate = 25 de enero de 2019&lt;br /&gt;
 |Link            = https://m.soundcloud.com/wikimedia_ve/episodio-3-wikimedia-suena-wiki&lt;br /&gt;
 |ShortSummary    = 0404&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 05&lt;br /&gt;
 |EpisodeNumber2  = 05&lt;br /&gt;
 |Title           = WikiDDHH&lt;br /&gt;
 |Guests          = Luisina Ferrante&lt;br /&gt;
 |OriginalAirDate = 25 de enero de 2019&lt;br /&gt;
 |Link            = https://m.soundcloud.com/wikimedia_ve/episodio-5-wikiddhh-suena-wiki&lt;br /&gt;
 |ShortSummary    = 0505&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 06&lt;br /&gt;
 |EpisodeNumber2  = 06&lt;br /&gt;
 |Title           = Bloqueo a Wikipedia&lt;br /&gt;
 |Guests          = -&lt;br /&gt;
 |OriginalAirDate = 15 de febrero de 2019&lt;br /&gt;
 |Link            = https://m.soundcloud.com/wikimedia_ve/bloqueo-a-wikipedia-suena-wiki&lt;br /&gt;
 |ShortSummary    = 0606&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
|}&lt;br /&gt;
== Segunda temporada ==&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-style=&amp;quot;color:#FFF&amp;quot;&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;3%&amp;quot; | №&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;3%&amp;quot; | #&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot;            | Título&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;18%&amp;quot;| Invitados&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;15%&amp;quot;| Fecha de emisión&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;15%&amp;quot;| Reproducir&lt;br /&gt;
|-&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 07&lt;br /&gt;
 |EpisodeNumber2  = 01&lt;br /&gt;
 |Title           = SuenaWiki #2.1 con Neima Paz&lt;br /&gt;
 |Guests          = [[m:User:Neimapaz|Neima Paz]]&lt;br /&gt;
 |OriginalAirDate = 09 de abril de 2020&lt;br /&gt;
 |Link            = https://anchor.fm/suenawiki/episodes/SuenaWiki-2-1-con-Neima-Paz-eclne5&lt;br /&gt;
 |ShortSummary    = 0701&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 08&lt;br /&gt;
 |EpisodeNumber2  = 02&lt;br /&gt;
 |Title           = SuenaWiki #2.2 con Jin Kadaba&lt;br /&gt;
 |Guests          = [[m:User:Talueses|Jin Kadaba]]&lt;br /&gt;
 |OriginalAirDate = 09 de abril de 2020&lt;br /&gt;
 |Link            = https://anchor.fm/suenawiki/episodes/SuenaWiki-2-2-con-Jin-Kadaba-ecu3tp&lt;br /&gt;
 |ShortSummary    = 0802&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 09&lt;br /&gt;
 |EpisodeNumber2  = 03&lt;br /&gt;
 |Title           = SuenaWiki #2.3 con Anna Torres&lt;br /&gt;
 |Guests          = [[m:User:Anna Torres (WMAR)|Anna Torres]]&lt;br /&gt;
 |OriginalAirDate = 17 de abril de 2020&lt;br /&gt;
 |Link            = https://anchor.fm/suenawiki/episodes/SuenaWiki-2-3-con-Anna-Torres-ed1o84&lt;br /&gt;
 |ShortSummary    = 0903&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 10&lt;br /&gt;
 |EpisodeNumber2  = 04&lt;br /&gt;
 |Title           = SuenaWiki #2.4 con Mariammny Contreras&lt;br /&gt;
 |Guests          = [[m:User:Marinati55|Mariammny Contreras]]&lt;br /&gt;
 |OriginalAirDate = 8 de mayo de 2020&lt;br /&gt;
 |Link            = https://anchor.fm/suenawiki/episodes/SuenaWiki-2-4-con-Mariamnny-Contreras-edqe0f&lt;br /&gt;
 |ShortSummary    = 1004&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 11&lt;br /&gt;
 |EpisodeNumber2  = 05&lt;br /&gt;
 |Title           = SuenaWiki #2.5 con Santiago de Viana&lt;br /&gt;
 |Guests          = Santiago de Viana&lt;br /&gt;
 |OriginalAirDate = 23 de mayo de 2020&lt;br /&gt;
 |Link            = https://anchor.fm/suenawiki/episodes/SuenaWiki-2-5-con-Santiago-de-Viana-eefgi3&lt;br /&gt;
 |ShortSummary    = 1105&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 12&lt;br /&gt;
 |EpisodeNumber2  = 06&lt;br /&gt;
 |Title           = SuenaWiki #2.6 con Aura Marina Boadas&lt;br /&gt;
 |Guests          = Aura Marina Boadas&lt;br /&gt;
 |OriginalAirDate = 4 de junio de 2020&lt;br /&gt;
 |Link            = https://anchor.fm/suenawiki/episodes/SuenaWiki-2-7-con-Carlos-Delgado-Flores-egsuoo&lt;br /&gt;
 |ShortSummary    = 1206&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 13&lt;br /&gt;
 |EpisodeNumber2  = 07&lt;br /&gt;
 |Title           = SuenaWiki #2.7 con Carlos Delgado Flores&lt;br /&gt;
 |Guests          = Carlos Delgado Flores&lt;br /&gt;
 |OriginalAirDate = 17 de julio de 2020&lt;br /&gt;
 |Link            = https://anchor.fm/suenawiki/episodes/SuenaWiki-2-7-con-Carlos-Delgado-Flores-egsuoo&lt;br /&gt;
 |ShortSummary    = 1307&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 14&lt;br /&gt;
 |EpisodeNumber2  = 08&lt;br /&gt;
 |Title           = SuenaWiki #2.8 con José Luis Mendoza&lt;br /&gt;
 |Guests          = José Luis Mendoza&lt;br /&gt;
 |OriginalAirDate = 31 de julio de 2020&lt;br /&gt;
 |Link            = https://anchor.fm/suenawiki/episodes/SuenaWiki-2-8-con-Jos-Luis-Mendoza-ehgm78&lt;br /&gt;
 |ShortSummary    = 1408&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tercera temporada ==&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-style=&amp;quot;color:#FFF&amp;quot;&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;3%&amp;quot; | №&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;3%&amp;quot; | #&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot;            | Título&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;18%&amp;quot;| Invitados&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;15%&amp;quot;| Fecha de emisión&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;15%&amp;quot;| Reproducir&lt;br /&gt;
|-&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 15&lt;br /&gt;
 |EpisodeNumber2  = 01&lt;br /&gt;
 |Title           = ¡Esto es SuenaWiki!&lt;br /&gt;
 |Guests          = [[User:Galahad|Galahad]]&lt;br /&gt;
 |OriginalAirDate = 23 de septiembre de 2021&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWikiT3E1-Podcast.mp3&lt;br /&gt;
 |ShortSummary    = 1501&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 16&lt;br /&gt;
 |EpisodeNumber2  = 02&lt;br /&gt;
 |Title           = ¡Hablemos de Wikiviajes y Wikinoticias!&lt;br /&gt;
 |Guests          = [[User:Galahad|Galahad]]&lt;br /&gt;
 |OriginalAirDate = 18 de octubre de 2021&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWikiT3E2-Podcast.mp3&lt;br /&gt;
 |ShortSummary    = 1602&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 17&lt;br /&gt;
 |EpisodeNumber2  = 03&lt;br /&gt;
 |Title           = Derechos humanos y Wikimedia&lt;br /&gt;
 |Guests          = Sofía Marquina&lt;br /&gt;
 |OriginalAirDate = 18 de octubre de 2021&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWikiT3E3_-_Podcast.mp3&lt;br /&gt;
 |ShortSummary    = 1703&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 18&lt;br /&gt;
 |EpisodeNumber2  = 04&lt;br /&gt;
 |Title           = Aniversario de Wikimedia Venezuela&lt;br /&gt;
 |Guests          = [[m:User:Talueses|Jin Kadaba]]&amp;lt;br&amp;gt;[[m:User:Oscar_.|Oscar Costero]]&amp;lt;br&amp;gt;[[m:User:Ybsen_lucero|Ybsen Lucero]]&lt;br /&gt;
 |OriginalAirDate = 28 de octubre de 2021&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWikiT3E4-Podcast.mp3&lt;br /&gt;
 |ShortSummary    = 1804&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 19&lt;br /&gt;
 |EpisodeNumber2  = 05&lt;br /&gt;
 |Title           = Premios Allie&lt;br /&gt;
 |Guests          = [[m:User:IMony.|IMony.]]&lt;br /&gt;
 |OriginalAirDate = 16 de noviembre de 2021&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWikiT3E7-Podcast.mp3&lt;br /&gt;
 |ShortSummary    = 1905&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 20&lt;br /&gt;
 |EpisodeNumber2  = 06&lt;br /&gt;
 |Title           = Wikimedia en la educación&lt;br /&gt;
 |Guests          = José Ibarra&lt;br /&gt;
 |OriginalAirDate = 21 de noviembre de 2021&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWikiT3E5-Podcast.mp3&lt;br /&gt;
 |ShortSummary    = 2006&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 21&lt;br /&gt;
 |EpisodeNumber2  = 07&lt;br /&gt;
 |Title           = Proyecto de ley de reformas digitales&lt;br /&gt;
 |Guests          = Patricia Diaz&lt;br /&gt;
 |OriginalAirDate = 28 de noviembre de 2021&lt;br /&gt;
 |Link            = https://anchor.fm/wikisp/episodes/SuenaWiki-Patricia-Diaz-e1abckg&lt;br /&gt;
 |ShortSummary    = 2107&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 22&lt;br /&gt;
 |EpisodeNumber2  = 08&lt;br /&gt;
 |Title           = Digital Services Act&lt;br /&gt;
 |Guests          = Pepe Florez&lt;br /&gt;
 |OriginalAirDate = 21 de enero de 2022&lt;br /&gt;
 |Link            = https://anchor.fm/wikisp/episodes/Episodio-8-Pepe-Flores-Wikimedia-Mxico-e1d90do&lt;br /&gt;
 |ShortSummary    = 2208&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Cuarta temporada ==&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-style=&amp;quot;color:#FFF&amp;quot;&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;3%&amp;quot; | №&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;3%&amp;quot; | #&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot;            | Título&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;18%&amp;quot;| Invitados&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;15%&amp;quot;| Fecha de emisión&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;15%&amp;quot;| Reproducir&lt;br /&gt;
|-&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 23&lt;br /&gt;
 |EpisodeNumber2  = 01&lt;br /&gt;
 |Title           = Comité de Afiliaciones&lt;br /&gt;
 |Guests          = [[m:User:Maor X|Carlos Colina]]&lt;br /&gt;
 |OriginalAirDate = 27 de febrero de 2022&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWiki_Podcast_E1-T4.mp3&lt;br /&gt;
 |ShortSummary    = 2301&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 24&lt;br /&gt;
 |EpisodeNumber2  = 02&lt;br /&gt;
 |Title           = Wiki Loves Folklore&lt;br /&gt;
 |Guests          = [[m:User:TaronjaSatsuma|Francesc Fort]]&lt;br /&gt;
 |OriginalAirDate = 27 de febrero de 2022&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWiki_Podcast_E2-T4.mp3&lt;br /&gt;
 |ShortSummary    = 2402&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 25&lt;br /&gt;
 |EpisodeNumber2  = 03&lt;br /&gt;
 |Title           = JCPA (inglés)&lt;br /&gt;
 |Guests          = Kate Ruane&lt;br /&gt;
 |OriginalAirDate = 05 de marzo de 2022&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWiki_Podcast_E3-T4.mp3&lt;br /&gt;
 |ShortSummary    = 2503&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 26&lt;br /&gt;
 |EpisodeNumber2  = 04&lt;br /&gt;
 |Title           = JCPA (español)&lt;br /&gt;
 |Guests          = Alexandra Bello&lt;br /&gt;
 |OriginalAirDate = 29 de marzo de 2022&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWiki_Podcast_E4-T4.mp3&lt;br /&gt;
 |ShortSummary    = 2604&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 27&lt;br /&gt;
 |EpisodeNumber2  = 05&lt;br /&gt;
 |Title           = Ucrania&lt;br /&gt;
 |Guests          = Elber Ortiz&amp;lt;br&amp;gt;Francesc Fort&amp;lt;br&amp;gt;Galahad&lt;br /&gt;
 |OriginalAirDate = 29 de marzo de 2022&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWiki_Podcast_E5-T4.mp3&lt;br /&gt;
 |ShortSummary    = 2705&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 28&lt;br /&gt;
 |EpisodeNumber2  = 06&lt;br /&gt;
 |Title           = WikiForHumanRights&lt;br /&gt;
 |Guests          = Carlo Brescia&lt;br /&gt;
 |OriginalAirDate = 04 de abril de 2022&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWiki_Podcast_E6-T4.mp3&lt;br /&gt;
 |ShortSummary    = 2806&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 29&lt;br /&gt;
 |EpisodeNumber2  = 07&lt;br /&gt;
 |Title           = SoundLogo&lt;br /&gt;
 |Guests          = Mehrdad Pourzaki&lt;br /&gt;
 |OriginalAirDate = 27 de junio de 2022&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWiki_Podcast_E7-T4.mp3&lt;br /&gt;
 |ShortSummary    = 2907&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 30&lt;br /&gt;
 |EpisodeNumber2  = 08&lt;br /&gt;
 |Title           = Wikimania&lt;br /&gt;
 |Guests          = Evelin Heidel&amp;lt;br&amp;gt;Omar Sansi&lt;br /&gt;
 |OriginalAirDate = 01 de julio de 2022&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWiki_Podcast_E8-T4.mp3&lt;br /&gt;
 |ShortSummary    = 3008&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 31&lt;br /&gt;
 |EpisodeNumber2  = 09&lt;br /&gt;
 |Title           = Wikimedia Summit&lt;br /&gt;
 |Guests          = Cornelius Kibelka&lt;br /&gt;
 |OriginalAirDate = 01 de julio de 2022&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWiki_Podcast_E9-T4.mp3&lt;br /&gt;
 |ShortSummary    = 3109&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
|}&lt;br /&gt;
== Quinta temporada ==&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{| class=&amp;quot;mw-collapsible wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-style=&amp;quot;color:#FFF&amp;quot;&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;3%&amp;quot; | №&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;3%&amp;quot; | #&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot;            | Título&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;18%&amp;quot;| Invitados&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;15%&amp;quot;| Fecha de emisión&lt;br /&gt;
! style=&amp;quot;background: #5e2750&amp;quot; width=&amp;quot;15%&amp;quot;| Reproducir&lt;br /&gt;
|-&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 32&lt;br /&gt;
 |EpisodeNumber2  = 01&lt;br /&gt;
 |Title           = Desarrollo de Liderazgo&lt;br /&gt;
 |Guests          = [[m:User:La Mantis|Rocío Consales]]&lt;br /&gt;
 |OriginalAirDate = 20 de octubre de 2022&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWiki_Podcast_E1T5.mp3&lt;br /&gt;
 |ShortSummary    = 3201&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 33&lt;br /&gt;
 |EpisodeNumber2  = 02&lt;br /&gt;
 |Title           = Premios Allie&lt;br /&gt;
 |Guests          = [[m:User:GBordoy (WMF)|Giselle Bordoy]]&lt;br /&gt;
 |OriginalAirDate = 16 de noviembre de 2022&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWiki_Podcast_E2T5.mp3&lt;br /&gt;
 |ShortSummary    = 3202&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 34&lt;br /&gt;
 |EpisodeNumber2  = 03&lt;br /&gt;
 |Title           = Comunidad lusófona y su relación con la comunidad hispana&lt;br /&gt;
 |Guests          = [[m:User:TCappilletto (WMF)|Tila Cappilletto]]&lt;br /&gt;
 |OriginalAirDate = 28 de diciembre de 2022&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWiki_T5E3.mp3&lt;br /&gt;
 |ShortSummary    = 3202&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 35&lt;br /&gt;
 |EpisodeNumber2  = 04&lt;br /&gt;
 |Title           = Wikimedia y los gobiernos&lt;br /&gt;
 |Guests          = [[m:User:ProtoplasmaKid|ProtoplasmaKid]]&lt;br /&gt;
 |OriginalAirDate = 23 de enero de 2023&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWiki_T5-E4.mp3&lt;br /&gt;
 |ShortSummary    = 3504&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 36&lt;br /&gt;
 |EpisodeNumber2  = 05&lt;br /&gt;
 |Title           = Brecha de género&lt;br /&gt;
 |Guests          = [[m:User:Metik|Carmen Alcázar]], [[m:User:Tiputini|Ester Bonet]]&lt;br /&gt;
 |OriginalAirDate = 15 de febrero de 2023&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWiki_Podcast_-_T5E5.mp3&lt;br /&gt;
 |ShortSummary    = 3605&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 37&lt;br /&gt;
 |EpisodeNumber2  = 06&lt;br /&gt;
 |Title           = WikiLearn&lt;br /&gt;
 |Guests          = [[m:User:Asaf (WMF)|Asaf Bartov]]&lt;br /&gt;
 |OriginalAirDate = 20 de febrero de 2023&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWiki_Podcast_-_T5E6.mp3&lt;br /&gt;
 |ShortSummary    = 3706&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 38&lt;br /&gt;
 |EpisodeNumber2  = 07&lt;br /&gt;
 |Title           = ¡Alto! Mujeres trabajando&lt;br /&gt;
 |Guests          = Anna Torres, Paula Domínguez&lt;br /&gt;
 |OriginalAirDate = 28 de marzo de 2023&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWiki_Podcast_-_T5E7.mp3&lt;br /&gt;
 |ShortSummary    = 3807&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 39&lt;br /&gt;
 |EpisodeNumber2  = 08&lt;br /&gt;
 |Title           = Internet Archive&lt;br /&gt;
 |Guests          = Iván Martínez&lt;br /&gt;
 |OriginalAirDate = 03 de abril de 2023&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWiki_Podcast_-_E8T5.mp3&lt;br /&gt;
 |ShortSummary    = 3908&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 40&lt;br /&gt;
 |EpisodeNumber2  = 09&lt;br /&gt;
 |Title           = Queering Wikipedia&lt;br /&gt;
 |Guests          = MiguelAngelCS, Vic&lt;br /&gt;
 |OriginalAirDate = 20 de mayo de 2023&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWiki_Podcast_-_E9T5.mp3&lt;br /&gt;
 |ShortSummary    = 4009&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 41&lt;br /&gt;
 |EpisodeNumber2  = 10&lt;br /&gt;
 |Title           = Desequilibrio en traducciones en Wikipedia&lt;br /&gt;
 |Guests          = Nathaly Toledo&lt;br /&gt;
 |OriginalAirDate = 22 de mayo de 2023&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWiki_Podcast_-_E10T5.mp3&lt;br /&gt;
 |ShortSummary    = 4110&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
{{EpisodeList&lt;br /&gt;
 |EpisodeNumber   = 42&lt;br /&gt;
 |EpisodeNumber2  = 11&lt;br /&gt;
 |Title           = Wikisource&lt;br /&gt;
 |Guests          = Ignacio Rodríguez&lt;br /&gt;
 |OriginalAirDate = 26 de junio de 2023&lt;br /&gt;
 |Link            = https://commons.wikimedia.org/wiki/File:SuenaWiki_Podcast_-_E11T5.mp3&lt;br /&gt;
 |ShortSummary    = 4211&lt;br /&gt;
 |LineColor       = 5e2750&lt;br /&gt;
}}&lt;br /&gt;
|}&lt;br /&gt;
[[Categoría:SuenaWiki]]&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=Plantilla:EpisodeList&amp;diff=7141</id>
		<title>Plantilla:EpisodeList</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=Plantilla:EpisodeList&amp;diff=7141"/>
		<updated>2023-07-28T03:42:57Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;tr class=&amp;quot;bgesp&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{EpisodeNumber|ʁ}}}|ʁ| |&amp;lt;td id=&amp;quot;ep{{{EpisodeNumber}}}&amp;quot;&amp;gt;{{{EpisodeNumber}}}{{{EpisodeNumber_ref|}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&amp;lt;ref&amp;gt;&amp;lt;/ref&amp;gt;&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{EpisodeNumber2|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{EpisodeNumber2}}}&amp;lt;/td&amp;gt;}}&lt;br /&gt;
&amp;lt;td&amp;gt;{{#if:{{{Title|}}}|&#039;&#039;&#039;«{{{Title}}}»&#039;&#039;&#039;}}{{{RTitle|}}}&amp;amp;nbsp;{{#if:{{{AltTitle|}}}|&amp;lt;br&amp;gt;«{{{AltTitle}}}»}}&amp;lt;/td&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{Aux1|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{Aux1}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{Guests|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{Guests}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{DirectedBy|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{DirectedBy}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{WrittenBy|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{WrittenBy}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{Aux2|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{Aux2}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{Aux3|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{Aux3}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{OriginalAirDate|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{OriginalAirDate}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{AltDate|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{AltDate}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{ProdCode|ʁ}}}|ʁ| |&amp;lt;td id=&amp;quot;pc{{{ProdCode}}}&amp;quot;&amp;gt;{{{ProdCode}}}{{{ProdCod_ref|}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{Viewers|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{Viewers}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{Link|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{button|url={{{Link}}}|1=Reproducir|class=mw-ui-progressive}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{Aux4|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{Aux4}}}&amp;lt;/td&amp;gt;}}&amp;lt;/tr&amp;gt;{{#ifeq:{{{ShortSummary|ʁ}}}|ʁ| |&amp;lt;tr class=&amp;quot;bgesp purpura&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-bottom:3px solid #{{#if:{{{LineColor|}}}|{{{LineColor}}}|CCCCFF}}&amp;quot; colspan=&amp;quot;{{#expr:{{#ifeq:{{{Title|ʁ}}}|ʁ|{{#ifeq:{{{AltTitle|ʁ}}}|ʁ|{{#ifeq:{{{RTitle|ʁ}}}|ʁ|0|1}}|1}}|1}}+{{#ifeq:{{{Guests|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{DirectedBy|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{WrittenBy|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{Aux1|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{Aux2|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{Aux3|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{Aux4|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{Viewers|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{Link|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{AltDate|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{OriginalAirDate|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{ProdCode|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{EpisodeNumber|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{EpisodeNumber2|ʁ}}}|ʁ|0|1}}}}&amp;quot;&amp;gt;&lt;br /&gt;
{{EpisodeList/desc|id={{{ShortSummary}}}}}&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=Plantilla:EpisodeList&amp;diff=7140</id>
		<title>Plantilla:EpisodeList</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=Plantilla:EpisodeList&amp;diff=7140"/>
		<updated>2023-07-28T03:37:33Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;tr class=&amp;quot;bgesp purpura&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{EpisodeNumber|ʁ}}}|ʁ| |&amp;lt;td id=&amp;quot;ep{{{EpisodeNumber}}}&amp;quot;&amp;gt;{{{EpisodeNumber}}}{{{EpisodeNumber_ref|}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{EpisodeNumber2|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{EpisodeNumber2}}}&amp;lt;/td&amp;gt;}}&lt;br /&gt;
&amp;lt;td&amp;gt;{{#if:{{{Title|}}}|&#039;&#039;&#039;«{{{Title}}}»&#039;&#039;&#039;}}{{{RTitle|}}}&amp;amp;nbsp;{{#if:{{{AltTitle|}}}|&amp;lt;br&amp;gt;«{{{AltTitle}}}»}}&amp;lt;/td&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{Aux1|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{Aux1}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{Guests|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{Guests}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{DirectedBy|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{DirectedBy}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{WrittenBy|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{WrittenBy}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{Aux2|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{Aux2}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{Aux3|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{Aux3}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{OriginalAirDate|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{OriginalAirDate}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{AltDate|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{AltDate}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{ProdCode|ʁ}}}|ʁ| |&amp;lt;td id=&amp;quot;pc{{{ProdCode}}}&amp;quot;&amp;gt;{{{ProdCode}}}{{{ProdCod_ref|}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{Viewers|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{Viewers}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{Link|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{button|url={{{Link}}}|1=Reproducir|class=mw-ui-progressive}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{Aux4|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{Aux4}}}&amp;lt;/td&amp;gt;}}&amp;lt;/tr&amp;gt;{{#ifeq:{{{ShortSummary|ʁ}}}|ʁ| |&amp;lt;tr class=&amp;quot;bgesp&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-bottom:3px solid #{{#if:{{{LineColor|}}}|{{{LineColor}}}|CCCCFF}}&amp;quot; colspan=&amp;quot;{{#expr:{{#ifeq:{{{Title|ʁ}}}|ʁ|{{#ifeq:{{{AltTitle|ʁ}}}|ʁ|{{#ifeq:{{{RTitle|ʁ}}}|ʁ|0|1}}|1}}|1}}+{{#ifeq:{{{Guests|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{DirectedBy|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{WrittenBy|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{Aux1|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{Aux2|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{Aux3|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{Aux4|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{Viewers|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{Link|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{AltDate|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{OriginalAirDate|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{ProdCode|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{EpisodeNumber|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{EpisodeNumber2|ʁ}}}|ʁ|0|1}}}}&amp;quot;&amp;gt;&lt;br /&gt;
{{EpisodeList/desc|id={{{ShortSummary}}}}}&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=Plantilla:EpisodeList&amp;diff=7139</id>
		<title>Plantilla:EpisodeList</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=Plantilla:EpisodeList&amp;diff=7139"/>
		<updated>2023-07-28T03:35:12Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;tr class=&amp;quot;bgesp&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{EpisodeNumber|ʁ}}}|ʁ| |&amp;lt;td id=&amp;quot;ep{{{EpisodeNumber}}}&amp;quot;&amp;gt;{{{EpisodeNumber}}}{{{EpisodeNumber_ref|}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{EpisodeNumber2|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{EpisodeNumber2}}}&amp;lt;/td&amp;gt;}}&lt;br /&gt;
&amp;lt;td&amp;gt;{{#if:{{{Title|}}}|&#039;&#039;&#039;«{{{Title}}}»&#039;&#039;&#039;}}{{{RTitle|}}}&amp;amp;nbsp;{{#if:{{{AltTitle|}}}|&amp;lt;br&amp;gt;«{{{AltTitle}}}»}}&amp;lt;/td&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{Aux1|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{Aux1}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{Guests|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{Guests}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{DirectedBy|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{DirectedBy}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{WrittenBy|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{WrittenBy}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{Aux2|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{Aux2}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{Aux3|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{Aux3}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{OriginalAirDate|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{OriginalAirDate}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{AltDate|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{AltDate}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{ProdCode|ʁ}}}|ʁ| |&amp;lt;td id=&amp;quot;pc{{{ProdCode}}}&amp;quot;&amp;gt;{{{ProdCode}}}{{{ProdCod_ref|}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{Viewers|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{Viewers}}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{Link|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{button|url={{{Link}}}|1=Reproducir|class=mw-ui-progressive}}&amp;lt;/td&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{Aux4|ʁ}}}|ʁ| |&amp;lt;td&amp;gt;{{{Aux4}}}&amp;lt;/td&amp;gt;}}&amp;lt;/tr&amp;gt;{{#ifeq:{{{ShortSummary|ʁ}}}|ʁ| |&amp;lt;tr class=&amp;quot;bgesp&amp;quot;&amp;gt;&amp;lt;td style=&amp;quot;border-bottom:3px solid #{{#if:{{{LineColor|}}}|{{{LineColor}}}|CCCCFF}}&amp;quot; colspan=&amp;quot;{{#expr:{{#ifeq:{{{Title|ʁ}}}|ʁ|{{#ifeq:{{{AltTitle|ʁ}}}|ʁ|{{#ifeq:{{{RTitle|ʁ}}}|ʁ|0|1}}|1}}|1}}+{{#ifeq:{{{Guests|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{DirectedBy|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{WrittenBy|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{Aux1|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{Aux2|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{Aux3|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{Aux4|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{Viewers|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{Link|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{AltDate|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{OriginalAirDate|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{ProdCode|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{EpisodeNumber|ʁ}}}|ʁ|0|1}}+{{#ifeq:{{{EpisodeNumber2|ʁ}}}|ʁ|0|1}}}}&amp;quot;&amp;gt;&lt;br /&gt;
{{EpisodeList/desc|id={{{ShortSummary}}}}}&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=Plantilla:Componente&amp;diff=7138</id>
		<title>Plantilla:Componente</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=Plantilla:Componente&amp;diff=7138"/>
		<updated>2023-07-28T03:23:40Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;plainlinks bgesp&amp;quot; style=&amp;quot;width:100%; border-top: 1px solid #BBBDBF; border-left: 1px dotted #BBBDBF; border-right: 1px dotted #BBBDBF; border-collapse:collapse;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;vertical-align:top; padding-left:1em; padding-top:0.5em; padding-bottom:0.5em;&amp;quot;&amp;gt;&amp;lt;span id=&amp;quot;{{{anchor|}}}&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;display:inline; border-bottom:0;&amp;quot;&amp;gt;{{{componente}}}&amp;lt;/h3&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mobile-collapse&amp;quot; style=&amp;quot;-webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; width:30%; float:left; padding-top:1em; padding-left:2.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-variant:small-caps;font-size:90%&amp;quot;&amp;gt;{{#switch:{{{tipo}}}&lt;br /&gt;
|principal=&amp;lt;translate nowrap&amp;gt;&amp;lt;!--T:1--&amp;gt; Componente principal del grupo&amp;lt;/translate&amp;gt;&lt;br /&gt;
|subsidiaria=&amp;lt;translate nowrap&amp;gt;&amp;lt;!--T:2--&amp;gt; Componente subsidiario de la Comisión Administrativa&amp;lt;/translate&amp;gt;&lt;br /&gt;
|equipo|#default=&amp;lt;translate nowrap&amp;gt;&amp;lt;!--T:3--&amp;gt; Equipo dependiente de la Comisión Administrativa&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&amp;lt;/span&amp;gt;&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 1em; padding: 0;&amp;quot;&amp;gt;&lt;br /&gt;
{{{descripción}}}&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mobile-collapse&amp;quot; style=&amp;quot;-webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; width: 70%; float:left; right:1.5em; padding-left:2.5em; padding-right:1em; padding-top:1em;&amp;quot;&amp;gt;{{#if:{{{miembro1|}}}|&amp;lt;ul&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #AAA; padding:10px&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
{{#if:{{{miembro1|}}}|&lt;br /&gt;
{{{!}} style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
{{!}} style=&amp;quot;margin-right:10px; padding-left:10px; vertical-align:middle; width:160px;&amp;quot; {{!}}&amp;lt;span style=&amp;quot;font-size:130%;&amp;quot;&amp;gt;&#039;&#039;&#039;{{{nombre1|Example}}}&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;[[User:{{{miembro1|Example}}}|{{{miembro1|Example}}}]]&lt;br /&gt;
{{!}} {{{des1|{{descripciones|1={{{miembro1}}}}}}}}&lt;br /&gt;
{{!}}}&lt;br /&gt;
}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#if:{{{miembro2|}}}|&lt;br /&gt;
{{{!}} style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
{{!}} style=&amp;quot;margin-right:10px; padding-left:10px; vertical-align:middle; width:160px;&amp;quot; {{!}}&amp;lt;span style=&amp;quot;font-size:130%;&amp;quot;&amp;gt;&#039;&#039;&#039;{{{nombre2|Example}}}&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;[[User:{{{miembro2|Example}}}|{{{miembro2|Example}}}]]&lt;br /&gt;
{{!}} {{{des2|{{descripciones|1={{{miembro2}}}}}}}}&lt;br /&gt;
{{!}}}&lt;br /&gt;
}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#if:{{{miembro3|}}}|&lt;br /&gt;
{{{!}} style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
{{!}} style=&amp;quot;margin-right:10px; padding-left:10px; vertical-align:middle; width:160px;&amp;quot; {{!}}&amp;lt;span style=&amp;quot;font-size:130%;&amp;quot;&amp;gt;&#039;&#039;&#039;{{{nombre3|Example}}}&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;[[User:{{{miembro3|Example}}}|{{{miembro3|Example}}}]]&lt;br /&gt;
{{!}} {{{des3|{{descripciones|1={{{miembro3}}}}}}}}&lt;br /&gt;
{{!}}}&lt;br /&gt;
}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#if:{{{miembro4|}}}|&lt;br /&gt;
{{{!}} style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
{{!}} style=&amp;quot;margin-right:10px; padding-left:10px; vertical-align:middle; width:160px;&amp;quot; {{!}}&amp;lt;span style=&amp;quot;font-size:130%;&amp;quot;&amp;gt;&#039;&#039;&#039;{{{nombre4|Example}}}&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;[[User:{{{miembro4|Example}}}|{{{miembro4|Example}}}]]&lt;br /&gt;
{{!}} {{{des4|{{descripciones|1={{{miembro4}}}}}}}}&lt;br /&gt;
{{!}}}&lt;br /&gt;
}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#if:{{{miembro5|}}}|&lt;br /&gt;
{{{!}} style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
{{!}} style=&amp;quot;margin-right:10px; padding-left:10px; vertical-align:middle; width:160px;&amp;quot; {{!}}&amp;lt;span style=&amp;quot;font-size:130%;&amp;quot;&amp;gt;&#039;&#039;&#039;{{{nombre5|Example}}}&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;[[User:{{{miembro5|Example}}}|{{{miembro5|Example}}}]]&lt;br /&gt;
{{!}} {{{des5|{{descripciones|1={{{miembro5}}}}}}}}&lt;br /&gt;
{{!}}}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;/ul&amp;gt;|&amp;lt;div style=&amp;quot;margin-top:0.4em; font-variant:small-caps; color:#696969;&amp;quot;&amp;gt;&#039;&#039;&amp;lt;translate nowrap&amp;gt;&amp;lt;!--T:4--&amp;gt; este componente se encuentra inactivo&amp;lt;/translate&amp;gt;&#039;&#039;&amp;lt;/div&amp;gt;}}&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=Plantilla:Componente&amp;diff=7137</id>
		<title>Plantilla:Componente</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=Plantilla:Componente&amp;diff=7137"/>
		<updated>2023-07-28T03:16:30Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;plainlinks bgesp&amp;quot; style=&amp;quot;width:100%; border-top: 1px solid #BBBDBF; border-left: 1px dotted #BBBDBF; border-right: 1px dotted #BBBDBF; border-collapse:collapse;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;vertical-align:top; padding-left:1em; padding-top:0.5em; padding-bottom:0.5em;&amp;quot;&amp;gt;&amp;lt;span id=&amp;quot;{{{anchor|}}}&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;display:inline; border-bottom:0;&amp;quot;&amp;gt;{{{componente}}}&amp;lt;/h3&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mobile-collapse&amp;quot; style=&amp;quot;-webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; width:30%; float:left; padding-top:1em; padding-left:2.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-variant:small-caps;font-size:90%&amp;quot;&amp;gt;{{#switch:{{{tipo}}}&lt;br /&gt;
|principal=&amp;lt;translate nowrap&amp;gt;&amp;lt;!--T:1--&amp;gt; Componente principal del grupo&amp;lt;/translate&amp;gt;&lt;br /&gt;
|subsidiaria=&amp;lt;translate nowrap&amp;gt;&amp;lt;!--T:2--&amp;gt; Componente subsidiario de la Comisión Administrativa&amp;lt;/translate&amp;gt;&lt;br /&gt;
|equipo|#default=&amp;lt;translate nowrap&amp;gt;&amp;lt;!--T:3--&amp;gt; Equipo dependiente de la Comisión Administrativa&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&amp;lt;/span&amp;gt;&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 1em; padding: 0;&amp;quot;&amp;gt;&lt;br /&gt;
{{{descripción}}}&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mobile-collapse&amp;quot; style=&amp;quot;-webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; width: 70%; float:left; right:1.5em; padding-left:2.5em; padding-right:1em; padding-top:1em;&amp;quot;&amp;gt;{{#if:{{{miembro1|}}}|&amp;lt;ul&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #AAA; padding:10px&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
{{#if:{{{miembro1|}}}|&lt;br /&gt;
{{{!}} style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
{{!}} style=&amp;quot;margin-right:10px; padding-left:10px; vertical-align:middle; width:160px;&amp;quot; {{!}}&amp;lt;span style=&amp;quot;font-size:130%;&amp;quot;&amp;gt;&#039;&#039;&#039;{{{nombre1|Example}}}&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;[[User:{{{miembro1|Example}}}|{{{miembro1|Example}}}]]&lt;br /&gt;
{{!}} {{{des1|{{descripciones|1={{{miembro1}}}}}}}}&lt;br /&gt;
{{!}}}&lt;br /&gt;
}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#if:{{{miembro2|}}}|&lt;br /&gt;
{{{!}} style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
{{!}} style=&amp;quot;margin-right:10px; padding-left:10px; vertical-align:middle; width:160px;&amp;quot; {{!}}&amp;lt;span style=&amp;quot;font-size:130%;&amp;quot;&amp;gt;&#039;&#039;&#039;{{{nombre2|Example}}}&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;[[User:{{{miembro2|Example}}}|{{{miembro2|Example}}}]]&lt;br /&gt;
{{!}} {{{des2|{{descripciones|1={{{miembro2}}}}}}}}&lt;br /&gt;
{{!}}}&lt;br /&gt;
}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#if:{{{miembro3|}}}|&lt;br /&gt;
{{{!}} style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
{{!}} style=&amp;quot;margin-right:10px; padding-left:10px; vertical-align:middle; width:160px;&amp;quot; {{!}}&amp;lt;span style=&amp;quot;font-size:130%;&amp;quot;&amp;gt;&#039;&#039;&#039;{{{nombre3|Example}}}&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;[[User:{{{miembro3|Example}}}|{{{miembro3|Example}}}]]&lt;br /&gt;
{{!}} {{{des3|{{descripciones|1={{{miembro3}}}}}}}}&lt;br /&gt;
{{!}}}&lt;br /&gt;
}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#if:{{{miembro4|}}}|&lt;br /&gt;
{{{!}} style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
{{!}} style=&amp;quot;margin-right:10px; padding-left:10px; vertical-align:middle; width:160px;&amp;quot; {{!}}&amp;lt;span style=&amp;quot;font-size:130%;&amp;quot;&amp;gt;&#039;&#039;&#039;{{{nombre4|Example}}}&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;[[User:{{{miembro4|Example}}}|{{{miembro4|Example}}}]]&lt;br /&gt;
{{!}} {{{des4|{{descripciones|1={{{miembro4}}}}}}}}&lt;br /&gt;
{{!}}}&lt;br /&gt;
}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#if:{{{miembro5|}}}|&lt;br /&gt;
{{{!}} style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
{{!}} style=&amp;quot;margin-right:10px; padding-left:10px; vertical-align:middle; width:160px;&amp;quot; {{!}}&amp;lt;span style=&amp;quot;font-size:130%;&amp;quot;&amp;gt;&#039;&#039;&#039;{{{nombre5|Example}}}&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;[[User:{{{miembro5|Example}}}|{{{miembro5|Example}}}]]&lt;br /&gt;
{{!}} {{{des5|{{descripciones|1={{{miembro5}}}}}}}}&lt;br /&gt;
{{!}}}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;/ul&amp;gt;|&amp;lt;div style=&amp;quot;margin-top:0.4em; font-variant:small-caps; color:#696969;&amp;quot;&amp;gt;&#039;&#039;&amp;lt;translate nowrap&amp;gt;&amp;lt;!--T:4--&amp;gt; este componente se encuentra inactivo&amp;lt;/translate&amp;gt;&#039;&#039;&amp;lt;/div&amp;gt;}}&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=Plantilla:Componente&amp;diff=7136</id>
		<title>Plantilla:Componente</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=Plantilla:Componente&amp;diff=7136"/>
		<updated>2023-07-28T03:14:40Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;div class=&amp;quot;plainlinks bgesp&amp;quot; style=&amp;quot;width:100%; border-top: 1px solid #BBBDBF; border-left: 1px dotted #BBBDBF; border-right: 1px dotted #BBBDBF; border-collapse:collapse;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;vertical-align:top; padding-left:1em; padding-top:0.5em; padding-bottom:0.5em;&amp;quot;&amp;gt;&amp;lt;span id=&amp;quot;{{{anchor|}}}&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;display:inline; border-bottom:0;&amp;quot;&amp;gt;{{{componente}}}&amp;lt;/h3&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mobile-collapse&amp;quot; style=&amp;quot;-webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; width:30%; float:left; padding-top:1em; padding-left:2.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&amp;lt;span style=&amp;quot;font-variant:small-caps;font-size:90%&amp;quot;&amp;gt;{{#switch:{{{tipo}}}&lt;br /&gt;
|principal=&amp;lt;translate nowrap&amp;gt;&amp;lt;!--T:1--&amp;gt; Componente principal del grupo&amp;lt;/translate&amp;gt;&lt;br /&gt;
|subsidiaria=&amp;lt;translate nowrap&amp;gt;&amp;lt;!--T:2--&amp;gt; Componente subsidiario de la Comisión Administrativa&amp;lt;/translate&amp;gt;&lt;br /&gt;
|equipo|#default=&amp;lt;translate nowrap&amp;gt;&amp;lt;!--T:3--&amp;gt; Equipo dependiente de la Comisión Administrativa&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&amp;lt;/span&amp;gt;&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 1em; padding: 0;&amp;quot;&amp;gt;&lt;br /&gt;
{{{descripción}}}&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mobile-collapse&amp;quot; style=&amp;quot;-webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; width: 70%; float:left; right:1.5em; padding-left:2.5em; padding-right:1em; padding-top:1em;&amp;quot;&amp;gt;{{#if:{{{miembro1|}}}|&amp;lt;ul&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #AAA; padding:10px&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
{{#if:{{{miembro1|}}}|&lt;br /&gt;
{{{!}} style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
{{!}} style=&amp;quot;margin-right:10px; padding-left:10px; vertical-align:middle; width:160px;&amp;quot; {{!}}&amp;lt;span style=&amp;quot;font-size:130%;&amp;quot;&amp;gt;&#039;&#039;&#039;{{{nombre1|Example}}}&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;[[User:{{{miembro1|Example}}}|{{{miembro1|Example}}}]]&lt;br /&gt;
{{!}} {{{des1|{{descripciones|1={{{miembro1}}}}}}}}&lt;br /&gt;
{{!}}}&lt;br /&gt;
}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#if:{{{miembro2|}}}|&lt;br /&gt;
{{{!}} style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
{{!}} style=&amp;quot;margin-right:10px; padding-left:10px; vertical-align:middle; width:160px;&amp;quot; {{!}}&amp;lt;span style=&amp;quot;font-size:130%;&amp;quot;&amp;gt;&#039;&#039;&#039;{{{nombre2|Example}}}&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;[[User:{{{miembro2|Example}}}|{{{miembro2|Example}}}]]&lt;br /&gt;
{{!}} {{{des2|{{descripciones|1={{{miembro2}}}}}}}}&lt;br /&gt;
{{!}}}&lt;br /&gt;
}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#if:{{{miembro3|}}}|&lt;br /&gt;
{{{!}} style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
{{!}} style=&amp;quot;margin-right:10px; padding-left:10px; vertical-align:middle; width:160px;&amp;quot; {{!}}&amp;lt;span style=&amp;quot;font-size:130%;&amp;quot;&amp;gt;&#039;&#039;&#039;{{{nombre3|Example}}}&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;[[User:{{{miembro3|Example}}}|{{{miembro3|Example}}}]]&lt;br /&gt;
{{!}} {{{des3|{{descripciones|1={{{miembro3}}}}}}}}&lt;br /&gt;
{{!}}}&lt;br /&gt;
}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#if:{{{miembro4|}}}|&lt;br /&gt;
{{{!}} style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
{{!}} style=&amp;quot;margin-right:10px; padding-left:10px; vertical-align:middle; width:160px;&amp;quot; {{!}}&amp;lt;span style=&amp;quot;font-size:130%;&amp;quot;&amp;gt;&#039;&#039;&#039;{{{nombre4|Example}}}&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;[[User:{{{miembro4|Example}}}|{{{miembro4|Example}}}]]&lt;br /&gt;
{{!}} {{{des4|{{descripciones|1={{{miembro4}}}}}}}}&lt;br /&gt;
{{!}}}&lt;br /&gt;
}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#if:{{{miembro5|}}}|&lt;br /&gt;
{{{!}} style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
{{!}} style=&amp;quot;margin-right:10px; padding-left:10px; vertical-align:middle; width:160px;&amp;quot; {{!}}&amp;lt;span style=&amp;quot;font-size:130%;&amp;quot;&amp;gt;&#039;&#039;&#039;{{{nombre5|Example}}}&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;[[User:{{{miembro5|Example}}}|{{{miembro5|Example}}}]]&lt;br /&gt;
{{!}} {{{des5|{{descripciones|1={{{miembro5}}}}}}}}&lt;br /&gt;
{{!}}}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;/ul&amp;gt;|&amp;lt;div style=&amp;quot;margin-top:0.4em; font-variant:small-caps; color:#696969;&amp;quot;&amp;gt;&#039;&#039;&amp;lt;translate nowrap&amp;gt;&amp;lt;!--T:4--&amp;gt; este componente se encuentra inactivo&amp;lt;/translate&amp;gt;&#039;&#039;&amp;lt;/div&amp;gt;}}&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=Plantilla:Documento/layout&amp;diff=7135</id>
		<title>Plantilla:Documento/layout</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=Plantilla:Documento/layout&amp;diff=7135"/>
		<updated>2023-07-28T03:13:37Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;bgesp&amp;quot; style=&amp;quot;width: 100%; border: 1px solid #a2a9b1; padding: .5em 1em; font-size: small; margin-top: 12px; border-left: 5px solid #{{{color|36c}}};&amp;quot;&lt;br /&gt;
|- style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
| width=&amp;quot;100%&amp;quot; |&lt;br /&gt;
{{{contenido}}}&lt;br /&gt;
|- style=&amp;quot;text-align: left;&amp;quot;&lt;br /&gt;
| &amp;lt;hr /&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{{hist}}}&amp;lt;br /&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;blockquote style=&amp;quot;margin: 0px; padding: 0px; padding-left: 20px;&amp;quot;&amp;gt;{{{histc|}}}&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=Plantilla:Report&amp;diff=7134</id>
		<title>Plantilla:Report</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=Plantilla:Report&amp;diff=7134"/>
		<updated>2023-07-28T03:11:49Z</updated>

		<summary type="html">&lt;p&gt;Jsmura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;templatestyles src=&amp;quot;Report/styles.css&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikisp-report-table bgesp&amp;quot;&lt;br /&gt;
| width=&amp;quot;20%&amp;quot; style=&amp;quot;padding: 0.5em;&amp;quot; | [[File:Wikisp-logo-icon-black.svg|100px]]&lt;br /&gt;
| width=&amp;quot;65%&amp;quot; | Reporte de actividades {{{año}}}&amp;lt;br&amp;gt;Wikimedia Small Projects&lt;br /&gt;
|}&lt;br /&gt;
{{{intro|&lt;br /&gt;
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.&lt;br /&gt;
&lt;br /&gt;
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.&lt;br /&gt;
}}}&lt;br /&gt;
{{#if: {{{mensaje|}}} |&lt;br /&gt;
== {{{mensajet|Mensaje del Coordinador General}}} ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;wikisp-report-message&amp;quot;&amp;gt;&lt;br /&gt;
{{{mensaje|Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{#if: {{{metas|}}} |&lt;br /&gt;
== {{{metast|Metas completadas}}} ==&lt;br /&gt;
{{{metas|&lt;br /&gt;
* Lorem ipsum dolor sit amet,&lt;br /&gt;
* consectetur adipisicing elit,&lt;br /&gt;
* sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.&lt;br /&gt;
}}}&lt;br /&gt;
}}&lt;br /&gt;
{{#if: {{{retos|}}} |&lt;br /&gt;
== {{{retost|Retos a superar}}} ==&lt;br /&gt;
{{{retos|Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.}}}&lt;br /&gt;
}}&lt;br /&gt;
{{#if: {{{actividades|}}} |&lt;br /&gt;
== {{{actividadest|Actividades}}} ==&lt;br /&gt;
{{{actividades|&lt;br /&gt;
* Lorem ipsum dolor sit amet,&lt;br /&gt;
* consectetur adipisicing elit,&lt;br /&gt;
* sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.&lt;br /&gt;
}}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Jsmura</name></author>
	</entry>
</feed>