summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Marchese <maffblaster@gentoo.org>2023-02-27 15:41:05 -0800
committerMatthew Marchese <maffblaster@gentoo.org>2023-02-27 15:41:05 -0800
commit71f8cf86318338ae8eb3b3b8740e095bfddccc9c (patch)
treeb7112703a095b5a3d666fe955034d9dac95529df /ContributionScores
parentUpdate CommentSteams to version 6.3 (diff)
downloadextensions-71f8cf86318338ae8eb3b3b8740e095bfddccc9c.tar.gz
extensions-71f8cf86318338ae8eb3b3b8740e095bfddccc9c.tar.bz2
extensions-71f8cf86318338ae8eb3b3b8740e095bfddccc9c.zip
ContributionScores: Add new extension for more fun.
Enables an easy way to track contribution volume includes support for tracking translation volume as well. Will test on wikitest.g.o before deploying to prod. Available from: https://www.mediawiki.org/wiki/Extension:Contribution_Scores Signed-off-by: Matthew Marchese <maffblaster@gentoo.org>
Diffstat (limited to 'ContributionScores')
-rw-r--r--ContributionScores/.eslintrc.json10
-rw-r--r--ContributionScores/.gitignore8
-rw-r--r--ContributionScores/.gitreview6
-rw-r--r--ContributionScores/.phpcs.xml14
-rw-r--r--ContributionScores/CODE_OF_CONDUCT.md1
-rw-r--r--ContributionScores/ContributionScores.alias.php269
-rw-r--r--ContributionScores/ContributionScores.i18n.magic.php11
-rw-r--r--ContributionScores/ContributionScores.php109
-rw-r--r--ContributionScores/ContributionScores_body.php322
-rw-r--r--ContributionScores/Gruntfile.js27
-rw-r--r--ContributionScores/composer.json20
-rw-r--r--ContributionScores/gitinfo.json1
-rw-r--r--ContributionScores/i18n/af.json20
-rw-r--r--ContributionScores/i18n/ar.json24
-rw-r--r--ContributionScores/i18n/arc.json14
-rw-r--r--ContributionScores/i18n/arz.json19
-rw-r--r--ContributionScores/i18n/ast.json20
-rw-r--r--ContributionScores/i18n/atj.json9
-rw-r--r--ContributionScores/i18n/avk.json15
-rw-r--r--ContributionScores/i18n/az.json9
-rw-r--r--ContributionScores/i18n/azb.json20
-rw-r--r--ContributionScores/i18n/ba.json22
-rw-r--r--ContributionScores/i18n/be-tarask.json23
-rw-r--r--ContributionScores/i18n/bg.json17
-rw-r--r--ContributionScores/i18n/bgn.json8
-rw-r--r--ContributionScores/i18n/bn.json20
-rw-r--r--ContributionScores/i18n/br.json22
-rw-r--r--ContributionScores/i18n/bs.json22
-rw-r--r--ContributionScores/i18n/ca.json23
-rw-r--r--ContributionScores/i18n/ce.json17
-rw-r--r--ContributionScores/i18n/ckb.json8
-rw-r--r--ContributionScores/i18n/cs.json22
-rw-r--r--ContributionScores/i18n/csb.json8
-rw-r--r--ContributionScores/i18n/cu.json9
-rw-r--r--ContributionScores/i18n/cy.json9
-rw-r--r--ContributionScores/i18n/da.json22
-rw-r--r--ContributionScores/i18n/de.json23
-rw-r--r--ContributionScores/i18n/diq.json22
-rw-r--r--ContributionScores/i18n/dsb.json20
-rw-r--r--ContributionScores/i18n/el.json24
-rw-r--r--ContributionScores/i18n/en.json18
-rw-r--r--ContributionScores/i18n/eo.json23
-rw-r--r--ContributionScores/i18n/es.json26
-rw-r--r--ContributionScores/i18n/et.json20
-rw-r--r--ContributionScores/i18n/eu.json11
-rw-r--r--ContributionScores/i18n/ext.json8
-rw-r--r--ContributionScores/i18n/fa.json26
-rw-r--r--ContributionScores/i18n/fi.json24
-rw-r--r--ContributionScores/i18n/fit.json8
-rw-r--r--ContributionScores/i18n/fr.json26
-rw-r--r--ContributionScores/i18n/frp.json17
-rw-r--r--ContributionScores/i18n/fy.json11
-rw-r--r--ContributionScores/i18n/ga.json9
-rw-r--r--ContributionScores/i18n/gl.json22
-rw-r--r--ContributionScores/i18n/grc.json18
-rw-r--r--ContributionScores/i18n/gsw.json20
-rw-r--r--ContributionScores/i18n/gu.json9
-rw-r--r--ContributionScores/i18n/gv.json10
-rw-r--r--ContributionScores/i18n/hak.json8
-rw-r--r--ContributionScores/i18n/he.json23
-rw-r--r--ContributionScores/i18n/hi.json20
-rw-r--r--ContributionScores/i18n/hil.json8
-rw-r--r--ContributionScores/i18n/hr.json23
-rw-r--r--ContributionScores/i18n/hsb.json20
-rw-r--r--ContributionScores/i18n/ht.json20
-rw-r--r--ContributionScores/i18n/hu.json24
-rw-r--r--ContributionScores/i18n/ia.json20
-rw-r--r--ContributionScores/i18n/id.json22
-rw-r--r--ContributionScores/i18n/ie.json19
-rw-r--r--ContributionScores/i18n/ig.json8
-rw-r--r--ContributionScores/i18n/ilo.json8
-rw-r--r--ContributionScores/i18n/io.json10
-rw-r--r--ContributionScores/i18n/is.json22
-rw-r--r--ContributionScores/i18n/it.json25
-rw-r--r--ContributionScores/i18n/ja.json24
-rw-r--r--ContributionScores/i18n/jv.json24
-rw-r--r--ContributionScores/i18n/ka.json15
-rw-r--r--ContributionScores/i18n/kab.json20
-rw-r--r--ContributionScores/i18n/kiu.json12
-rw-r--r--ContributionScores/i18n/kjp.json12
-rw-r--r--ContributionScores/i18n/kk-arab.json16
-rw-r--r--ContributionScores/i18n/kk-cyrl.json19
-rw-r--r--ContributionScores/i18n/kk-latn.json14
-rw-r--r--ContributionScores/i18n/km.json20
-rw-r--r--ContributionScores/i18n/kn.json8
-rw-r--r--ContributionScores/i18n/ko.json24
-rw-r--r--ContributionScores/i18n/ksh.json20
-rw-r--r--ContributionScores/i18n/ku-latn.json10
-rw-r--r--ContributionScores/i18n/kw.json9
-rw-r--r--ContributionScores/i18n/lb.json21
-rw-r--r--ContributionScores/i18n/li.json22
-rw-r--r--ContributionScores/i18n/lij.json8
-rw-r--r--ContributionScores/i18n/lki.json8
-rw-r--r--ContributionScores/i18n/lt.json18
-rw-r--r--ContributionScores/i18n/ltg.json8
-rw-r--r--ContributionScores/i18n/lus.json14
-rw-r--r--ContributionScores/i18n/lzh.json8
-rw-r--r--ContributionScores/i18n/mhr.json8
-rw-r--r--ContributionScores/i18n/mk.json20
-rw-r--r--ContributionScores/i18n/ml.json16
-rw-r--r--ContributionScores/i18n/mn.json8
-rw-r--r--ContributionScores/i18n/mni.json13
-rw-r--r--ContributionScores/i18n/mr.json23
-rw-r--r--ContributionScores/i18n/ms.json21
-rw-r--r--ContributionScores/i18n/mt.json21
-rw-r--r--ContributionScores/i18n/my.json18
-rw-r--r--ContributionScores/i18n/myv.json11
-rw-r--r--ContributionScores/i18n/nah.json10
-rw-r--r--ContributionScores/i18n/nb.json23
-rw-r--r--ContributionScores/i18n/nds.json11
-rw-r--r--ContributionScores/i18n/ne.json17
-rw-r--r--ContributionScores/i18n/niu.json8
-rw-r--r--ContributionScores/i18n/nl.json21
-rw-r--r--ContributionScores/i18n/nn.json22
-rw-r--r--ContributionScores/i18n/nso.json10
-rw-r--r--ContributionScores/i18n/oc.json20
-rw-r--r--ContributionScores/i18n/or.json14
-rw-r--r--ContributionScores/i18n/os.json8
-rw-r--r--ContributionScores/i18n/pa.json8
-rw-r--r--ContributionScores/i18n/pam.json13
-rw-r--r--ContributionScores/i18n/pdc.json9
-rw-r--r--ContributionScores/i18n/pdt.json8
-rw-r--r--ContributionScores/i18n/pl.json27
-rw-r--r--ContributionScores/i18n/pms.json21
-rw-r--r--ContributionScores/i18n/pnb.json9
-rw-r--r--ContributionScores/i18n/ps.json17
-rw-r--r--ContributionScores/i18n/pt-br.json27
-rw-r--r--ContributionScores/i18n/pt.json25
-rw-r--r--ContributionScores/i18n/qqq.json28
-rw-r--r--ContributionScores/i18n/qu.json8
-rw-r--r--ContributionScores/i18n/ro.json23
-rw-r--r--ContributionScores/i18n/roa-tara.json20
-rw-r--r--ContributionScores/i18n/rtm.json8
-rw-r--r--ContributionScores/i18n/ru.json26
-rw-r--r--ContributionScores/i18n/rue.json11
-rw-r--r--ContributionScores/i18n/scn.json22
-rw-r--r--ContributionScores/i18n/sd.json12
-rw-r--r--ContributionScores/i18n/sh.json20
-rw-r--r--ContributionScores/i18n/si.json19
-rw-r--r--ContributionScores/i18n/sk.json21
-rw-r--r--ContributionScores/i18n/sl.json21
-rw-r--r--ContributionScores/i18n/sr-ec.json25
-rw-r--r--ContributionScores/i18n/sr-el.json14
-rw-r--r--ContributionScores/i18n/stq.json16
-rw-r--r--ContributionScores/i18n/su.json20
-rw-r--r--ContributionScores/i18n/sv.json23
-rw-r--r--ContributionScores/i18n/ta.json22
-rw-r--r--ContributionScores/i18n/te.json15
-rw-r--r--ContributionScores/i18n/tet.json9
-rw-r--r--ContributionScores/i18n/tg-cyrl.json13
-rw-r--r--ContributionScores/i18n/tg-latn.json12
-rw-r--r--ContributionScores/i18n/th.json22
-rw-r--r--ContributionScores/i18n/ti.json10
-rw-r--r--ContributionScores/i18n/tk.json8
-rw-r--r--ContributionScores/i18n/tl.json19
-rw-r--r--ContributionScores/i18n/tr.json25
-rw-r--r--ContributionScores/i18n/tt-cyrl.json21
-rw-r--r--ContributionScores/i18n/ug-arab.json8
-rw-r--r--ContributionScores/i18n/ug-latn.json8
-rw-r--r--ContributionScores/i18n/uk.json25
-rw-r--r--ContributionScores/i18n/ur.json13
-rw-r--r--ContributionScores/i18n/vec.json20
-rw-r--r--ContributionScores/i18n/vep.json20
-rw-r--r--ContributionScores/i18n/vi.json21
-rw-r--r--ContributionScores/i18n/vo.json13
-rw-r--r--ContributionScores/i18n/wa.json19
-rw-r--r--ContributionScores/i18n/yi.json10
-rw-r--r--ContributionScores/i18n/yue.json23
-rw-r--r--ContributionScores/i18n/zh-hans.json25
-rw-r--r--ContributionScores/i18n/zh-hant.json28
-rw-r--r--ContributionScores/i18n/zh-hk.json8
-rw-r--r--ContributionScores/package-lock.json4241
-rw-r--r--ContributionScores/package.json13
-rw-r--r--ContributionScores/version4
174 files changed, 7728 insertions, 0 deletions
diff --git a/ContributionScores/.eslintrc.json b/ContributionScores/.eslintrc.json
new file mode 100644
index 00000000..2c3c2d3c
--- /dev/null
+++ b/ContributionScores/.eslintrc.json
@@ -0,0 +1,10 @@
+{
+ "root": true,
+ "extends": [
+ "wikimedia/client",
+ "wikimedia/jquery"
+ ],
+ "globals": {
+ "mw": false
+ }
+}
diff --git a/ContributionScores/.gitignore b/ContributionScores/.gitignore
new file mode 100644
index 00000000..159df56d
--- /dev/null
+++ b/ContributionScores/.gitignore
@@ -0,0 +1,8 @@
+*~
+*.kate-swp
+.*.swp
+.idea
+node_modules/
+/composer.lock
+/vendor/
+/.eslintcache
diff --git a/ContributionScores/.gitreview b/ContributionScores/.gitreview
new file mode 100644
index 00000000..8f522af5
--- /dev/null
+++ b/ContributionScores/.gitreview
@@ -0,0 +1,6 @@
+[gerrit]
+host=gerrit.wikimedia.org
+port=29418
+project=mediawiki/extensions/ContributionScores
+track=1
+defaultrebase=0 \ No newline at end of file
diff --git a/ContributionScores/.phpcs.xml b/ContributionScores/.phpcs.xml
new file mode 100644
index 00000000..d0d9344f
--- /dev/null
+++ b/ContributionScores/.phpcs.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<ruleset>
+ <rule ref="./vendor/mediawiki/mediawiki-codesniffer/MediaWiki">
+ <exclude name="MediaWiki.Files.ClassMatchesFilename.NotMatch" />
+ <exclude name="MediaWiki.NamingConventions.PrefixedGlobalFunctions.allowedPrefix" />
+ <exclude name="MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage" />
+ <exclude name="MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected" />
+ <exclude name="MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic" />
+ <exclude name="Squiz.Scope.MethodScope.Missing" />
+ </rule>
+ <file>.</file>
+ <arg name="extensions" value="php" />
+ <arg name="encoding" value="UTF-8" />
+</ruleset>
diff --git a/ContributionScores/CODE_OF_CONDUCT.md b/ContributionScores/CODE_OF_CONDUCT.md
new file mode 100644
index 00000000..498acf76
--- /dev/null
+++ b/ContributionScores/CODE_OF_CONDUCT.md
@@ -0,0 +1 @@
+The development of this software is covered by a [Code of Conduct](https://www.mediawiki.org/wiki/Special:MyLanguage/Code_of_Conduct).
diff --git a/ContributionScores/ContributionScores.alias.php b/ContributionScores/ContributionScores.alias.php
new file mode 100644
index 00000000..a7d6f1a7
--- /dev/null
+++ b/ContributionScores/ContributionScores.alias.php
@@ -0,0 +1,269 @@
+<?php
+/**
+ * Aliases for special pages
+ *
+ * @file
+ * @ingroup Extensions
+ */
+
+$specialPageAliases = [];
+
+/** English (English) */
+$specialPageAliases['en'] = [
+ 'ContributionScores' => [ 'ContributionScores' ],
+];
+
+/** Arabic (العربية) */
+$specialPageAliases['ar'] = [
+ 'ContributionScores' => [ 'نتائج_المساهمة' ],
+];
+
+/** Aramaic (ܐܪܡܝܐ) */
+$specialPageAliases['arc'] = [
+ 'ContributionScores' => [ 'ܦܠܛ̈ܐ_ܕܫܘܬܦܘ̈ܬܐ' ],
+];
+
+/** Egyptian Arabic (مصرى) */
+$specialPageAliases['arz'] = [
+ 'ContributionScores' => [ 'نتايج_المساهمه' ],
+];
+
+/** Assamese (অসমীয়া) */
+$specialPageAliases['as'] = [
+ 'ContributionScores' => [ 'বৰঙনিৰ_মূল্যায়ন' ],
+];
+
+/** Avaric (авар) */
+$specialPageAliases['av'] = [
+ 'ContributionScores' => [ 'Очки_вклада' ],
+];
+
+/** Bashkir (башҡортса) */
+$specialPageAliases['ba'] = [
+ 'ContributionScores' => [ 'Өлөш_мәрәйҙәре' ],
+];
+
+/** Western Balochi (بلوچی رخشانی) */
+$specialPageAliases['bgn'] = [
+ 'ContributionScores' => [ 'شراکتانی_امتیاز_ئان' ],
+];
+
+/** Banjar (Bahasa Banjar) */
+$specialPageAliases['bjn'] = [
+ 'ContributionScores' => [ 'Skor_sumbangan' ],
+];
+
+/** Bengali (বাংলা) */
+$specialPageAliases['bn'] = [
+ 'ContributionScores' => [ 'অবদানের_স্কোর' ],
+];
+
+/** Breton (brezhoneg) */
+$specialPageAliases['br'] = [
+ 'ContributionScores' => [ 'Skor_Degasadennoù' ],
+];
+
+/** Bosnian (bosanski) */
+$specialPageAliases['bs'] = [
+ 'ContributionScores' => [ 'DoprinosiBodovi' ],
+];
+
+/** Min Dong Chinese (Mìng-dĕ̤ng-ngṳ̄) */
+$specialPageAliases['cdo'] = [
+ 'ContributionScores' => [ '貢獻分數' ],
+];
+
+/** German (Deutsch) */
+$specialPageAliases['de'] = [
+ 'ContributionScores' => [ 'Beitragspunkte' ],
+];
+
+/** Zazaki (Zazaki) */
+$specialPageAliases['diq'] = [
+ 'ContributionScores' => [ 'SqoréDekerdışan' ],
+];
+
+/** Esperanto (Esperanto) */
+$specialPageAliases['eo'] = [
+ 'ContributionScores' => [ 'Poentaro_de_kontribuoj', 'Kontribuatingoj' ],
+];
+
+/** Estonian (eesti) */
+$specialPageAliases['et'] = [
+ 'ContributionScores' => [ 'Kaastööpunktid' ],
+];
+
+/** Persian (فارسی) */
+$specialPageAliases['fa'] = [
+ 'ContributionScores' => [ 'امتیازهای_مشارکت' ],
+];
+
+/** Finnish (suomi) */
+$specialPageAliases['fi'] = [
+ 'ContributionScores' => [ 'Muokkauspisteet' ],
+];
+
+/** Galician (galego) */
+$specialPageAliases['gl'] = [
+ 'ContributionScores' => [ 'Puntuación_das_contribucións' ],
+];
+
+/** Hebrew (עברית) */
+$specialPageAliases['he'] = [
+ 'ContributionScores' => [ 'דירוג_תרומות' ],
+];
+
+/** Haitian (Kreyòl ayisyen) */
+$specialPageAliases['ht'] = [
+ 'ContributionScores' => [ 'PwentajKontribisyon' ],
+];
+
+/** Hungarian (magyar) */
+$specialPageAliases['hu'] = [
+ 'ContributionScores' => [ 'Szerkesztési_pontok' ],
+];
+
+/** Interlingua (interlingua) */
+$specialPageAliases['ia'] = [
+ 'ContributionScores' => [ 'Scores_de_contributiones' ],
+];
+
+/** Indonesian (Bahasa Indonesia) */
+$specialPageAliases['id'] = [
+ 'ContributionScores' => [ 'Skor_kontribusi', 'SkorKontribusi' ],
+];
+
+/** Italian (italiano) */
+$specialPageAliases['it'] = [
+ 'ContributionScores' => [ 'PunteggiContributi' ],
+];
+
+/** Japanese (日本語) */
+$specialPageAliases['ja'] = [
+ 'ContributionScores' => [ '貢献スコア', '貢献得点' ],
+];
+
+/** Khmer (ភាសាខ្មែរ) */
+$specialPageAliases['km'] = [
+ 'ContributionScores' => [ 'ពិន្ទុអ្នករួមចំណែក' ],
+];
+
+/** Korean (한국어) */
+$specialPageAliases['ko'] = [
+ 'ContributionScores' => [ '기여점수' ],
+];
+
+/** Colognian (Ripoarisch) */
+$specialPageAliases['ksh'] = [
+ 'ContributionScores' => [ 'MetmaacherZahle' ],
+];
+
+/** Ladino (Ladino) */
+$specialPageAliases['lad'] = [
+ 'ContributionScores' => [ 'Resultados_de_ajustamientos' ],
+];
+
+/** Luxembourgish (Lëtzebuergesch) */
+$specialPageAliases['lb'] = [
+ 'ContributionScores' => [ 'Score_vun_de_Kontributiounen' ],
+];
+
+/** Northern Luri (لۊری شومالی) */
+$specialPageAliases['lrc'] = [
+ 'ContributionScores' => [ 'نئرخ_ھومیاری' ],
+];
+
+/** Minangkabau (Baso Minangkabau) */
+$specialPageAliases['min'] = [
+ 'ContributionScores' => [ 'SkorJariah' ],
+];
+
+/** Macedonian (македонски) */
+$specialPageAliases['mk'] = [
+ 'ContributionScores' => [ 'БодувањеНаПридонесите' ],
+];
+
+/** Malayalam (മലയാളം) */
+$specialPageAliases['ml'] = [
+ 'ContributionScores' => [ 'സേവനസ്കോറുകൾ' ],
+];
+
+/** Marathi (मराठी) */
+$specialPageAliases['mr'] = [
+ 'ContributionScores' => [ 'योगदानप्राविण्य' ],
+];
+
+/** Norwegian Bokmål (norsk bokmål) */
+$specialPageAliases['nb'] = [
+ 'ContributionScores' => [ 'Bidragspoeng' ],
+];
+
+/** Low Saxon (Netherlands) (Nedersaksies) */
+$specialPageAliases['nds-nl'] = [
+ 'ContributionScores' => [ 'Biedragentelling' ],
+];
+
+/** Dutch (Nederlands) */
+$specialPageAliases['nl'] = [
+ 'ContributionScores' => [ 'Gebruikersscores', 'Bijdragenscores' ],
+];
+
+/** Polish (polski) */
+$specialPageAliases['pl'] = [
+ 'ContributionScores' => [ 'Punkty_za_edycje' ],
+];
+
+/** Russian (русский) */
+$specialPageAliases['ru'] = [
+ 'ContributionScores' => [ 'Очки_вклада' ],
+];
+
+/** Sanskrit (संस्कृतम्) */
+$specialPageAliases['sa'] = [
+ 'ContributionScores' => [ 'योगदानप्राप्ताङ्क' ],
+];
+
+/** Sicilian (sicilianu) */
+$specialPageAliases['scn'] = [
+ 'ContributionScores' => [ 'PunteggiContribuzione' ],
+];
+
+/** Slovak (slovenčina) */
+$specialPageAliases['sk'] = [
+ 'ContributionScores' => [ 'SkórePríspevkov' ],
+];
+
+/** Swedish (svenska) */
+$specialPageAliases['sv'] = [
+ 'ContributionScores' => [ 'Bidragspoäng' ],
+];
+
+/** Thai (ไทย) */
+$specialPageAliases['th'] = [
+ 'ContributionScores' => [ 'คะแนนการเขียน' ],
+];
+
+/** Tagalog (Tagalog) */
+$specialPageAliases['tl'] = [
+ 'ContributionScores' => [ 'Mga_puntos_ng_ambag' ],
+];
+
+/** Turkish (Türkçe) */
+$specialPageAliases['tr'] = [
+ 'ContributionScores' => [ 'KatkıSkorları', 'KatkıPuanları' ],
+];
+
+/** Ukrainian (українська) */
+$specialPageAliases['uk'] = [
+ 'ContributionScores' => [ 'Очки_внеску', 'Очки_вклада' ],
+];
+
+/** Simplified Chinese (中文(简体)‎) */
+$specialPageAliases['zh-hans'] = [
+ 'ContributionScores' => [ '贡献得分' ],
+];
+
+/** Traditional Chinese (中文(繁體)‎) */
+$specialPageAliases['zh-hant'] = [
+ 'ContributionScores' => [ '貢獻分數' ],
+];
diff --git a/ContributionScores/ContributionScores.i18n.magic.php b/ContributionScores/ContributionScores.i18n.magic.php
new file mode 100644
index 00000000..8f15db3a
--- /dev/null
+++ b/ContributionScores/ContributionScores.i18n.magic.php
@@ -0,0 +1,11 @@
+<?php
+/**
+ * Magic words for extension.
+ */
+
+$magicWords = [];
+
+/** English (English) */
+$magicWords['en'] = [
+ 'cscore' => [ 0, 'cscore' ],
+];
diff --git a/ContributionScores/ContributionScores.php b/ContributionScores/ContributionScores.php
new file mode 100644
index 00000000..9e964464
--- /dev/null
+++ b/ContributionScores/ContributionScores.php
@@ -0,0 +1,109 @@
+<?php
+/** \file
+ * \brief Contains setup code for the Contribution Scores Extension.
+ */
+
+# Not a valid entry point, skip unless MEDIAWIKI is defined
+if ( !defined( 'MEDIAWIKI' ) ) {
+ echo 'Contribution Scores extension';
+ exit( 1 );
+}
+
+$wgExtensionCredits['specialpage'][] = [
+ 'path' => __FILE__,
+ 'name' => 'Contribution Scores',
+ 'url' => 'https://www.mediawiki.org/wiki/Extension:Contribution_Scores',
+ 'author' => 'Tim Laqua',
+ 'descriptionmsg' => 'contributionscores-desc',
+ 'version' => '1.25.0'
+];
+
+define( 'CONTRIBUTIONSCORES_MAXINCLUDELIMIT', 50 );
+$wgContribScoreReports = null;
+
+// These settings can be overridden in LocalSettings.php.
+
+// Set to true to exclude bots from the reporting.
+$wgContribScoreIgnoreBlockedUsers = false;
+
+// Set to true to exclude blocked users from the reporting.
+$wgContribScoreIgnoreBots = false;
+
+// Set to true to use real user names when available. Only for MediaWiki 1.19 and later.
+$wgContribScoresUseRealName = false;
+
+// Set to true to disable cache for parser function and inclusion of table.
+$wgContribScoreDisableCache = false;
+
+$wgAutoloadClasses['ContributionScores'] = __DIR__ . '/ContributionScores_body.php';
+$wgSpecialPages['ContributionScores'] = 'ContributionScores';
+
+$wgMessagesDirs['ContributionScores'] = __DIR__ . '/i18n';
+$wgExtensionMessagesFiles['ContributionScoresAlias'] = __DIR__ . '/ContributionScores.alias.php';
+$wgExtensionMessagesFiles['ContributionScoresMagic'] =
+ __DIR__ . '/ContributionScores.i18n.magic.php';
+
+$wgHooks['ParserFirstCallInit'][] = 'efContributionScores_Setup';
+
+function efContributionScores_Setup( &$parser ) {
+ $parser->setFunctionHook( 'cscore', 'efContributionScores_Render' );
+
+ return true;
+}
+
+function efContributionScores_Render( &$parser, $usertext, $metric = 'score' ) {
+ global $wgContribScoreDisableCache;
+
+ if ( $wgContribScoreDisableCache ) {
+ $parser->getOutput()->updateCacheExpiry( 0 );
+ }
+
+ $user = User::newFromName( $usertext );
+ $dbr = wfGetDB( DB_REPLICA );
+
+ if ( $user instanceof User && $user->isLoggedIn() ) {
+ global $wgLang;
+
+ $revWhere = ActorMigration::newMigration()->getWhere( $dbr, 'rev_user', $user );
+ if ( $metric == 'score' ) {
+ $res = $dbr->select(
+ [ 'revision' ] + $revWhere['tables'],
+ 'COUNT(DISTINCT rev_page)+SQRT(COUNT(rev_id)-COUNT(DISTINCT rev_page))*2 AS wiki_rank',
+ $revWhere['conds'],
+ __METHOD__,
+ [],
+ $revWhere['joins']
+ );
+ $row = $dbr->fetchObject( $res );
+ $output = $wgLang->formatNum( round( $row->wiki_rank, 0 ) );
+ } elseif ( $metric == 'changes' ) {
+ $res = $dbr->select(
+ [ 'revision' ] + $revWhere['tables'],
+ 'COUNT(rev_id) AS rev_count',
+ $revWhere['conds'],
+ __METHOD__,
+ [],
+ $revWhere['joins']
+ );
+ $row = $dbr->fetchObject( $res );
+ $output = $wgLang->formatNum( $row->rev_count );
+ } elseif ( $metric == 'pages' ) {
+ $res = $dbr->select(
+ [ 'revision' ] + $revWhere['tables'],
+ 'COUNT(DISTINCT rev_page) AS page_count',
+ $revWhere['conds'],
+ __METHOD__,
+ [],
+ $revWhere['joins']
+ );
+ $row = $dbr->fetchObject( $res );
+ $output = $wgLang->formatNum( $row->page_count );
+ } else {
+ $output = wfMessage( 'contributionscores-invalidmetric' )->text();
+ }
+ } else {
+ $output = wfMessage( 'contributionscores-invalidusername' )->text();
+ }
+
+ return $parser->insertStripItem( $output, $parser->mStripState );
+}
diff --git a/ContributionScores/ContributionScores_body.php b/ContributionScores/ContributionScores_body.php
new file mode 100644
index 00000000..9a59c5be
--- /dev/null
+++ b/ContributionScores/ContributionScores_body.php
@@ -0,0 +1,322 @@
+<?php
+/** \file
+ * \brief Contains code for the ContributionScores Class (extends SpecialPage).
+ */
+
+use MediaWiki\MediaWikiServices;
+
+/// Special page class for the Contribution Scores extension
+/**
+ * Special page that generates a list of wiki contributors based
+ * on edit diversity (unique pages edited) and edit volume (total
+ * number of edits.
+ *
+ * @ingroup Extensions
+ * @author Tim Laqua <t.laqua@gmail.com>
+ */
+class ContributionScores extends IncludableSpecialPage {
+ public function __construct() {
+ parent::__construct( 'ContributionScores' );
+ }
+
+ /// Generates a "Contribution Scores" table for a given LIMIT and date range
+
+ /**
+ * Function generates Contribution Scores tables in HTML format (not wikiText)
+ *
+ * @param int $days Days in the past to run report for
+ * @param int $limit Maximum number of users to return (default 50)
+ * @param string|null $title The title of the table
+ * @param array $options array of options (default none; nosort/notools)
+ * @return string Html Table representing the requested Contribution Scores.
+ */
+ function genContributionScoreTable( $days, $limit, $title = null, $options = 'none' ) {
+ global $wgContribScoreIgnoreBots, $wgContribScoreIgnoreBlockedUsers, $wgContribScoresUseRealName;
+
+ $opts = explode( ',', strtolower( $options ) );
+
+ $dbr = wfGetDB( DB_REPLICA );
+
+ $store = MediaWikiServices::getInstance()
+ ->getRevisionStoreFactory()
+ ->getRevisionStore();
+ $revQuery = $store->getQueryInfo();
+
+ $revUser = $revQuery['fields']['rev_user'];
+
+ $sqlWhere = [];
+
+ if ( $days > 0 ) {
+ $date = time() - ( 60 * 60 * 24 * $days );
+ $dateString = $dbr->timestamp( $date );
+ $sqlWhere[] = "rev_timestamp > '$dateString'";
+ }
+
+ if ( $wgContribScoreIgnoreBlockedUsers ) {
+ $sqlWhere[] = "{$revUser} NOT IN " .
+ $dbr->buildSelectSubquery( 'ipblocks', 'ipb_user', 'ipb_user <> 0', __METHOD__ );
+ }
+
+ if ( $wgContribScoreIgnoreBots ) {
+ $sqlWhere[] = "{$revUser} NOT IN " .
+ $dbr->buildSelectSubquery( 'user_groups', 'ug_user', [ 'ug_group' => 'bot' ], __METHOD__ );
+
+ }
+
+ if ( $dbr->unionSupportsOrderAndLimit() ) {
+ $order = [
+ 'GROUP BY' => $revUser,
+ 'ORDER BY' => 'page_count DESC',
+ 'LIMIT' => $limit
+ ];
+ } else {
+ $order = [ 'GROUP BY' => $revUser ];
+ }
+
+ $sqlMostPages = $dbr->selectSQLText(
+ $revQuery['tables'],
+ [
+ 'rev_user' => $revUser,
+ 'page_count' => 'COUNT(DISTINCT rev_page)',
+ 'rev_count' => 'COUNT(rev_id)',
+ ],
+ $sqlWhere,
+ __METHOD__,
+ $order,
+ $revQuery['joins']
+ );
+
+ if ( $dbr->unionSupportsOrderAndLimit() ) {
+ $order = [
+ 'GROUP BY' => 'rev_user',
+ 'ORDER BY' => 'rev_count DESC',
+ 'LIMIT' => $limit
+ ];
+ } else {
+ $order = [ 'GROUP BY' => 'rev_user' ];
+ }
+
+ $sqlMostRevs = $dbr->selectSQLText(
+ $revQuery['tables'],
+ [
+ 'rev_user' => $revUser,
+ 'page_count' => 'COUNT(DISTINCT rev_page)',
+ 'rev_count' => 'COUNT(rev_id)',
+ ],
+ $sqlWhere,
+ __METHOD__,
+ $order,
+ $revQuery['joins']
+ );
+
+ $sqlMostPagesOrRevs = $dbr->unionQueries( [ $sqlMostPages, $sqlMostRevs ], false );
+ $res = $dbr->select(
+ [
+ 'u' => 'user',
+ 's' => new Wikimedia\Rdbms\Subquery( $sqlMostPagesOrRevs ),
+ ],
+ [
+ 'user_id',
+ 'user_name',
+ 'user_real_name',
+ 'page_count',
+ 'rev_count',
+ 'wiki_rank' => 'page_count+SQRT(rev_count-page_count)*2',
+ ],
+ [],
+ __METHOD__,
+ [
+ 'ORDER BY' => 'wiki_rank DESC',
+ 'GROUP BY' => 'user_name',
+ 'LIMIT' => $limit,
+ ],
+ [
+ 's' => [
+ 'JOIN',
+ 'user_id=rev_user'
+ ]
+ ]
+ );
+
+ $sortable = in_array( 'nosort', $opts ) ? '' : ' sortable';
+
+ $output = "<table class=\"wikitable contributionscores plainlinks{$sortable}\" >\n" .
+ "<tr class='header'>\n" .
+ Html::element( 'th', [], $this->msg( 'contributionscores-rank' )->text() ) .
+ Html::element( 'th', [], $this->msg( 'contributionscores-score' )->text() ) .
+ Html::element( 'th', [], $this->msg( 'contributionscores-pages' )->text() ) .
+ Html::element( 'th', [], $this->msg( 'contributionscores-changes' )->text() ) .
+ Html::element( 'th', [], $this->msg( 'contributionscores-username' )->text() );
+
+ $altrow = '';
+ $user_rank = 1;
+
+ $lang = $this->getLanguage();
+ foreach ( $res as $row ) {
+ // Use real name if option used and real name present.
+ if ( $wgContribScoresUseRealName && $row->user_real_name !== '' ) {
+ $userLink = Linker::userLink(
+ $row->user_id,
+ $row->user_name,
+ $row->user_real_name
+ );
+ } else {
+ $userLink = Linker::userLink(
+ $row->user_id,
+ $row->user_name
+ );
+ }
+
+ $output .= Html::closeElement( 'tr' );
+ $output .= "<tr class='{$altrow}'>\n" .
+ "<td class='content' style='padding-right:10px;text-align:right;'>" .
+ $lang->formatNum( round( $user_rank, 0 ) ) .
+ "\n</td><td class='content' style='padding-right:10px;text-align:right;'>" .
+ $lang->formatNum( round( $row->wiki_rank, 0 ) ) .
+ "\n</td><td class='content' style='padding-right:10px;text-align:right;'>" .
+ $lang->formatNum( $row->page_count ) .
+ "\n</td><td class='content' style='padding-right:10px;text-align:right;'>" .
+ $lang->formatNum( $row->rev_count ) .
+ "\n</td><td class='content'>" .
+ $userLink;
+
+ # Option to not display user tools
+ if ( !in_array( 'notools', $opts ) ) {
+ $output .= Linker::userToolLinks( $row->user_id, $row->user_name );
+ }
+
+ $output .= Html::closeElement( 'td' ) . "\n";
+
+ if ( $altrow == '' && empty( $sortable ) ) {
+ $altrow = 'odd ';
+ } else {
+ $altrow = '';
+ }
+
+ $user_rank++;
+ }
+ $output .= Html::closeElement( 'tr' );
+ $output .= Html::closeElement( 'table' );
+
+ $dbr->freeResult( $res );
+
+ if ( !empty( $title ) ) {
+ $output = Html::rawElement( 'table',
+ [
+ 'style' => 'border-spacing: 0; padding: 0',
+ 'class' => 'contributionscores-wrapper',
+ 'lang' => htmlspecialchars( $lang->getCode() ),
+ 'dir' => $lang->getDir()
+ ],
+ "\n" .
+ "<tr>\n" .
+ "<td style='padding: 0px;'>{$title}</td>\n" .
+ "</tr>\n" .
+ "<tr>\n" .
+ "<td style='padding: 0px;'>{$output}</td>\n" .
+ "</tr>\n"
+ );
+ }
+
+ return $output;
+ }
+
+ function execute( $par ) {
+ $this->setHeaders();
+
+ if ( $this->including() ) {
+ $this->showInclude( $par );
+ } else {
+ $this->showPage();
+ }
+
+ return true;
+ }
+
+ /**
+ * Called when being included on a normal wiki page.
+ * Cache is disabled so it can depend on the user language.
+ * @param string|null $par A subpage give to the special page
+ */
+ function showInclude( $par ) {
+ $days = null;
+ $limit = null;
+ $options = 'none';
+
+ if ( !empty( $par ) ) {
+ $params = explode( '/', $par );
+
+ $limit = intval( $params[0] );
+
+ if ( isset( $params[1] ) ) {
+ $days = intval( $params[1] );
+ }
+
+ if ( isset( $params[2] ) ) {
+ $options = $params[2];
+ }
+ }
+
+ if ( empty( $limit ) || $limit < 1 || $limit > CONTRIBUTIONSCORES_MAXINCLUDELIMIT ) {
+ $limit = 10;
+ }
+ if ( $days === null || $days < 0 ) {
+ $days = 7;
+ }
+
+ if ( $days > 0 ) {
+ $reportTitle = $this->msg( 'contributionscores-days' )->numParams( $days )->text();
+ } else {
+ $reportTitle = $this->msg( 'contributionscores-allrevisions' )->text();
+ }
+ $reportTitle .= ' ' . $this->msg( 'contributionscores-top' )->numParams( $limit )->text();
+ $title = Xml::element( 'h4',
+ [ 'class' => 'contributionscores-title' ],
+ $reportTitle
+ ) . "\n";
+ $this->getOutput()->addHTML( $this->genContributionScoreTable(
+ $days,
+ $limit,
+ $title,
+ $options
+ ) );
+ }
+
+ /**
+ * Show the special page
+ */
+ function showPage() {
+ global $wgContribScoreReports;
+
+ if ( !is_array( $wgContribScoreReports ) ) {
+ $wgContribScoreReports = [
+ [ 7, 50 ],
+ [ 30, 50 ],
+ [ 0, 50 ]
+ ];
+ }
+
+ $out = $this->getOutput();
+ $out->addWikiMsg( 'contributionscores-info' );
+
+ foreach ( $wgContribScoreReports as $scoreReport ) {
+ list( $days, $revs ) = $scoreReport;
+ if ( $days > 0 ) {
+ $reportTitle = $this->msg( 'contributionscores-days' )->numParams( $days )->text();
+ } else {
+ $reportTitle = $this->msg( 'contributionscores-allrevisions' )->text();
+ }
+ $reportTitle .= ' ' . $this->msg( 'contributionscores-top' )->numParams( $revs )->text();
+ $title = Xml::element( 'h2',
+ [ 'class' => 'contributionscores-title' ],
+ $reportTitle
+ ) . "\n";
+ $out->addHTML( $title );
+ $out->addHTML( $this->genContributionScoreTable( $days, $revs ) );
+ }
+ }
+
+ protected function getGroupName() {
+ return 'wiki';
+ }
+}
diff --git a/ContributionScores/Gruntfile.js b/ContributionScores/Gruntfile.js
new file mode 100644
index 00000000..0e768557
--- /dev/null
+++ b/ContributionScores/Gruntfile.js
@@ -0,0 +1,27 @@
+/* eslint-env node, es6 */
+module.exports = function ( grunt ) {
+ 'use strict';
+
+ grunt.loadNpmTasks( 'grunt-banana-checker' );
+ grunt.loadNpmTasks( 'grunt-eslint' );
+
+ grunt.initConfig( {
+ banana: {
+ all: 'i18n'
+ },
+ eslint: {
+ options: {
+ extensions: [ '.js', '.json' ],
+ cache: true
+ },
+ all: [
+ '**/*.{js,json}',
+ '!node_modules/**',
+ '!vendor/**'
+ ]
+ }
+ } );
+
+ grunt.registerTask( 'test', [ 'eslint', 'banana' ] );
+ grunt.registerTask( 'default', 'test' );
+};
diff --git a/ContributionScores/composer.json b/ContributionScores/composer.json
new file mode 100644
index 00000000..484722e1
--- /dev/null
+++ b/ContributionScores/composer.json
@@ -0,0 +1,20 @@
+{
+ "require-dev": {
+ "mediawiki/mediawiki-codesniffer": "38.0.0",
+ "mediawiki/minus-x": "1.1.0",
+ "php-parallel-lint/php-console-highlighter": "0.5.0",
+ "php-parallel-lint/php-parallel-lint": "1.2.0"
+ },
+ "scripts": {
+ "fix": [
+ "minus-x fix .",
+ "phpcbf"
+ ],
+ "test": [
+ "parallel-lint . --exclude vendor --exclude node_modules",
+ "@phpcs",
+ "minus-x check ."
+ ],
+ "phpcs": "phpcs -sp --cache"
+ }
+}
diff --git a/ContributionScores/gitinfo.json b/ContributionScores/gitinfo.json
new file mode 100644
index 00000000..1250b154
--- /dev/null
+++ b/ContributionScores/gitinfo.json
@@ -0,0 +1 @@
+{"head": "a35de703c04e92edb8c2115c297affa3e832b641\n", "headSHA1": "a35de703c04e92edb8c2115c297affa3e832b641\n", "headCommitDate": "1666510377", "branch": "a35de703c04e92edb8c2115c297affa3e832b641\n", "remoteURL": "https://gerrit-replica.wikimedia.org/r/mediawiki/extensions/ContributionScores"} \ No newline at end of file
diff --git a/ContributionScores/i18n/af.json b/ContributionScores/i18n/af.json
new file mode 100644
index 00000000..71524131
--- /dev/null
+++ b/ContributionScores/i18n/af.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Arnobarnard",
+ "Naudefj"
+ ]
+ },
+ "contributionscores": "Punte bygedra",
+ "contributionscores-desc": "Gee 'n oorsig van [[Special:ContributionScores|gebruikers met die meeste bydraes]] in die wiki",
+ "contributionscores-info": "Punte word as volg bereken:\n*Een (1) punt vir elke bladsy gewysig\n*Wortel van (totale aantal wysigings) - (totale aantal unieke bladsye) * 2\nPunte wat op die manier bereken word weeg die verskeidenheid van bladsye gewysig oor die aantal wysigings. Die punte meet hoofsaaklik unieke bladsye gewysig, met inagneming van hoë volume wysigings - wat veronderstel word om van hoër kwaliteit te wees.",
+ "contributionscores-top": "(Top $1)",
+ "contributionscores-days": "Laaste {{PLURAL:$1|dag|$1 dae}}",
+ "contributionscores-allrevisions": "Alle weergawes",
+ "contributionscores-score": "Punte",
+ "contributionscores-pages": "Bladsye",
+ "contributionscores-changes": "Wysigings",
+ "contributionscores-username": "Gebruikersnaam",
+ "contributionscores-invalidusername": "Ongeldige gebruikersnaam",
+ "contributionscores-invalidmetric": "Ongeldige eenheid"
+}
diff --git a/ContributionScores/i18n/ar.json b/ContributionScores/i18n/ar.json
new file mode 100644
index 00000000..5afaf833
--- /dev/null
+++ b/ContributionScores/i18n/ar.json
@@ -0,0 +1,24 @@
+{
+ "@metadata": {
+ "authors": [
+ "Meno25",
+ "Mido",
+ "OsamaK",
+ "ترجمان05",
+ "ديفيد"
+ ]
+ },
+ "contributionscores": "نتائج المساهمات",
+ "contributionscores-desc": "يسحب قاعدة بيانات الويكي لأعلى [[Special:ContributionScores|حجم لمساهمات المستخدم]]",
+ "contributionscores-info": "تحسب النتيجة بشكل أساسي عن طريق حساب عدد الصفحات التي تم تعديلها، مع الأخذ في الاعتبار كمية التعديلات الكبيرة.",
+ "contributionscores-top": "(أعلى $1)",
+ "contributionscores-days": "{{PLURAL:$1||اليوم الماضي|اليومان الماضيان|ال$1 أيام الماضية|ال$1 يومًا الماضية|ال$1 يوم الماضية}}",
+ "contributionscores-allrevisions": "كل الوقت",
+ "contributionscores-score": "النتيجة",
+ "contributionscores-rank": "الرتبة",
+ "contributionscores-pages": "الصفحات",
+ "contributionscores-changes": "تغييرات",
+ "contributionscores-username": "اسم المستخدم",
+ "contributionscores-invalidusername": "اسم المستخدم غير صحيح",
+ "contributionscores-invalidmetric": "المتري غير صحيح"
+}
diff --git a/ContributionScores/i18n/arc.json b/ContributionScores/i18n/arc.json
new file mode 100644
index 00000000..cd48f081
--- /dev/null
+++ b/ContributionScores/i18n/arc.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "334a",
+ "Basharh"
+ ]
+ },
+ "contributionscores": "ܦܠܛ̈ܐ ܕܫܘܬܦܘܝܬ̈ܐ",
+ "contributionscores-days": "{{PLURAL:$1|ܝܘܡܐ ܐܚܪܝܐ|$1 ܝܘܡܬ̈ܐ ܐܚܪ̈ܝܐ}}",
+ "contributionscores-allrevisions": "ܟܠ ܙܒܢ̈ܐ",
+ "contributionscores-pages": "ܦܐܬܬ̈ܐ",
+ "contributionscores-changes": "ܫܘܚܠܦ̈ܐ",
+ "contributionscores-username": "ܫܡܐ ܕܡܦܠܚܢܐ"
+}
diff --git a/ContributionScores/i18n/arz.json b/ContributionScores/i18n/arz.json
new file mode 100644
index 00000000..ee060f96
--- /dev/null
+++ b/ContributionScores/i18n/arz.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Meno25"
+ ]
+ },
+ "contributionscores": "نتائج المساهمات",
+ "contributionscores-desc": "يسحب قاعدة بيانات الويكى لأعلى [[Special:ContributionScores|حجم لمساهمات المستخدم]]",
+ "contributionscores-info": "النتائج تحسب كالتالي:\n*1 نقطة لكل صفحة فريدة تحرر\n*الجذر التربيعى ل(عدد التعديلات الكلية) - (عدد الصفحات الفريدة الكلية) * 2\nالنتائج المحسوبة بهذه الطريقة توزن انتثار التعديلات على حجم التعديلات. أساسا، هذه النتيجة تقيس بشكل أساسى الصفحات الفريدة المحررة، مع الأخذ فى الاعتبار أحجام التعديل الكبيرة - تفترض أنها تكون صفحة بجودة أعلى.",
+ "contributionscores-top": "(أعلى $1)",
+ "contributionscores-days": "{{PLURAL:$1||اليوم الماضي|اليومان الماضيان|ال$1 أيام الماضية|ال$1 يومًا الماضية|ال$1 يوم الماضية}}",
+ "contributionscores-allrevisions": "كل المراجعات",
+ "contributionscores-score": "النتيجة",
+ "contributionscores-pages": "الصفحات",
+ "contributionscores-changes": "التغييرات",
+ "contributionscores-username": "اسم المستخدم",
+ "contributionscores-invalidusername": "اسم المستخدم غير صحيح",
+ "contributionscores-invalidmetric": "المترى غير صحيح"
+}
diff --git a/ContributionScores/i18n/ast.json b/ContributionScores/i18n/ast.json
new file mode 100644
index 00000000..974d81c1
--- /dev/null
+++ b/ContributionScores/i18n/ast.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Xuacu"
+ ]
+ },
+ "contributionscores": "Puntos de collaboraciones",
+ "contributionscores-desc": "Peñera la base de datos de la wiki pa ver los mayores [[Special:ContributionScores|volumes de collaboración de los usuarios]]",
+ "contributionscores-info": "Les puntuaciones miden principalmente les ediciones de páxines úniques, teniendo en cuenta un volume d'edición altu.",
+ "contributionscores-top": "(Los $1 mayores)",
+ "contributionscores-days": "{{PLURAL:$1|Últimu día|Los últimos $1 díes}}",
+ "contributionscores-allrevisions": "De tolos tiempos",
+ "contributionscores-score": "Puntuación",
+ "contributionscores-rank": "Rangu",
+ "contributionscores-pages": "Páxines",
+ "contributionscores-changes": "Cambios",
+ "contributionscores-username": "Nome d'usuariu",
+ "contributionscores-invalidusername": "Nome d'usuariu inválidu",
+ "contributionscores-invalidmetric": "Métrica inválida"
+}
diff --git a/ContributionScores/i18n/atj.json b/ContributionScores/i18n/atj.json
new file mode 100644
index 00000000..23307886
--- /dev/null
+++ b/ContributionScores/i18n/atj.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Benoit Rochon"
+ ]
+ },
+ "contributionscores-pages": "Masinahikana",
+ "contributionscores-username": "Icinikasowin"
+}
diff --git a/ContributionScores/i18n/avk.json b/ContributionScores/i18n/avk.json
new file mode 100644
index 00000000..454a2916
--- /dev/null
+++ b/ContributionScores/i18n/avk.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Sab"
+ ]
+ },
+ "contributionscores": "Weberajorist",
+ "contributionscores-top": "(Taneaf $1)",
+ "contributionscores-days": "Ironokaf $1 viel",
+ "contributionscores-allrevisions": "Betakseem",
+ "contributionscores-score": "Jorist",
+ "contributionscores-pages": "Bu",
+ "contributionscores-changes": "Betaks",
+ "contributionscores-username": "Favesikyolt"
+}
diff --git a/ContributionScores/i18n/az.json b/ContributionScores/i18n/az.json
new file mode 100644
index 00000000..fb4b1ca1
--- /dev/null
+++ b/ContributionScores/i18n/az.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Cekli829"
+ ]
+ },
+ "contributionscores-pages": "Səhifələr",
+ "contributionscores-username": "İstifadəçi adı"
+}
diff --git a/ContributionScores/i18n/azb.json b/ContributionScores/i18n/azb.json
new file mode 100644
index 00000000..a2266758
--- /dev/null
+++ b/ContributionScores/i18n/azb.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Alp Er Tunqa",
+ "Mousa"
+ ]
+ },
+ "contributionscores": "چالیشماق امتیازلاری",
+ "contributionscores-desc": "ان یوخاری [[Special:ContributionScores|ایستیفاده‌چی چالیشماق حجمی]] اوچون دیتابیس‌دن سوروشار",
+ "contributionscores-info": "بو امتیاز اؤنجه‌لیکله دَییشدیریلمیش تک صحیفه‌لری ساییر و یوخاری دَییشدیرمک حجمینی ده نظرده آلیر.",
+ "contributionscores-top": "(یوخاری $1)",
+ "contributionscores-days": "سون {{PLURAL:$1|گون|$1 گون}}",
+ "contributionscores-allrevisions": "بوتون زامانلار",
+ "contributionscores-score": "امتیاز",
+ "contributionscores-pages": "صفحه‌لر",
+ "contributionscores-changes": "دَییشمه‌لر",
+ "contributionscores-username": "آد",
+ "contributionscores-invalidusername": "گئچرسیز ایستیفاده‌چی آدی",
+ "contributionscores-invalidmetric": "گئچرسیز مِتریک"
+}
diff --git a/ContributionScores/i18n/ba.json b/ContributionScores/i18n/ba.json
new file mode 100644
index 00000000..b0b184c6
--- /dev/null
+++ b/ContributionScores/i18n/ba.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "Assele",
+ "Haqmar",
+ "Sagan"
+ ]
+ },
+ "contributionscores": "Индергән өлөштәрҙе баһалау",
+ "contributionscores-desc": "Мәғлүмәттәр базаһынан [[Special:ContributionScores|иң ҙур өлөш индергән ҡатнашыусыларҙы]] билдәләй",
+ "contributionscores-info": "Баһа түбәндәге өлөштәрҙе ҡушыу аша иҫәпләнә:\n* 1 мәрәй — һәр айырым битте мөхәррирләү өсөн;\n* 2 * ( (дөйөм үҙгәртеүҙәр һаны) - (барыһы төрлө биттәр) ) айырмаһының тамыры.\nБаһаны иҫәпләгән ваҡытта, шулай итеп, дөйөм үҙгәртеүҙәр һанына ҡарағында үҙгәртеүҙәрҙең төрлөлөгө ҙурыраҡ йоғонто яһай.",
+ "contributionscores-top": "(Тәүге $1)",
+ "contributionscores-days": "{{PLURAL:$1|1=Һуңғы көн}}",
+ "contributionscores-allrevisions": "Бөтәһе",
+ "contributionscores-score": "Баһа",
+ "contributionscores-rank": "Ранг",
+ "contributionscores-pages": "Биттәр",
+ "contributionscores-changes": "Үҙгәртеүҙәр",
+ "contributionscores-username": "Ҡатнашыусы исеме",
+ "contributionscores-invalidusername": "Ҡатнашыусы исеме дөрөҫ түгел",
+ "contributionscores-invalidmetric": "Метрика дөрөҫ түгел"
+}
diff --git a/ContributionScores/i18n/be-tarask.json b/ContributionScores/i18n/be-tarask.json
new file mode 100644
index 00000000..16658034
--- /dev/null
+++ b/ContributionScores/i18n/be-tarask.json
@@ -0,0 +1,23 @@
+{
+ "@metadata": {
+ "authors": [
+ "EugeneZelenko",
+ "Jim-by",
+ "Red Winged Duck",
+ "Wizardist"
+ ]
+ },
+ "contributionscores": "Адзнака ўнёску",
+ "contributionscores-desc": "Вызначае з базы зьвестак [[Special:ContributionScores|удзельнікаў з найбольшай колькасьцю рэдагаваньняў]]",
+ "contributionscores-info": "Адзнака галоўным чынам вымярае ўнікальныя рэдагаваньні старонак з улікам памеру ўнёску.",
+ "contributionscores-top": "($1 {{PLURAL:$1|найлепшы|найлепшых|найлепшых}})",
+ "contributionscores-days": "{{PLURAL:$1|Апошні $1 дзень|Апошнія $1 дні|Апошнія $1 дзён}}",
+ "contributionscores-allrevisions": "За ўвесь час",
+ "contributionscores-score": "Адзнака",
+ "contributionscores-rank": "Ранг",
+ "contributionscores-pages": "Старонак",
+ "contributionscores-changes": "Зьменаў",
+ "contributionscores-username": "Імя ўдзельніка",
+ "contributionscores-invalidusername": "Няслушнае імя ўдзельніка",
+ "contributionscores-invalidmetric": "Няслушная мэтрыка"
+}
diff --git a/ContributionScores/i18n/bg.json b/ContributionScores/i18n/bg.json
new file mode 100644
index 00000000..554fa17c
--- /dev/null
+++ b/ContributionScores/i18n/bg.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "DCLXVI",
+ "StanProg"
+ ]
+ },
+ "contributionscores": "Потребителска класация",
+ "contributionscores-top": "(Най-добрите $1)",
+ "contributionscores-days": "{{PLURAL:$1|Последния ден|Последните $1 дни}}",
+ "contributionscores-allrevisions": "За всички времена",
+ "contributionscores-score": "Точки",
+ "contributionscores-pages": "Страници",
+ "contributionscores-changes": "Редакции",
+ "contributionscores-username": "Потребител",
+ "contributionscores-invalidusername": "Невалидно потребителско име"
+}
diff --git a/ContributionScores/i18n/bgn.json b/ContributionScores/i18n/bgn.json
new file mode 100644
index 00000000..b46db478
--- /dev/null
+++ b/ContributionScores/i18n/bgn.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ibrahim khashrowdi"
+ ]
+ },
+ "contributionscores-username": "کار زوروکین نام"
+}
diff --git a/ContributionScores/i18n/bn.json b/ContributionScores/i18n/bn.json
new file mode 100644
index 00000000..a4edf3d2
--- /dev/null
+++ b/ContributionScores/i18n/bn.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Aftab1995",
+ "Aftabuzzaman",
+ "Bellayet",
+ "Wikitanvir",
+ "আফতাবুজ্জামান"
+ ]
+ },
+ "contributionscores": "অনুদানের স্কোর",
+ "contributionscores-top": "(সর্বোচ্চ $1)",
+ "contributionscores-days": "গত {{PLURAL:$1|দিন|$1 দিন}}",
+ "contributionscores-allrevisions": "সব সময়",
+ "contributionscores-score": "স্কোর",
+ "contributionscores-pages": "পাতা",
+ "contributionscores-changes": "পরিবর্তন",
+ "contributionscores-username": "ব্যবহারকারী নাম",
+ "contributionscores-invalidusername": "অগ্রহণযোগ্য ব্যবহারকারী নাম"
+}
diff --git a/ContributionScores/i18n/br.json b/ContributionScores/i18n/br.json
new file mode 100644
index 00000000..6f574c3c
--- /dev/null
+++ b/ContributionScores/i18n/br.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "Fohanno",
+ "Fulup",
+ "Y-M D"
+ ]
+ },
+ "contributionscores": "Skor an degasadennoù",
+ "contributionscores-desc": "Furchal a ra er bank roadennoù evit kavout [[Special:ContributionScores|kementadoù brasañ a zegasadennoù an implijerien]]",
+ "contributionscores-info": "Da gentañ-penn e vuzul ar poenterezh an unpajennoù bet kemmet, en ur gemer e kont ar c'hementadoù kemmoù brasañ.",
+ "contributionscores-top": "(An $1 uhelañ)",
+ "contributionscores-days": "E-kerzh an {{PLURAL:$1|devezh|$1 devezh}} diwezhañ",
+ "contributionscores-allrevisions": "A-viskoazh",
+ "contributionscores-score": "Skor",
+ "contributionscores-rank": "Renk",
+ "contributionscores-pages": "Pajennoù",
+ "contributionscores-changes": "Kemmoù",
+ "contributionscores-username": "Anv implijer",
+ "contributionscores-invalidusername": "Anv implijer direizh",
+ "contributionscores-invalidmetric": "Muzul direizh"
+}
diff --git a/ContributionScores/i18n/bs.json b/ContributionScores/i18n/bs.json
new file mode 100644
index 00000000..b875318b
--- /dev/null
+++ b/ContributionScores/i18n/bs.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "CERminator",
+ "KWiki",
+ "Srdjan m"
+ ]
+ },
+ "contributionscores": "Rezultat doprinosa",
+ "contributionscores-desc": "Upit u wiki bazu podataka za najveći [[Special:ContributionScores|količinski korisnički doprinos]]",
+ "contributionscores-info": "Ovaj rezultat prvenstveno mjeri broj uređivanja pojedinačnih stranica, uzimajući u obzir velike količine uređivanja.",
+ "contributionscores-top": "(Najboljih $1)",
+ "contributionscores-days": "{{PLURAL:$1|Posljednji $1 dan|Posljednja $1 dana|Posljednjih $1 dana}}",
+ "contributionscores-allrevisions": "Svo vrijeme",
+ "contributionscores-score": "Rezultat",
+ "contributionscores-rank": "Rang",
+ "contributionscores-pages": "Stranice",
+ "contributionscores-changes": "Izmjene",
+ "contributionscores-username": "Korisničko ime",
+ "contributionscores-invalidusername": "Nevaljano korisničko ime",
+ "contributionscores-invalidmetric": "Nevaljana mjera"
+}
diff --git a/ContributionScores/i18n/ca.json b/ContributionScores/i18n/ca.json
new file mode 100644
index 00000000..c7eb9b16
--- /dev/null
+++ b/ContributionScores/i18n/ca.json
@@ -0,0 +1,23 @@
+{
+ "@metadata": {
+ "authors": [
+ "Jordi Roqué",
+ "SMP",
+ "Solde",
+ "Toniher"
+ ]
+ },
+ "contributionscores": "Punts de contribució",
+ "contributionscores-desc": "Valora les edicions en cerca dels [[Special:ContributionScores|usuaris amb més volum de contribucions]]",
+ "contributionscores-info": "La puntuació mesura el nombre de pàgines úniques editades, amb consideració de les edicions d'alt volum.",
+ "contributionscores-top": "($1 millors)",
+ "contributionscores-days": "{{PLURAL:$1|Últim dia|Últims $1 dies}}",
+ "contributionscores-allrevisions": "Des de sempre",
+ "contributionscores-score": "Puntuació",
+ "contributionscores-rank": "Classificació",
+ "contributionscores-pages": "Pàgines",
+ "contributionscores-changes": "Canvis",
+ "contributionscores-username": "Nom d'usuari",
+ "contributionscores-invalidusername": "Nom d'usuari no vàlid",
+ "contributionscores-invalidmetric": "Mètrica no vàlida"
+}
diff --git a/ContributionScores/i18n/ce.json b/ContributionScores/i18n/ce.json
new file mode 100644
index 00000000..5dfc1282
--- /dev/null
+++ b/ContributionScores/i18n/ce.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Sasan700",
+ "Умар"
+ ]
+ },
+ "contributionscores": "Къинхьегаман мах хадор",
+ "contributionscores-top": "(диканаш $1)",
+ "contributionscores-days": "ТӀаьххьарлерачу {{PLURAL:$1|дийнахь}}",
+ "contributionscores-allrevisions": "Массо нисдарш",
+ "contributionscores-score": "Мах хадор",
+ "contributionscores-pages": "АгӀонаш",
+ "contributionscores-changes": "Нисдарш",
+ "contributionscores-username": "Декъашхочун цӀе",
+ "contributionscores-invalidusername": "Нийса йоцу декъашхочун цӀе"
+}
diff --git a/ContributionScores/i18n/ckb.json b/ContributionScores/i18n/ckb.json
new file mode 100644
index 00000000..166e6251
--- /dev/null
+++ b/ContributionScores/i18n/ckb.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Calak"
+ ]
+ },
+ "contributionscores-pages": "پەڕەکان"
+}
diff --git a/ContributionScores/i18n/cs.json b/ContributionScores/i18n/cs.json
new file mode 100644
index 00000000..afadcd76
--- /dev/null
+++ b/ContributionScores/i18n/cs.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "Li-sung",
+ "Matěj Grabovský",
+ "Mormegil"
+ ]
+ },
+ "contributionscores": "Skóre příspěvků",
+ "contributionscores-desc": "Zjišťuje největší [[Special:ContributionScores|objem uživatelských příspěvků]] z databáze wiki",
+ "contributionscores-info": "Skóre hodnotí zejména editaci různých stránek s přihlédnutím k velkému množství editací.",
+ "contributionscores-top": "($1 nejvyšších)",
+ "contributionscores-days": "{{PLURAL:$1|Poslední den|Poslední $1 dny|Posledních $1 dnů}}",
+ "contributionscores-allrevisions": "Celá historie",
+ "contributionscores-score": "Skóre",
+ "contributionscores-rank": "Pořadí",
+ "contributionscores-pages": "Stránky",
+ "contributionscores-changes": "Změny",
+ "contributionscores-username": "Uživatelské jméno",
+ "contributionscores-invalidusername": "Neplatné uživatelské jméno",
+ "contributionscores-invalidmetric": "Neplatná metrika"
+}
diff --git a/ContributionScores/i18n/csb.json b/ContributionScores/i18n/csb.json
new file mode 100644
index 00000000..14750f6e
--- /dev/null
+++ b/ContributionScores/i18n/csb.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kirsan"
+ ]
+ },
+ "contributionscores-username": "Pòzwa brëkòwnika"
+}
diff --git a/ContributionScores/i18n/cu.json b/ContributionScores/i18n/cu.json
new file mode 100644
index 00000000..924ff0d9
--- /dev/null
+++ b/ContributionScores/i18n/cu.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "ОйЛ"
+ ]
+ },
+ "contributionscores-pages": "страницѧ",
+ "contributionscores-username": "польꙃєватєлꙗ имѧ"
+}
diff --git a/ContributionScores/i18n/cy.json b/ContributionScores/i18n/cy.json
new file mode 100644
index 00000000..226b722b
--- /dev/null
+++ b/ContributionScores/i18n/cy.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Robin Owain"
+ ]
+ },
+ "contributionscores-score": "Sgor",
+ "contributionscores-changes": "Newidiadau"
+}
diff --git a/ContributionScores/i18n/da.json b/ContributionScores/i18n/da.json
new file mode 100644
index 00000000..02f953c7
--- /dev/null
+++ b/ContributionScores/i18n/da.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "Byrial",
+ "Christian List",
+ "Kaare",
+ "Peter Alberti"
+ ]
+ },
+ "contributionscores": "Bidragspoint",
+ "contributionscores-desc": "Henter information fra databasen om de brugere som har [[Special:ContributionScores|flest bidrag]]",
+ "contributionscores-info": "Pointene måler primært unikke sideredigeringer, med hensyntagen til højt antal redigeringer.",
+ "contributionscores-top": "(Top $1)",
+ "contributionscores-days": "Sidste {{PLURAL:$1|dag|$1 dage}}",
+ "contributionscores-allrevisions": "Gennem tiden",
+ "contributionscores-score": "Point",
+ "contributionscores-pages": "Sider",
+ "contributionscores-changes": "Ændringer",
+ "contributionscores-username": "Brugernavn",
+ "contributionscores-invalidusername": "Ugyldigt brugernavn",
+ "contributionscores-invalidmetric": "Ugyldig målemetode"
+}
diff --git a/ContributionScores/i18n/de.json b/ContributionScores/i18n/de.json
new file mode 100644
index 00000000..bf373cd0
--- /dev/null
+++ b/ContributionScores/i18n/de.json
@@ -0,0 +1,23 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kghbln",
+ "Merlissimo",
+ "Metalhead64",
+ "Raimond Spekking"
+ ]
+ },
+ "contributionscores": "Statistik zu Benutzern",
+ "contributionscores-desc": "Erweitert das Wiki um eine [[Special:ContributionScores|Spezialseite]] zum Ermitteln der Benutzer mit den meisten Beiträgen",
+ "contributionscores-info": "In die Bewertung fließen hauptsächlich einmalig bearbeitete Seiten unter Berücksichtigung einer hohen Bearbeitungszahl ein.",
+ "contributionscores-top": "(Top $1)",
+ "contributionscores-days": "{{PLURAL:$1|Letzter Tag|Letzte $1 Tage}}",
+ "contributionscores-allrevisions": "Gesamter Zeitraum",
+ "contributionscores-score": "Bewertung",
+ "contributionscores-rank": "Rang",
+ "contributionscores-pages": "Seiten",
+ "contributionscores-changes": "Änderungen",
+ "contributionscores-username": "Benutzername",
+ "contributionscores-invalidusername": "Ungültiger Benutzername",
+ "contributionscores-invalidmetric": "Ungültige Metrik"
+}
diff --git a/ContributionScores/i18n/diq.json b/ContributionScores/i18n/diq.json
new file mode 100644
index 00000000..9e23faaf
--- /dev/null
+++ b/ContributionScores/i18n/diq.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "Erdemaslancan",
+ "Marmase",
+ "Mirzali"
+ ]
+ },
+ "contributionscores": "Skorê iştıraqan",
+ "contributionscores-desc": "Qandê tewr berz malumat de wiki de [[Special:ContributionScores|dekerdenanê karberan]] persêno",
+ "contributionscores-info": "Ebe pawıtışê hecmê tedqiqê berzi ra, puwan raveri pelanê bêemsalanê vurniyayeyan senceno.",
+ "contributionscores-top": "(Tewr Gırde $1)",
+ "contributionscores-days": "{{PLURAL:$1|Roca peyêne|$1 Rocê peyêni}}",
+ "contributionscores-allrevisions": "Çaxan de hemi",
+ "contributionscores-score": "Puwan",
+ "contributionscores-rank": "Rêze",
+ "contributionscores-pages": "Peli",
+ "contributionscores-changes": "Vurnayışi",
+ "contributionscores-username": "Nameyê karberi",
+ "contributionscores-invalidusername": "Nameyê karberiyo nêvêrde",
+ "contributionscores-invalidmetric": "Metriko nêvêrde"
+}
diff --git a/ContributionScores/i18n/dsb.json b/ContributionScores/i18n/dsb.json
new file mode 100644
index 00000000..fc2f6104
--- /dev/null
+++ b/ContributionScores/i18n/dsb.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Michawiki"
+ ]
+ },
+ "contributionscores": "Pśinoski pógódnośiś",
+ "contributionscores-desc": "Napšašujo se wikijoweje datoweje banki za nejwušeju [[Special:ContributionScores|licbu wužywarskich pśinoskow]]",
+ "contributionscores-info": "Licba dypkow měri w prědnem rěźe raz wobźěłane boki na zakłaźe wusokeje licby změnow.",
+ "contributionscores-top": "({{PLURAL:$1|Nejlěpšy $1|Nejlěpšej $1|Nejlěpše $1|Nejlěpšych $1}})",
+ "contributionscores-days": "{{PLURAL:$1|Slědny $1 źeń|Slědnej $1 dnja|Slědne $1 dny|Slědnych $1 dnjow}}",
+ "contributionscores-allrevisions": "Ceły cas",
+ "contributionscores-score": "Pógódnośenje",
+ "contributionscores-rank": "Pozicija",
+ "contributionscores-pages": "Boki",
+ "contributionscores-changes": "Změny",
+ "contributionscores-username": "Wužywarske mě",
+ "contributionscores-invalidusername": "Njepłaśiwe wužywarske mě",
+ "contributionscores-invalidmetric": "Njepłaśiwa metrika"
+}
diff --git a/ContributionScores/i18n/el.json b/ContributionScores/i18n/el.json
new file mode 100644
index 00000000..97021b30
--- /dev/null
+++ b/ContributionScores/i18n/el.json
@@ -0,0 +1,24 @@
+{
+ "@metadata": {
+ "authors": [
+ "Consta",
+ "Crazymadlover",
+ "Omnipaedista",
+ "Protnet",
+ "ZaDiak"
+ ]
+ },
+ "contributionscores": "Βαθμολογίες συνεισφοράς",
+ "contributionscores-desc": "Εξετάζει την βάση δεδομένων του wiki για τον υψηλότερο [[Special:ContributionScores|όγκο συνεισφορών χρήστη]]",
+ "contributionscores-info": "Η βαθμολογία μετρά πρωτίστως μοναδικές σελίδες που έχουν τύχει επεξεργασίας, λαμβάνοντας υπ' όψιν και τον υψηλό όγκο επεξεργασίας.",
+ "contributionscores-top": "(Πρώτοι $1)",
+ "contributionscores-days": "{{PLURAL:$1|Τελευταία ημέρα|Τελευταίες $1 ημέρες}}",
+ "contributionscores-allrevisions": "Όλων των εποχών",
+ "contributionscores-score": "Βαθμολογία",
+ "contributionscores-rank": "Κατάταξη",
+ "contributionscores-pages": "Σελίδες",
+ "contributionscores-changes": "Αλλαγές",
+ "contributionscores-username": "Όνομα χρήστη",
+ "contributionscores-invalidusername": "Μη έγκυρο όνομα χρήστη",
+ "contributionscores-invalidmetric": "Μη έγκυρη μετρική"
+}
diff --git a/ContributionScores/i18n/en.json b/ContributionScores/i18n/en.json
new file mode 100644
index 00000000..6e58f9b1
--- /dev/null
+++ b/ContributionScores/i18n/en.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": []
+ },
+ "contributionscores": "Contribution scores",
+ "contributionscores-desc": "Polls the wiki database for highest [[Special:ContributionScores|user contribution volume]]",
+ "contributionscores-info": "The score primarily measures unique pages edited, with consideration for high edit volume.",
+ "contributionscores-top": "(Top $1)",
+ "contributionscores-days": "Last {{PLURAL:$1|day|$1 days}}",
+ "contributionscores-allrevisions": "All time",
+ "contributionscores-score": "Score",
+ "contributionscores-rank": "Rank",
+ "contributionscores-pages": "Pages",
+ "contributionscores-changes": "Changes",
+ "contributionscores-username": "Username",
+ "contributionscores-invalidusername": "Invalid username",
+ "contributionscores-invalidmetric": "Invalid metric"
+} \ No newline at end of file
diff --git a/ContributionScores/i18n/eo.json b/ContributionScores/i18n/eo.json
new file mode 100644
index 00000000..45d3b03b
--- /dev/null
+++ b/ContributionScores/i18n/eo.json
@@ -0,0 +1,23 @@
+{
+ "@metadata": {
+ "authors": [
+ "Michawiki",
+ "Mirin",
+ "Robin van der Vliet",
+ "Yekrats"
+ ]
+ },
+ "contributionscores": "Poentaro de Kontribuoj",
+ "contributionscores-desc": "Informmendas la vikian datumbazon por la plej [[Special:ContributionScores|oftaj kontribuantoj]]",
+ "contributionscores-info": "La poentaroj precipe mezuras la nombrojn de unikaj redaktitaj paĝoj, kun konsiderado pri grandega kvanto de redaktoj.",
+ "contributionscores-top": "(Plej alta $1)",
+ "contributionscores-days": "{{PLURAL:$1|Lasta tago|Lastaj $1 tagoj}}",
+ "contributionscores-allrevisions": "Ĉiame",
+ "contributionscores-score": "Poentaro",
+ "contributionscores-rank": "Rango",
+ "contributionscores-pages": "Paĝoj",
+ "contributionscores-changes": "Ŝanĝoj",
+ "contributionscores-username": "Uzantnomo",
+ "contributionscores-invalidusername": "Nevalida uzantnomo",
+ "contributionscores-invalidmetric": "Nevalida parametro"
+}
diff --git a/ContributionScores/i18n/es.json b/ContributionScores/i18n/es.json
new file mode 100644
index 00000000..70d23b1d
--- /dev/null
+++ b/ContributionScores/i18n/es.json
@@ -0,0 +1,26 @@
+{
+ "@metadata": {
+ "authors": [
+ "Armando-Martin",
+ "Crazymadlover",
+ "Fitoschido",
+ "Ihojose",
+ "Imre",
+ "Macofe",
+ "Sanbec"
+ ]
+ },
+ "contributionscores": "Puntuaciones de contribuciones",
+ "contributionscores-desc": "Sondea la base de datos del wiki para el más alto [[Special:ContributionScores|volumen de contribuciones del usuario]]",
+ "contributionscores-info": "Básicamente, la puntuación mide las páginas únicas editadas, teniendo en cuenta el alto volumen de ediciones.",
+ "contributionscores-top": "($1 más activos)",
+ "contributionscores-days": "{{PLURAL:$1|Último día|Últimos $1 días}}",
+ "contributionscores-allrevisions": "Todo el tiempo",
+ "contributionscores-score": "Valoración",
+ "contributionscores-rank": "Posición",
+ "contributionscores-pages": "Páginas",
+ "contributionscores-changes": "Cambios",
+ "contributionscores-username": "Nombre de usuario",
+ "contributionscores-invalidusername": "Nombre de usuario no válido",
+ "contributionscores-invalidmetric": "Medida inválida"
+}
diff --git a/ContributionScores/i18n/et.json b/ContributionScores/i18n/et.json
new file mode 100644
index 00000000..9c0a17ce
--- /dev/null
+++ b/ContributionScores/i18n/et.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Avjoska",
+ "Pikne"
+ ]
+ },
+ "contributionscores": "Kaastööpunktid",
+ "contributionscores-desc": "Teeb viki andmekogust järelepärimise [[Special:ContributionScores|kasutajate kaastööde hulga]] kohta.",
+ "contributionscores-info": "Need punktid lähtuvad eeskätt erinevate redigeeritud lehekülgede arvust ja võtavad arvesse ka redigeerimiste koguarvu.",
+ "contributionscores-top": "($1 paremat)",
+ "contributionscores-days": "{{PLURAL:$1|Viimane päev|Viimased $1 päeva}}",
+ "contributionscores-allrevisions": "Kõik aeg",
+ "contributionscores-score": "Punkte",
+ "contributionscores-rank": "Koht",
+ "contributionscores-pages": "Lehekülgi",
+ "contributionscores-changes": "Muudatusi",
+ "contributionscores-username": "Kasutajanimi",
+ "contributionscores-invalidusername": "Vigane kasutajanimi"
+}
diff --git a/ContributionScores/i18n/eu.json b/ContributionScores/i18n/eu.json
new file mode 100644
index 00000000..fda4535d
--- /dev/null
+++ b/ContributionScores/i18n/eu.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kobazulo"
+ ]
+ },
+ "contributionscores-days": "Azken {{PLURAL:$1|eguna|$1 egunak}}",
+ "contributionscores-pages": "Orrialdeak",
+ "contributionscores-changes": "Aldaketak",
+ "contributionscores-username": "Erabiltzaile izena"
+}
diff --git a/ContributionScores/i18n/ext.json b/ContributionScores/i18n/ext.json
new file mode 100644
index 00000000..a86be313
--- /dev/null
+++ b/ContributionScores/i18n/ext.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Better"
+ ]
+ },
+ "contributionscores-days": "Úrtimus $1 dias"
+}
diff --git a/ContributionScores/i18n/fa.json b/ContributionScores/i18n/fa.json
new file mode 100644
index 00000000..8ea1aedc
--- /dev/null
+++ b/ContributionScores/i18n/fa.json
@@ -0,0 +1,26 @@
+{
+ "@metadata": {
+ "authors": [
+ "Alirezaaa",
+ "Ebraminio",
+ "Huji",
+ "Mjbmr",
+ "Reza1615",
+ "Tofighi",
+ "ZxxZxxZ"
+ ]
+ },
+ "contributionscores": "امتیاز مشارکت",
+ "contributionscores-desc": "سرشماری پایگاه داده ویکی برای بالاترین [[Special:ContributionScores|حجم مشارکت کاربر]]",
+ "contributionscores-info": "امتباز ابتدا ویرایش‌های یکتا را با در نظر گرفتن ویرایش ججم بالا اندازه می‌گیرد.",
+ "contributionscores-top": "($1 برتر)",
+ "contributionscores-days": "آخرین {{PLURAL:$1|روز|$1 روز}}",
+ "contributionscores-allrevisions": "تمام وقت",
+ "contributionscores-score": "امتیاز",
+ "contributionscores-rank": "رتبه",
+ "contributionscores-pages": "صفحات",
+ "contributionscores-changes": "تغییرات",
+ "contributionscores-username": "نام کاربری",
+ "contributionscores-invalidusername": "نام کاربری نامعتبر",
+ "contributionscores-invalidmetric": "متریک نامعتبر"
+}
diff --git a/ContributionScores/i18n/fi.json b/ContributionScores/i18n/fi.json
new file mode 100644
index 00000000..98c568e9
--- /dev/null
+++ b/ContributionScores/i18n/fi.json
@@ -0,0 +1,24 @@
+{
+ "@metadata": {
+ "authors": [
+ "Crt",
+ "Nike",
+ "Pxos",
+ "Pyscowicz",
+ "Str4nd",
+ "Stryn"
+ ]
+ },
+ "contributionscores": "Muokkauspisteet",
+ "contributionscores-info": "Pistemäärä kuvaa ensisijaisesti muokattujen sivujen lukumäärää, mutta ottaa huomioon myös suuren muokkausmäärän yleisesti.",
+ "contributionscores-top": "(top $1)",
+ "contributionscores-days": "{{PLURAL:$1|Viime päivä|Viimeiset $1 päivää}}",
+ "contributionscores-allrevisions": "Koko ajalta",
+ "contributionscores-score": "Pisteet",
+ "contributionscores-rank": "Sija",
+ "contributionscores-pages": "Sivuja",
+ "contributionscores-changes": "Muutoksia",
+ "contributionscores-username": "Käyttäjätunnus",
+ "contributionscores-invalidusername": "Virheellinen käyttäjätunnus",
+ "contributionscores-invalidmetric": "Virheellinen muuttuja"
+}
diff --git a/ContributionScores/i18n/fit.json b/ContributionScores/i18n/fit.json
new file mode 100644
index 00000000..d564a6c1
--- /dev/null
+++ b/ContributionScores/i18n/fit.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Pyscowicz"
+ ]
+ },
+ "contributionscores": "Mookkauspisteet"
+}
diff --git a/ContributionScores/i18n/fr.json b/ContributionScores/i18n/fr.json
new file mode 100644
index 00000000..1c2c7093
--- /dev/null
+++ b/ContributionScores/i18n/fr.json
@@ -0,0 +1,26 @@
+{
+ "@metadata": {
+ "authors": [
+ "Gomoko",
+ "Grondin",
+ "IAlex",
+ "Peter17",
+ "Sherbrooke",
+ "Urhixidur",
+ "Verdy p"
+ ]
+ },
+ "contributionscores": "Pointage des contributions",
+ "contributionscores-desc": "Scrute la base de données wiki pour les plus importants [[Special:ContributionScores|volumes de contribution des utilisateurs]]",
+ "contributionscores-info": "Le pointage mesure en priorité les pages uniques modifiées, en prenant en compte les gros volumes de modification.",
+ "contributionscores-top": "(Les $1 plus élevés)",
+ "contributionscores-days": "Dans {{PLURAL:$1|le dernier jour|les derniers $1 jours}}",
+ "contributionscores-allrevisions": "Tout le temps",
+ "contributionscores-score": "Pointage",
+ "contributionscores-rank": "Rang",
+ "contributionscores-pages": "Pages",
+ "contributionscores-changes": "Changements",
+ "contributionscores-username": "Nom d’utilisateur",
+ "contributionscores-invalidusername": "Nom d’utilisateur invalide",
+ "contributionscores-invalidmetric": "Métrique incorrecte"
+}
diff --git a/ContributionScores/i18n/frp.json b/ContributionScores/i18n/frp.json
new file mode 100644
index 00000000..560d674d
--- /dev/null
+++ b/ContributionScores/i18n/frp.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "ChrisPtDe"
+ ]
+ },
+ "contributionscores": "Mârques de les contribucions",
+ "contributionscores-top": "(Les $1 ples hôtes)",
+ "contributionscores-days": "Dens {{PLURAL:$1|lo jorn passâ|los $1 jorns passâs}}",
+ "contributionscores-allrevisions": "Tot lo temps",
+ "contributionscores-score": "Mârca",
+ "contributionscores-pages": "Pâges",
+ "contributionscores-changes": "Changements",
+ "contributionscores-username": "Nom d’utilisator",
+ "contributionscores-invalidusername": "Nom d’usanciér envalido",
+ "contributionscores-invalidmetric": "Mètrica fôssa"
+}
diff --git a/ContributionScores/i18n/fy.json b/ContributionScores/i18n/fy.json
new file mode 100644
index 00000000..12c045af
--- /dev/null
+++ b/ContributionScores/i18n/fy.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "PiefPafPier",
+ "Robin van der Vliet",
+ "Robin0van0der0vliet",
+ "Snakesteuben"
+ ]
+ },
+ "contributionscores-username": "Meidochnamme"
+}
diff --git a/ContributionScores/i18n/ga.json b/ContributionScores/i18n/ga.json
new file mode 100644
index 00000000..0a393dce
--- /dev/null
+++ b/ContributionScores/i18n/ga.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "පසිඳු කාවින්ද"
+ ]
+ },
+ "contributionscores-pages": "Leathanaigh",
+ "contributionscores-username": "Ainm úsáideora"
+}
diff --git a/ContributionScores/i18n/gl.json b/ContributionScores/i18n/gl.json
new file mode 100644
index 00000000..fb6b4ae4
--- /dev/null
+++ b/ContributionScores/i18n/gl.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "Alma",
+ "Toliño",
+ "Xosé"
+ ]
+ },
+ "contributionscores": "Puntuación das contribucións",
+ "contributionscores-desc": "Escruta a base de datos do wiki para ver os maiores [[Special:ContributionScores|volumes de contribucións dos usuarios]]",
+ "contributionscores-info": "Basicamente, a puntuación mide as páxinas únicas editadas, tendo en conta o alto volume de edicións.",
+ "contributionscores-top": "(os $1 que máis)",
+ "contributionscores-days": "{{PLURAL:$1|O último día|Os últimos $1 días}}",
+ "contributionscores-allrevisions": "Desde sempre",
+ "contributionscores-score": "Puntuación",
+ "contributionscores-rank": "Clasificación",
+ "contributionscores-pages": "Páxinas",
+ "contributionscores-changes": "Cambios",
+ "contributionscores-username": "Nome de usuario",
+ "contributionscores-invalidusername": "Nome de usuario non válido",
+ "contributionscores-invalidmetric": "Métrica inválida"
+}
diff --git a/ContributionScores/i18n/grc.json b/ContributionScores/i18n/grc.json
new file mode 100644
index 00000000..ecf53b48
--- /dev/null
+++ b/ContributionScores/i18n/grc.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Crazymadlover",
+ "Omnipaedista"
+ ]
+ },
+ "contributionscores": "Βαθμολογία ἐράνων",
+ "contributionscores-top": "(Κορυφαῖοι $1)",
+ "contributionscores-days": "{{PLURAL:$1|Ὑστάτη ἡμέρα|Ὕσταται $1 ἡμέραι}}",
+ "contributionscores-allrevisions": "Ἅπασαι αἱ ἀναθεωρήσεις",
+ "contributionscores-score": "Βαθμοί",
+ "contributionscores-pages": "Δέλτοι",
+ "contributionscores-changes": "Μεταβολαί",
+ "contributionscores-username": "Ὄνομα χρωμένου",
+ "contributionscores-invalidusername": "Ἄκυρον ὄνομα χρωμένου",
+ "contributionscores-invalidmetric": "Ἄκυρος μετρική"
+}
diff --git a/ContributionScores/i18n/gsw.json b/ContributionScores/i18n/gsw.json
new file mode 100644
index 00000000..09aae6db
--- /dev/null
+++ b/ContributionScores/i18n/gsw.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Als-Chlämens",
+ "Als-Holder"
+ ]
+ },
+ "contributionscores": "Aazahl vu dr Benutzerbyyträg",
+ "contributionscores-desc": "Abfrog vu dr Wiki-Datebank no dr Aazahl vu dr [[Special:ContributionScores|Benutzerbyyträg]]",
+ "contributionscores-info": "Bewärtigsschema:\n*1 Punkt fir jedi bearbeiteti Syte\n*Quadratwurzle vu allene (Bearbeitige) - (Summe vu dr bearbeitete Syte) * 2\nBewärtigen uf däre Grundlag gän dr Viifalt vu dr Byyträg e hecher Gwicht wie dr Aazahl vu dr Änderige.",
+ "contributionscores-top": "(Top $1)",
+ "contributionscores-days": "{{PLURAL:$1|Letschte Tag|Letschti $1 Täg}}",
+ "contributionscores-allrevisions": "Ganzer Zitruum",
+ "contributionscores-score": "Wärt",
+ "contributionscores-pages": "Syte",
+ "contributionscores-changes": "Änderige",
+ "contributionscores-username": "Benutzername",
+ "contributionscores-invalidusername": "Nit giltige Benutzername",
+ "contributionscores-invalidmetric": "Nit giltigi Metrik"
+}
diff --git a/ContributionScores/i18n/gu.json b/ContributionScores/i18n/gu.json
new file mode 100644
index 00000000..3b4d7fa9
--- /dev/null
+++ b/ContributionScores/i18n/gu.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Dineshjk"
+ ]
+ },
+ "contributionscores-pages": "પાનાં",
+ "contributionscores-username": "સભ્ય નામ"
+}
diff --git a/ContributionScores/i18n/gv.json b/ContributionScores/i18n/gv.json
new file mode 100644
index 00000000..abb386b9
--- /dev/null
+++ b/ContributionScores/i18n/gv.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "MacTire02"
+ ]
+ },
+ "contributionscores-score": "Skensh",
+ "contributionscores-pages": "Duillagyn",
+ "contributionscores-username": "Ennym yn ymmydeyr"
+}
diff --git a/ContributionScores/i18n/hak.json b/ContributionScores/i18n/hak.json
new file mode 100644
index 00000000..4799e949
--- /dev/null
+++ b/ContributionScores/i18n/hak.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Hakka"
+ ]
+ },
+ "contributionscores-username": "Yung-fu-miàng"
+}
diff --git a/ContributionScores/i18n/he.json b/ContributionScores/i18n/he.json
new file mode 100644
index 00000000..8958c244
--- /dev/null
+++ b/ContributionScores/i18n/he.json
@@ -0,0 +1,23 @@
+{
+ "@metadata": {
+ "authors": [
+ "Agbad",
+ "Amire80",
+ "Rotemliss",
+ "YaronSh"
+ ]
+ },
+ "contributionscores": "דירוג תורמים",
+ "contributionscores-desc": "בדיקת מסד הנתונים של הוויקי למציאת משתמשים עם [[Special:ContributionScores|נפח התרומה]] הגבוה ביותר",
+ "contributionscores-info": "החישוב מתבסס בעיקר על מספר הדפים הייחודיים שנערכו ועל קצב העריכות.",
+ "contributionscores-top": "($1 הגבוהים ביותר)",
+ "contributionscores-days": "{{PLURAL:$1|ביום האחרון|ביומיים האחרונים|ב־$1 הימים האחרונים}}",
+ "contributionscores-allrevisions": "מאז ומתמיד",
+ "contributionscores-score": "ניקוד",
+ "contributionscores-rank": "דירוג",
+ "contributionscores-pages": "דפים",
+ "contributionscores-changes": "שינויים",
+ "contributionscores-username": "שם משתמש",
+ "contributionscores-invalidusername": "שם משתמש בלתי‏־תקין",
+ "contributionscores-invalidmetric": "מדידה בלתי־תקינה"
+}
diff --git a/ContributionScores/i18n/hi.json b/ContributionScores/i18n/hi.json
new file mode 100644
index 00000000..2920bb59
--- /dev/null
+++ b/ContributionScores/i18n/hi.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ansumang",
+ "Kaustubh",
+ "Sfic",
+ "Siddhartha Ghai"
+ ]
+ },
+ "contributionscores": "योगदान संख्या",
+ "contributionscores-desc": "[[Special:ContributionScores|सदस्य योगदान संख्या]]के अनुसार विकि डाटाबेस दर्शाता हैं",
+ "contributionscores-top": "(पहले $1)",
+ "contributionscores-days": "आखिरी {{PLURAL:$1|$1 दिन}}",
+ "contributionscores-allrevisions": "हर समय",
+ "contributionscores-score": "गुण",
+ "contributionscores-pages": "पृष्ठ",
+ "contributionscores-changes": "बदलाव",
+ "contributionscores-username": "सदस्यनाम",
+ "contributionscores-invalidusername": "अमान्य सदस्यनाम"
+}
diff --git a/ContributionScores/i18n/hil.json b/ContributionScores/i18n/hil.json
new file mode 100644
index 00000000..d00c3e47
--- /dev/null
+++ b/ContributionScores/i18n/hil.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Jose77"
+ ]
+ },
+ "contributionscores-username": "Ngalan sang Manog-gamit"
+}
diff --git a/ContributionScores/i18n/hr.json b/ContributionScores/i18n/hr.json
new file mode 100644
index 00000000..28104295
--- /dev/null
+++ b/ContributionScores/i18n/hr.json
@@ -0,0 +1,23 @@
+{
+ "@metadata": {
+ "authors": [
+ "Dalibor Bosits",
+ "Ex13",
+ "MaGa",
+ "SpeedyGonsales"
+ ]
+ },
+ "contributionscores": "Najbolji suradnici",
+ "contributionscores-desc": "Šalje upit bazi podataka za najveći [[Special:ContributionScores|broj suradničkih doprinosa]]",
+ "contributionscores-info": "U prvom planu rezultat mjeri jedinstvene izmijenjene stranice, uzimajući u obzir veliku količinu uređivanja.",
+ "contributionscores-top": "(najboljih $1)",
+ "contributionscores-days": "{{PLURAL:$1|Zadnji dan|Zadnjih $1 dana}}",
+ "contributionscores-allrevisions": "Sve vrijeme",
+ "contributionscores-score": "Rezultat",
+ "contributionscores-rank": "Mjesto",
+ "contributionscores-pages": "Stranica",
+ "contributionscores-changes": "Uređivanja",
+ "contributionscores-username": "Suradničko ime",
+ "contributionscores-invalidusername": "Nevaljano suradničko ime",
+ "contributionscores-invalidmetric": "Nevaljana metrika"
+}
diff --git a/ContributionScores/i18n/hsb.json b/ContributionScores/i18n/hsb.json
new file mode 100644
index 00000000..da1898b1
--- /dev/null
+++ b/ContributionScores/i18n/hsb.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Michawiki"
+ ]
+ },
+ "contributionscores": "Wuhódnoćenje přinoškow",
+ "contributionscores-desc": "Wuslědźi najwyši [[Special:ContributionScores|wobjim wužiwarskich přinoškow]] w datowej bance wikiprojekta",
+ "contributionscores-info": "Ličba dypkow měri w prěnim rjedźe jónkróć wobdźěłane strony na zakładźe wysokeje ličby změnow.",
+ "contributionscores-top": "(Najlěpšich $1)",
+ "contributionscores-days": "{{PLURAL:$1|Posledni dźeń|Poslednjej $1 dnjej|Poslednje $1 dny|Poslednich $1 dnjow}}",
+ "contributionscores-allrevisions": "Cyły čas",
+ "contributionscores-score": "Hódnoćenje",
+ "contributionscores-rank": "Pozicija",
+ "contributionscores-pages": "Strony",
+ "contributionscores-changes": "Změny",
+ "contributionscores-username": "Wužiwarske mjeno",
+ "contributionscores-invalidusername": "Njepłaćiwe wužiwarske mjeno",
+ "contributionscores-invalidmetric": "Njepłaćiwa metrika"
+}
diff --git a/ContributionScores/i18n/ht.json b/ContributionScores/i18n/ht.json
new file mode 100644
index 00000000..e2fe2f8a
--- /dev/null
+++ b/ContributionScores/i18n/ht.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Boukman",
+ "Jvm"
+ ]
+ },
+ "contributionscores": "Nòt pou kontribisyon yo",
+ "contributionscores-desc": "Sonde bazdone wiki a pou pi gwo [[Special:ContributionScores|kantite kontribisyon pa itilizatè]]",
+ "contributionscores-info": "Nòt yo kalkile konsa:\n*Yon (1) pwen pou chak paj inik ki te modifye\n*Rasin Kare de (kantite modifikasyon total ki te fè) - (Total Paj Inik) * 2\nSe konsa, nòt la bay plis pwa pou divèsite modifikasyon pase kantite modifikasyon yo.\nSa vle di nòt sa la pou mezire paj inik ki te modifye an premye, avèk yon konsiderasyon pou gwo volim modifikasyon – ki konsidere kòm ap bay yon paj ki gen pi bon kalite.",
+ "contributionscores-top": "(Meyè $1 yo)",
+ "contributionscores-days": "Denyè {{PLURAL:$1|jou|$1 jou yo}}",
+ "contributionscores-allrevisions": "Tout revizion yo",
+ "contributionscores-score": "Nòt",
+ "contributionscores-pages": "Paj",
+ "contributionscores-changes": "Chanjman",
+ "contributionscores-username": "Non itilizatè",
+ "contributionscores-invalidusername": "Non itilizatè a pa bon",
+ "contributionscores-invalidmetric": "Metrik envalid"
+}
diff --git a/ContributionScores/i18n/hu.json b/ContributionScores/i18n/hu.json
new file mode 100644
index 00000000..40368e07
--- /dev/null
+++ b/ContributionScores/i18n/hu.json
@@ -0,0 +1,24 @@
+{
+ "@metadata": {
+ "authors": [
+ "Dani",
+ "Dj",
+ "Glanthor Reviol",
+ "Shirayuki",
+ "Tacsipacsi"
+ ]
+ },
+ "contributionscores": "Szerkesztési pontszám",
+ "contributionscores-desc": "Megjeleníti a [[Special:ContributionScores|szerkesztő közreműködéseinek súlyát]] a wiki adatbázisa alapján",
+ "contributionscores-info": "A pontszámok alapvetően az egyedi szerkesztett lapok számát mutatja, figyelembe véve a nagy szerkesztési számokat.",
+ "contributionscores-top": "(legjobb $1)",
+ "contributionscores-days": "Utolsó {{PLURAL:$1|nap|$1 nap}}",
+ "contributionscores-allrevisions": "Összes szerkesztés",
+ "contributionscores-score": "Pontszám",
+ "contributionscores-rank": "Helyezés",
+ "contributionscores-pages": "Oldalak",
+ "contributionscores-changes": "Változtatások",
+ "contributionscores-username": "Felhasználónév",
+ "contributionscores-invalidusername": "Érvénytelen szerkesztői név",
+ "contributionscores-invalidmetric": "Érvénytelen mértékrendszer"
+}
diff --git a/ContributionScores/i18n/ia.json b/ContributionScores/i18n/ia.json
new file mode 100644
index 00000000..c47f9581
--- /dev/null
+++ b/ContributionScores/i18n/ia.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "McDutchie"
+ ]
+ },
+ "contributionscores": "Punctage de contributiones",
+ "contributionscores-desc": "Consulta le base de datos wiki pro le [[Special:ContributionScores|usatores contribuente le plus]]",
+ "contributionscores-info": "Iste punctage mesura primarimente le paginas unic modificate, con consideration pro un alte volumine de modificationes.",
+ "contributionscores-top": "(Le prime $1)",
+ "contributionscores-days": "Ultime $1 {{PLURAL:$1|die|dies}}",
+ "contributionscores-allrevisions": "Omne tempore",
+ "contributionscores-score": "Punctage",
+ "contributionscores-rank": "Rango",
+ "contributionscores-pages": "Paginas",
+ "contributionscores-changes": "Modificationes",
+ "contributionscores-username": "Nomine de usator",
+ "contributionscores-invalidusername": "Nomine de usator invalide",
+ "contributionscores-invalidmetric": "Metrica invalide"
+}
diff --git a/ContributionScores/i18n/id.json b/ContributionScores/i18n/id.json
new file mode 100644
index 00000000..24974ac0
--- /dev/null
+++ b/ContributionScores/i18n/id.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "IvanLanin",
+ "Rex",
+ "William Surya Permana"
+ ]
+ },
+ "contributionscores": "Nilai kontribusi",
+ "contributionscores-desc": "Menghitung [[Special:ContributionScores|volume kontribusi pengguna]] terbanyak di basis data wiki",
+ "contributionscores-info": "Nilai ini secara garis besar mengukur halaman unik yang disunting, dengan pertimbangan volume suntingan yang tinggi.",
+ "contributionscores-top": "($1 teratas)",
+ "contributionscores-days": "{{PLURAL:$1|Hari|$1 hari}} terakhir",
+ "contributionscores-allrevisions": "Sepanjang masa",
+ "contributionscores-score": "Nilai",
+ "contributionscores-rank": "Peringkat",
+ "contributionscores-pages": "Halaman",
+ "contributionscores-changes": "Perubahan",
+ "contributionscores-username": "Nama pengguna",
+ "contributionscores-invalidusername": "Nama pengguna tidak sah",
+ "contributionscores-invalidmetric": "Metrik tidak sah"
+}
diff --git a/ContributionScores/i18n/ie.json b/ContributionScores/i18n/ie.json
new file mode 100644
index 00000000..bddb997f
--- /dev/null
+++ b/ContributionScores/i18n/ie.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Renan"
+ ]
+ },
+ "contributionscores": "Contes de contribution",
+ "contributionscores-desc": "Calcula li funde de data del wiki por max alt [[Special:ContributionScores|volúmine de contribution de usator]]",
+ "contributionscores-info": "Contes es calculat quam seque:\n*Un (1) punctu por chascun págine unic redactet\n*Fonte de quadrat de (total de redactiones fat) - (total unique pages) * 2\nContes calculat in ti diversitá de redaction in pesa maniere súper de volúmine de redaction.\nBasicmen, ti conte mesura primarimen págines unic redactet, che consideration por alt volúmine de redaction - suposit esser un págine de alt qualitá.",
+ "contributionscores-top": "(Prim $1)",
+ "contributionscores-days": "Ultim {{PLURAL:$1|die|$1 dies}}",
+ "contributionscores-allrevisions": "Omni témpor",
+ "contributionscores-score": "Conte",
+ "contributionscores-pages": "Págines",
+ "contributionscores-changes": "Changes",
+ "contributionscores-username": "Nómine de usator",
+ "contributionscores-invalidusername": "Nómine de usator ínvalid",
+ "contributionscores-invalidmetric": "Metric ínvalid"
+}
diff --git a/ContributionScores/i18n/ig.json b/ContributionScores/i18n/ig.json
new file mode 100644
index 00000000..1887abd0
--- /dev/null
+++ b/ContributionScores/i18n/ig.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ukabia"
+ ]
+ },
+ "contributionscores-username": "Ahàǹjìème"
+}
diff --git a/ContributionScores/i18n/ilo.json b/ContributionScores/i18n/ilo.json
new file mode 100644
index 00000000..f7c71f9c
--- /dev/null
+++ b/ContributionScores/i18n/ilo.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Saluyot"
+ ]
+ },
+ "contributionscores": "Dagiti Bilang ti Naaramidan"
+}
diff --git a/ContributionScores/i18n/io.json b/ContributionScores/i18n/io.json
new file mode 100644
index 00000000..9ec47911
--- /dev/null
+++ b/ContributionScores/i18n/io.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Joao Xavier"
+ ]
+ },
+ "contributionscores-days": "Lasta {{PLURAL:$1|dio|$1 dii}}",
+ "contributionscores-pages": "Pagini",
+ "contributionscores-username": "Uzeronomo"
+}
diff --git a/ContributionScores/i18n/is.json b/ContributionScores/i18n/is.json
new file mode 100644
index 00000000..30d6eee4
--- /dev/null
+++ b/ContributionScores/i18n/is.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "S.Örvarr.S",
+ "Snævar",
+ "Sveinn í Felli"
+ ]
+ },
+ "contributionscores": "Framleggjandastig",
+ "contributionscores-desc": "Kannar wiki-gagnagrunninn eftir mesta [[Special:ContributionScores|magni framlaga notenda]]",
+ "contributionscores-info": "Stigin eru aðalega reiknuð út frá breytingum á einkvæmum síðum, með tilliti til hás magns breytinga.",
+ "contributionscores-top": "(Efstu $1)",
+ "contributionscores-days": "{{PLURAL:$1|Síðasta $1 daginn|Síðustu $1 dagana}}",
+ "contributionscores-allrevisions": "Allan tímann",
+ "contributionscores-score": "Stigafjöldi",
+ "contributionscores-rank": "Sæti",
+ "contributionscores-pages": "Síður",
+ "contributionscores-changes": "Breytingar",
+ "contributionscores-username": "Notandanafn",
+ "contributionscores-invalidusername": "Ógilt notandanafn",
+ "contributionscores-invalidmetric": "Ógild mæling"
+}
diff --git a/ContributionScores/i18n/it.json b/ContributionScores/i18n/it.json
new file mode 100644
index 00000000..40b6a180
--- /dev/null
+++ b/ContributionScores/i18n/it.json
@@ -0,0 +1,25 @@
+{
+ "@metadata": {
+ "authors": [
+ "Beta16",
+ "BrokenArrow",
+ "Darth Kule",
+ "Gianfranco",
+ "Pietrodn",
+ "Rippitippi"
+ ]
+ },
+ "contributionscores": "Punteggi contributi",
+ "contributionscores-desc": "Interroga il database wiki per il più alto [[Special:ContributionScores|volume di contributi utente]]",
+ "contributionscores-info": "Questo punteggio misura in primo luogo il numero di pagine distinte modificate, valutando anche un alto volume di contributi.",
+ "contributionscores-top": "(Migliori $1)",
+ "contributionscores-days": "{{PLURAL:$1|Ultimo giorno|Ultimi $1 giorni}}",
+ "contributionscores-allrevisions": "Intero periodo",
+ "contributionscores-score": "Punteggio",
+ "contributionscores-rank": "Posizione",
+ "contributionscores-pages": "Pagine",
+ "contributionscores-changes": "Modifiche",
+ "contributionscores-username": "Nome utente",
+ "contributionscores-invalidusername": "Nome utente non valido",
+ "contributionscores-invalidmetric": "Metrica non valida"
+}
diff --git a/ContributionScores/i18n/ja.json b/ContributionScores/i18n/ja.json
new file mode 100644
index 00000000..73fb2348
--- /dev/null
+++ b/ContributionScores/i18n/ja.json
@@ -0,0 +1,24 @@
+{
+ "@metadata": {
+ "authors": [
+ "Aotake",
+ "Fryed-peach",
+ "JtFuruhata",
+ "Schu",
+ "Shirayuki"
+ ]
+ },
+ "contributionscores": "貢献得点",
+ "contributionscores-desc": "ウィキデータベースへの[[Special:ContributionScores|貢献度が高い利用者]]の統計",
+ "contributionscores-info": "得点では、編集したページ数を主に評価し、さらに編集回数の多さにも配慮します。",
+ "contributionscores-top": "(上位$1名)",
+ "contributionscores-days": "{{PLURAL:$1|最近1日|最近$1日間}}",
+ "contributionscores-allrevisions": "すべての期間",
+ "contributionscores-score": "得点",
+ "contributionscores-rank": "順位",
+ "contributionscores-pages": "ページ数",
+ "contributionscores-changes": "編集回数",
+ "contributionscores-username": "利用者名",
+ "contributionscores-invalidusername": "無効な利用者名",
+ "contributionscores-invalidmetric": "無効な尺度"
+}
diff --git a/ContributionScores/i18n/jv.json b/ContributionScores/i18n/jv.json
new file mode 100644
index 00000000..a6b0d8f0
--- /dev/null
+++ b/ContributionScores/i18n/jv.json
@@ -0,0 +1,24 @@
+{
+ "@metadata": {
+ "authors": [
+ "Diki Ananta",
+ "Meursault2004",
+ "NoiX180",
+ "Pras",
+ "Sumbukompor"
+ ]
+ },
+ "contributionscores": "Bijining pasumbang",
+ "contributionscores-desc": "Nglakokaké polling (angkèt) ing basis data kanggo [[Special:ContributionScores|volume kontribusi naraguna]]",
+ "contributionscores-info": "Skoré diétung kaya mangkéné:\n* Biji siji (1) per kaca unik sing disunting\n* Oyot (bs. Indonesia ''akar'') saka (Gunggungé Suntingan) - (Gunggungé Kaca-KAca Unik) * 2\nSkor sing diétung miturut cara iki bisa nyerminaké divèrsitas suntingan sadhuwuring volume suntingan.\nSacara dhasar, skor iki utamané ngétung kaca-kaca unik sing disunting, karo mélu nimbangaké volume suntingan dhuwur - diasumsèkaké kwalitas kacané luwih dhuwur.",
+ "contributionscores-top": "(Top $1)",
+ "contributionscores-days": "{{PLURAL:$1|dina|$1 dina}} pungkasan",
+ "contributionscores-allrevisions": "Sasuwéné wektu",
+ "contributionscores-score": "Skor",
+ "contributionscores-rank": "Rangking",
+ "contributionscores-pages": "Kaca",
+ "contributionscores-changes": "Owah-owahan",
+ "contributionscores-username": "Jeneng naraguna",
+ "contributionscores-invalidusername": "Jeneng naraguna ora sah",
+ "contributionscores-invalidmetric": "Metrik ora sah"
+}
diff --git a/ContributionScores/i18n/ka.json b/ContributionScores/i18n/ka.json
new file mode 100644
index 00000000..8cb0c581
--- /dev/null
+++ b/ContributionScores/i18n/ka.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "David1010"
+ ]
+ },
+ "contributionscores-top": "(საუკეთესო $1)",
+ "contributionscores-days": "ბოლო {{PLURAL:$1|დღე|$1 დღე}}",
+ "contributionscores-allrevisions": "ყველა დროის",
+ "contributionscores-score": "შეფასება",
+ "contributionscores-pages": "გვერდები",
+ "contributionscores-changes": "ცვლილებები",
+ "contributionscores-username": "მომხმარებლის სახელი",
+ "contributionscores-invalidusername": "არასწორი მომხმარებლის სახელი"
+}
diff --git a/ContributionScores/i18n/kab.json b/ContributionScores/i18n/kab.json
new file mode 100644
index 00000000..db5166a4
--- /dev/null
+++ b/ContributionScores/i18n/kab.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Belkacem77"
+ ]
+ },
+ "contributionscores": "Agmuḍ n uttekki",
+ "contributionscores-desc": "Ad yesleḍ taffa n isefka n iwikiyen ɣef [[Special:ContributionScores|tesmekta n ittekkiyen n iseqdacen]]",
+ "contributionscores-info": "Agmuḍ ad yektil di tazwara isebtar isufen yettwasnifel, ɣas ulama ddeqs n tesmekta n usinifel i yellan.",
+ "contributionscores-top": "($1 imezwura)",
+ "contributionscores-days": "Deg {{PLURAL:$1|wass aneggaru|$1 n wussan ineggura}}",
+ "contributionscores-allrevisions": "Si tazwara",
+ "contributionscores-score": "Agmuḍ",
+ "contributionscores-rank": "Amḍiq",
+ "contributionscores-pages": "Isebtar",
+ "contributionscores-changes": "Asnifel",
+ "contributionscores-username": "Isem n useqdac",
+ "contributionscores-invalidusername": "Yir isem n useqdac",
+ "contributionscores-invalidmetric": "Yir asekkat"
+}
diff --git a/ContributionScores/i18n/kiu.json b/ContributionScores/i18n/kiu.json
new file mode 100644
index 00000000..eba4f7a8
--- /dev/null
+++ b/ContributionScores/i18n/kiu.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mirzali"
+ ]
+ },
+ "contributionscores-score": "Puwan",
+ "contributionscores-rank": "Rêze",
+ "contributionscores-pages": "Peli",
+ "contributionscores-changes": "Vurnayışi",
+ "contributionscores-username": "Namê karberi"
+}
diff --git a/ContributionScores/i18n/kjp.json b/ContributionScores/i18n/kjp.json
new file mode 100644
index 00000000..d8612f8d
--- /dev/null
+++ b/ContributionScores/i18n/kjp.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Rul1902"
+ ]
+ },
+ "contributionscores-score": "အ်ုဏါင်းဏေဝ်ႋ",
+ "contributionscores-rank": "အ်ုထေါဟ်",
+ "contributionscores-pages": "လိက်မေံၜၠါ်လ်ုဖး",
+ "contributionscores-changes": "မ်ုအင်းလယ်လ်ုဖး",
+ "contributionscores-username": "ဆ်ုသုံႋဆာႋမိင်"
+}
diff --git a/ContributionScores/i18n/kk-arab.json b/ContributionScores/i18n/kk-arab.json
new file mode 100644
index 00000000..740a54c2
--- /dev/null
+++ b/ContributionScores/i18n/kk-arab.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Robby"
+ ]
+ },
+ "contributionscores": "ٷلەس بەرۋ ەسەپتەرٸ",
+ "contributionscores-info": "ەسەپتەر كەلەسٸ دەي سانالادى:\n*1 ۇپاي ٵربٸر تٷزەتٸلگەن بٸرەگەي بەت ٷشٸن\n*مىنانىڭ شارشى تٷبٸرٸ (بارلىق ٸستەلٸنگەن تٷزەتۋلەر) ‒ (بارلىق بٸرەگەي بەتتەر) * 2\nوسى تٵسٸلمەن سانالعان ەسەپتەر تٷزەتۋ اۋقىمىنداعى ٶڭدەۋ ٵركەلكٸلٸگٸنٸڭ سالماعىن ٶلشەيدٸ. نەگٸزٸندە, بۇل ەسەپ الدىمەن تٷزەتٸلگەن بٸركەلكٸ بەتتەردٸ ٶلشەيدٸ, جوعارعى ٶڭدەۋ اۋقىمىمەن بٸرگە — جوعارى ساپالى بەت جاعدايىمەن ەسەپتەپ.",
+ "contributionscores-top": "(جوعارعى $1)",
+ "contributionscores-days": "سوڭعى $1 كٷندە",
+ "contributionscores-allrevisions": "بارلىق نۇسقالار",
+ "contributionscores-score": "ەسەپ",
+ "contributionscores-pages": "بەتتەر",
+ "contributionscores-changes": "ٶزگەرٸستەر",
+ "contributionscores-username": "قاتىسۋشى اتى"
+}
diff --git a/ContributionScores/i18n/kk-cyrl.json b/ContributionScores/i18n/kk-cyrl.json
new file mode 100644
index 00000000..08d0b69d
--- /dev/null
+++ b/ContributionScores/i18n/kk-cyrl.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Arystanbek"
+ ]
+ },
+ "contributionscores": "Үлес қосу санағы",
+ "contributionscores-info": "Есептер келесі дей саналады:\n*1 ұпай әрбір түзетілген бірегей бет үшін\n*Мынаның шаршы түбірі (Барлық Істелінген Түзетулер) ‒ (Барлық Бірегей Беттер) * 2\nОсы тәсілмен саналған есептер түзету ауқымындағы өңдеу әркелкілігінің салмағын өлшейді. Негізінде, бұл есеп алдымен түзетілген біркелкі беттерді өлшейді, жоғарғы өңдеу ауқымымен бірге — жоғары сапалы бет жағдайымен есептеп.",
+ "contributionscores-top": "(Жоғарғы $1)",
+ "contributionscores-days": "Соңғы {{PLURAL:$1|күнде|$1 күнде}}",
+ "contributionscores-allrevisions": "Барлық уақытта",
+ "contributionscores-score": "Ұпай",
+ "contributionscores-rank": "Орны",
+ "contributionscores-pages": "Беттер",
+ "contributionscores-changes": "Өзгерістер",
+ "contributionscores-username": "Қатысушы есімі",
+ "contributionscores-invalidusername": "Жарамсыз қатысушы есімі",
+ "contributionscores-invalidmetric": "Дұрыс емес метрик"
+}
diff --git a/ContributionScores/i18n/kk-latn.json b/ContributionScores/i18n/kk-latn.json
new file mode 100644
index 00000000..1fcf7f43
--- /dev/null
+++ b/ContributionScores/i18n/kk-latn.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": []
+ },
+ "contributionscores": "Üles berw esepteri",
+ "contributionscores-info": "Esepter kelesi deý sanaladı:\n*1 upaý ärbir tüzetilgen biregeý bet üşin\n*Mınanıñ şarşı tübiri (Barlıq İstelingen Tüzetwler) ‒ (Barlıq Biregeý Better) * 2\nOsı täsilmen sanalğan esepter tüzetw awqımındağı öñdew ärkelkiliginiñ salmağın ölşeýdi. Negizinde, bul esep aldımen tüzetilgen birkelki betterdi ölşeýdi, joğarğı öñdew awqımımen birge — joğarı sapalı bet jağdaýımen eseptep.",
+ "contributionscores-top": "(Joğarğı $1)",
+ "contributionscores-days": "Soñğı $1 künde",
+ "contributionscores-allrevisions": "Barlıq nusqalar",
+ "contributionscores-score": "Esep",
+ "contributionscores-pages": "Better",
+ "contributionscores-changes": "Özgerister",
+ "contributionscores-username": "Qatıswşı atı"
+}
diff --git a/ContributionScores/i18n/km.json b/ContributionScores/i18n/km.json
new file mode 100644
index 00000000..282f63d5
--- /dev/null
+++ b/ContributionScores/i18n/km.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Chhorran",
+ "Lovekhmer",
+ "Thearith",
+ "គីមស៊្រុន"
+ ]
+ },
+ "contributionscores": "តារាងពិន្ទុ​នៃការរួមចំណែក",
+ "contributionscores-top": "(លើគេទាំង $1 នាក់)",
+ "contributionscores-days": "{{PLURAL:$1|ថ្ងៃ|$1 ថ្ងៃ}}​ចុងក្រោយ",
+ "contributionscores-allrevisions": "គ្រប់ពេល",
+ "contributionscores-score": "ពិន្ទុ",
+ "contributionscores-rank": "ចំណាត់ថ្នាក់",
+ "contributionscores-pages": "ទំព័រ​",
+ "contributionscores-changes": "បន្លាស់ប្ដូរ",
+ "contributionscores-username": "អត្តនាម",
+ "contributionscores-invalidusername": "អត្តនាមមិនត្រឹមត្រូវ"
+}
diff --git a/ContributionScores/i18n/kn.json b/ContributionScores/i18n/kn.json
new file mode 100644
index 00000000..d3c87a24
--- /dev/null
+++ b/ContributionScores/i18n/kn.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Nayvik"
+ ]
+ },
+ "contributionscores-pages": "ಪುಟಗಳು"
+}
diff --git a/ContributionScores/i18n/ko.json b/ContributionScores/i18n/ko.json
new file mode 100644
index 00000000..e149eb6d
--- /dev/null
+++ b/ContributionScores/i18n/ko.json
@@ -0,0 +1,24 @@
+{
+ "@metadata": {
+ "authors": [
+ "Hym411",
+ "Priviet",
+ "Revi",
+ "Shirayuki",
+ "아라"
+ ]
+ },
+ "contributionscores": "기여 점수",
+ "contributionscores-desc": "최고 [[Special:ContributionScores|사용자 기여 값]]에 대해 위키 데이터베이스를 통계합니다",
+ "contributionscores-info": "점수는 주로 높은 편집 품질을 고려하여 편집한 고유 문서 수를 측정합니다.",
+ "contributionscores-top": "(상위 $1)",
+ "contributionscores-days": "최근 $1일",
+ "contributionscores-allrevisions": "모든 기간",
+ "contributionscores-score": "점수",
+ "contributionscores-rank": "순위",
+ "contributionscores-pages": "문서",
+ "contributionscores-changes": "바뀜",
+ "contributionscores-username": "사용자 이름",
+ "contributionscores-invalidusername": "잘못된 사용자 이름",
+ "contributionscores-invalidmetric": "잘못된 통계"
+}
diff --git a/ContributionScores/i18n/ksh.json b/ContributionScores/i18n/ksh.json
new file mode 100644
index 00000000..3c05cb3d
--- /dev/null
+++ b/ContributionScores/i18n/ksh.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Purodha"
+ ]
+ },
+ "contributionscores": "Metmaacher ier Beijdrähsch verjlesche",
+ "contributionscores-desc": "Fingk de Metmaacher met de [[Special:ContributionScores|miihßte Beidrääsch]].",
+ "contributionscores-info": "En de Houpsaach zälle de einzel ongerscheidlijje veränderte Sigge med enem Zohschlaach för wann vill Änderonge jemaat woodte.",
+ "contributionscores-top": "(Top $1)",
+ "contributionscores-days": "{{PLURAL:$1|Der lezte Daach|De lezte $1 Daare|Keine lezte Daach}}",
+ "contributionscores-allrevisions": "De janze Zigg",
+ "contributionscores-score": "Punkte",
+ "contributionscores-rank": "Rang",
+ "contributionscores-pages": "Sigge",
+ "contributionscores-changes": "Änderonge",
+ "contributionscores-username": "Metmaacher_Nahme",
+ "contributionscores-invalidusername": "Verkeehte Metmaacher_Nahme",
+ "contributionscores-invalidmetric": "Onjöltesch Mohß"
+}
diff --git a/ContributionScores/i18n/ku-latn.json b/ContributionScores/i18n/ku-latn.json
new file mode 100644
index 00000000..f31ddcae
--- /dev/null
+++ b/ContributionScores/i18n/ku-latn.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "George Animal"
+ ]
+ },
+ "contributionscores-allrevisions": "Hemû dem",
+ "contributionscores-pages": "Rûpel",
+ "contributionscores-username": "Navê bikarhêner"
+}
diff --git a/ContributionScores/i18n/kw.json b/ContributionScores/i18n/kw.json
new file mode 100644
index 00000000..4232a88f
--- /dev/null
+++ b/ContributionScores/i18n/kw.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kw-Moon",
+ "Nrowe"
+ ]
+ },
+ "contributionscores-username": "Hanow devnydhyer"
+}
diff --git a/ContributionScores/i18n/lb.json b/ContributionScores/i18n/lb.json
new file mode 100644
index 00000000..3ea60263
--- /dev/null
+++ b/ContributionScores/i18n/lb.json
@@ -0,0 +1,21 @@
+{
+ "@metadata": {
+ "authors": [
+ "Les Meloures",
+ "Robby"
+ ]
+ },
+ "contributionscores": "Bewäertung vun den Ännerungen",
+ "contributionscores-desc": "Ufro un d'Wiki-Datebank no den héchste [[Special:ContributionScores|Benotzerscoren]]",
+ "contributionscores-info": "D'Bewäertung moosst Zuel vu geännerte Säite a consideréiert d'Zuel vun den Ännerungen.",
+ "contributionscores-top": "(Top $1)",
+ "contributionscores-days": "{{PLURAL:$1|Leschten Dag|Lescht $1 Deeg}}",
+ "contributionscores-allrevisions": "Vun Ufank un",
+ "contributionscores-score": "Bewäertung",
+ "contributionscores-rank": "Klassement",
+ "contributionscores-pages": "Säiten",
+ "contributionscores-changes": "Ännerungen",
+ "contributionscores-username": "Benotzernumm",
+ "contributionscores-invalidusername": "Ongëltege Benotzernumm",
+ "contributionscores-invalidmetric": "Ongëlteg Metrik"
+}
diff --git a/ContributionScores/i18n/li.json b/ContributionScores/i18n/li.json
new file mode 100644
index 00000000..96532b9a
--- /dev/null
+++ b/ContributionScores/i18n/li.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "Aelske",
+ "Ooswesthoesbes",
+ "Pahles"
+ ]
+ },
+ "contributionscores": "Biedraaghuuegdjes",
+ "contributionscores-desc": "Guuef 'n euverzich van [[Special:ContributionScores|gebroekers mit de meiste biedraag]] inne wiki.",
+ "contributionscores-info": "Dees score mètj veurnamelik 't aantaal unieke pagina's det is bewirk, dewiel e groeat aantaal bewirkinge waal in ach weurt genómme.",
+ "contributionscores-top": "(Top $1)",
+ "contributionscores-days": "{{PLURAL:$1|Lesten daag|Leste $1 daag}}",
+ "contributionscores-allrevisions": "Alle verzies",
+ "contributionscores-score": "Puntje",
+ "contributionscores-rank": "Rang",
+ "contributionscores-pages": "Pagina's",
+ "contributionscores-changes": "Bewèrkinger",
+ "contributionscores-username": "Gebroeker",
+ "contributionscores-invalidusername": "Verkierde gebroeker",
+ "contributionscores-invalidmetric": "Ogeljige einheid"
+}
diff --git a/ContributionScores/i18n/lij.json b/ContributionScores/i18n/lij.json
new file mode 100644
index 00000000..dfe535e1
--- /dev/null
+++ b/ContributionScores/i18n/lij.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Giromin Cangiaxo"
+ ]
+ },
+ "contributionscores": "Pontezzi contributi"
+}
diff --git a/ContributionScores/i18n/lki.json b/ContributionScores/i18n/lki.json
new file mode 100644
index 00000000..c24a5195
--- /dev/null
+++ b/ContributionScores/i18n/lki.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Lakzon"
+ ]
+ },
+ "contributionscores-pages": "وةڵگةل"
+}
diff --git a/ContributionScores/i18n/lt.json b/ContributionScores/i18n/lt.json
new file mode 100644
index 00000000..18a60769
--- /dev/null
+++ b/ContributionScores/i18n/lt.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Eitvys200",
+ "Hugo.arg"
+ ]
+ },
+ "contributionscores-top": "(Top $1)",
+ "contributionscores-days": "{{PLURAL:$1|Paskutinė diena|Paskutinės $1 dienos}}",
+ "contributionscores-allrevisions": "Viso laiko",
+ "contributionscores-score": "Rezultatas",
+ "contributionscores-rank": "Rangas",
+ "contributionscores-pages": "Puslapiai",
+ "contributionscores-changes": "Pakeitimai",
+ "contributionscores-username": "Naudotojo vardas",
+ "contributionscores-invalidusername": "Negalimas naudotojo vardas",
+ "contributionscores-invalidmetric": "Neleistina metrika"
+}
diff --git a/ContributionScores/i18n/ltg.json b/ContributionScores/i18n/ltg.json
new file mode 100644
index 00000000..204e6819
--- /dev/null
+++ b/ContributionScores/i18n/ltg.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Dark Eagle"
+ ]
+ },
+ "contributionscores-pages": "Puslopys"
+}
diff --git a/ContributionScores/i18n/lus.json b/ContributionScores/i18n/lus.json
new file mode 100644
index 00000000..542ffb3e
--- /dev/null
+++ b/ContributionScores/i18n/lus.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "RMizo"
+ ]
+ },
+ "contributionscores-allrevisions": "A vaiin",
+ "contributionscores-score": "Dawn",
+ "contributionscores-pages": "Phekte",
+ "contributionscores-changes": "Tihdanglamte",
+ "contributionscores-username": "Hmangtuhming",
+ "contributionscores-invalidusername": "Hmangtuhming dik lo",
+ "contributionscores-invalidmetric": "Tehphung dik lo"
+}
diff --git a/ContributionScores/i18n/lzh.json b/ContributionScores/i18n/lzh.json
new file mode 100644
index 00000000..12b6a678
--- /dev/null
+++ b/ContributionScores/i18n/lzh.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Jason924tw"
+ ]
+ },
+ "contributionscores-username": "簿名"
+}
diff --git a/ContributionScores/i18n/mhr.json b/ContributionScores/i18n/mhr.json
new file mode 100644
index 00000000..c0983402
--- /dev/null
+++ b/ContributionScores/i18n/mhr.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Сай"
+ ]
+ },
+ "contributionscores-username": "Пайдаланышын лӱмжӧ"
+}
diff --git a/ContributionScores/i18n/mk.json b/ContributionScores/i18n/mk.json
new file mode 100644
index 00000000..dab539da
--- /dev/null
+++ b/ContributionScores/i18n/mk.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bjankuloski06"
+ ]
+ },
+ "contributionscores": "Оцени за придонеси",
+ "contributionscores-desc": "Презема податоци од викибазата за [[Special:ContributionScores|корисници со највеќе придонеси]]",
+ "contributionscores-info": "Салдото е мерка што изразува уредувања на одделни страници, со оглед на големиот број на уредувања.",
+ "contributionscores-top": "(Најдобри $1)",
+ "contributionscores-days": "{{PLURAL:$1|Последниот ден|Последните $1 дена}}",
+ "contributionscores-allrevisions": "На сите времиња",
+ "contributionscores-score": "Оценка",
+ "contributionscores-rank": "Ранг",
+ "contributionscores-pages": "Страници",
+ "contributionscores-changes": "Измени",
+ "contributionscores-username": "Корисничко име",
+ "contributionscores-invalidusername": "Неправилно корисничко име",
+ "contributionscores-invalidmetric": "Грешно мерило"
+}
diff --git a/ContributionScores/i18n/ml.json b/ContributionScores/i18n/ml.json
new file mode 100644
index 00000000..8c2d49f8
--- /dev/null
+++ b/ContributionScores/i18n/ml.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Praveenp",
+ "Shijualex"
+ ]
+ },
+ "contributionscores-top": "(ആദ്യത്തെ $1)",
+ "contributionscores-days": "അവസാന {{PLURAL:$1|ദിവസം|$1 ദിവസങ്ങൾ}}",
+ "contributionscores-allrevisions": "എല്ലാ പതിപ്പുകളും",
+ "contributionscores-score": "സ്കോർ",
+ "contributionscores-pages": "താളുകൾ",
+ "contributionscores-changes": "മാറ്റങ്ങൾ",
+ "contributionscores-username": "ഉപയോക്തൃനാമം",
+ "contributionscores-invalidusername": "അസാധുവായ ഉപയോക്തൃനാമം"
+}
diff --git a/ContributionScores/i18n/mn.json b/ContributionScores/i18n/mn.json
new file mode 100644
index 00000000..c8f6bcb3
--- /dev/null
+++ b/ContributionScores/i18n/mn.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Chinneeb"
+ ]
+ },
+ "contributionscores-username": "Хэрэглэгчийн нэр"
+}
diff --git a/ContributionScores/i18n/mni.json b/ContributionScores/i18n/mni.json
new file mode 100644
index 00000000..f9b896f0
--- /dev/null
+++ b/ContributionScores/i18n/mni.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Awangba Mangang"
+ ]
+ },
+ "contributionscores-allrevisions": "ꯃꯇꯝ ꯄꯨꯂꯞ",
+ "contributionscores-rank": "ꯊꯥꯛ",
+ "contributionscores-pages": "ꯂꯃꯥꯏꯁꯤꯡ",
+ "contributionscores-changes": "ꯑꯍꯣꯡꯕꯁꯤꯡ",
+ "contributionscores-username": "ꯁꯤꯖꯤꯟꯅꯔꯤꯕ ꯃꯃꯤꯡ",
+ "contributionscores-invalidusername": "ꯁꯤꯖꯤꯟꯅꯔꯤꯕ ꯃꯃꯤꯡ ꯌꯥꯎꯗꯦ"
+}
diff --git a/ContributionScores/i18n/mr.json b/ContributionScores/i18n/mr.json
new file mode 100644
index 00000000..6e0abb57
--- /dev/null
+++ b/ContributionScores/i18n/mr.json
@@ -0,0 +1,23 @@
+{
+ "@metadata": {
+ "authors": [
+ "Htt",
+ "Kaustubh",
+ "Mahitgar",
+ "V.narsikar"
+ ]
+ },
+ "contributionscores": "योगदान संख्या",
+ "contributionscores-desc": "[[Special:ContributionScores|सदस्य योगदान संख्येनुसार]] विकि डाटाबेस दर्शवितो",
+ "contributionscores-info": "गुण देतांना, प्राथमिकरित्या, अनन्य पानांचे संपादनासह,उच्च संपादन-आवाका लक्षात घेतल्या जातो.",
+ "contributionscores-top": "(गुणानुक्रमे पहिले $1)",
+ "contributionscores-days": "{{PLURAL:$1|शेवटचा दिवस|शेवटचे $1 दिवस}}",
+ "contributionscores-allrevisions": "सर्ववेळची",
+ "contributionscores-score": "गुण",
+ "contributionscores-rank": "गुणानुक्रम",
+ "contributionscores-pages": "पाने",
+ "contributionscores-changes": "बदल",
+ "contributionscores-username": "सदस्यनाव",
+ "contributionscores-invalidusername": "चुकीचे सदस्यनाव",
+ "contributionscores-invalidmetric": "चुकीचे मेट्रिक"
+}
diff --git a/ContributionScores/i18n/ms.json b/ContributionScores/i18n/ms.json
new file mode 100644
index 00000000..5f367370
--- /dev/null
+++ b/ContributionScores/i18n/ms.json
@@ -0,0 +1,21 @@
+{
+ "@metadata": {
+ "authors": [
+ "Anakmalaysia",
+ "Emrrans"
+ ]
+ },
+ "contributionscores": "Skor sumbangan",
+ "contributionscores-desc": "Mengira [[Special:ContributionScores|jumlah sumbangan pengguna]] yang tertinggi dalam pangkalan data wiki",
+ "contributionscores-info": "Markah ini terutama sekali mengira halaman-halaman unik yang disunting dengan pertimbangan untuk jumlah suntingan yang tinggi.",
+ "contributionscores-top": "($1 teratas)",
+ "contributionscores-days": "{{PLURAL:$1|hari|$1 hari}} terkini",
+ "contributionscores-allrevisions": "Sepanjang masa",
+ "contributionscores-score": "Markah",
+ "contributionscores-rank": "Pangkat",
+ "contributionscores-pages": "Halaman",
+ "contributionscores-changes": "Perubahan",
+ "contributionscores-username": "Nama pengguna",
+ "contributionscores-invalidusername": "Nama pengguna tidak sah",
+ "contributionscores-invalidmetric": "Metrik tidak sah"
+}
diff --git a/ContributionScores/i18n/mt.json b/ContributionScores/i18n/mt.json
new file mode 100644
index 00000000..7ed7cbb6
--- /dev/null
+++ b/ContributionScores/i18n/mt.json
@@ -0,0 +1,21 @@
+{
+ "@metadata": {
+ "authors": [
+ "Chrisportelli",
+ "Giangian15",
+ "Roderick Mallia"
+ ]
+ },
+ "contributionscores": "Punteġġi tal-kontribuzzjonijiet",
+ "contributionscores-desc": "Tanalizza d-databażi tal-wiki għall-ogħla [[Special:ContributionScores|volum ta' kontributi tal-utenti]]",
+ "contributionscores-info": "Il-punteġġi huma kkalkulati b'dan il-mod:\n*Punt (1) għal kull paġna distinta modifikata\n*Radiċi kwadrata ta' (modifiki kollha li saru) - (total ta' paġni distinti) * 2\nDan il-metodu ta' kalkolu tal-punteġġi jagħti iktar importanza għad-diversità fil-modifiki milli għan-numru ta' kontribuzzjonijiet. Bażikament, dan il-punteġġ l-ewwel jikkalkola n-numru ta' paġni distinti modifikati, fejn in konsiderazzjoni għall-volum għoli ta' kontribuzzjonijiet - din tassumi li hija paġna ta' kwalità ogħla.",
+ "contributionscores-top": "(L-Aqwa $1)",
+ "contributionscores-days": "L-aħħar {{PLURAL:$1|ġurnata|$1 ġranet}}",
+ "contributionscores-allrevisions": "Ta' kull żmien",
+ "contributionscores-score": "Punteġġ",
+ "contributionscores-pages": "Paġni",
+ "contributionscores-changes": "Tibdil",
+ "contributionscores-username": "Isem l-utent",
+ "contributionscores-invalidusername": "Isem tal-utent invalidu",
+ "contributionscores-invalidmetric": "Metrika invalida"
+}
diff --git a/ContributionScores/i18n/my.json b/ContributionScores/i18n/my.json
new file mode 100644
index 00000000..8797155c
--- /dev/null
+++ b/ContributionScores/i18n/my.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Dr Lotus Black",
+ "Ninjastrikers"
+ ]
+ },
+ "contributionscores": "ပံ့ပို့မှု ရမှတ်များ",
+ "contributionscores-top": "(ထိပ်ဆုံး $1)",
+ "contributionscores-days": "နောက်ဆုံး {{PLURAL:$1|ရက်|$1 ရက်}}",
+ "contributionscores-allrevisions": "တချိန်လုံး",
+ "contributionscores-score": "ရမှတ်",
+ "contributionscores-rank": "အဆင့်",
+ "contributionscores-pages": "စာမျက်နှာများ",
+ "contributionscores-changes": "အပြောင်းအလဲများ",
+ "contributionscores-username": "အသုံးပြုသူအမည်",
+ "contributionscores-invalidusername": "အသုံးပြုသူအမည် မမှန်ကန်ပါ"
+}
diff --git a/ContributionScores/i18n/myv.json b/ContributionScores/i18n/myv.json
new file mode 100644
index 00000000..ab6ffc9d
--- /dev/null
+++ b/ContributionScores/i18n/myv.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Botuzhaleny-sodamo"
+ ]
+ },
+ "contributionscores-days": "Меельце {{PLURAL:$1|чи|$1 чить}}",
+ "contributionscores-pages": "Лопат",
+ "contributionscores-changes": "Полавтнемат",
+ "contributionscores-username": "Теицянь лем"
+}
diff --git a/ContributionScores/i18n/nah.json b/ContributionScores/i18n/nah.json
new file mode 100644
index 00000000..95df0eed
--- /dev/null
+++ b/ContributionScores/i18n/nah.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Akapochtli",
+ "Fluence"
+ ]
+ },
+ "contributionscores-changes": "Tlapatlaliztli",
+ "contributionscores-username": "Tequitiuhcatocaitll"
+}
diff --git a/ContributionScores/i18n/nb.json b/ContributionScores/i18n/nb.json
new file mode 100644
index 00000000..fe092e95
--- /dev/null
+++ b/ContributionScores/i18n/nb.json
@@ -0,0 +1,23 @@
+{
+ "@metadata": {
+ "authors": [
+ "Danmichaelo",
+ "Helland",
+ "Jon Harald Søby",
+ "Nghtwlkr"
+ ]
+ },
+ "contributionscores": "Bidragspoeng",
+ "contributionscores-desc": "Spør wikidatabasen etter det høyeste [[Special:ContributionScores|bidragsvolumet]]",
+ "contributionscores-info": "Bidragspoeng måler primært hvor mange unike sider som er redigert, og tar høyt redigeringsvolum i betraktning.",
+ "contributionscores-top": "(Topp $1)",
+ "contributionscores-days": "Siste {{PLURAL:$1|dagen|$1 dager}}",
+ "contributionscores-allrevisions": "Gjennom tidene",
+ "contributionscores-score": "Poeng",
+ "contributionscores-rank": "Rangering",
+ "contributionscores-pages": "Sider",
+ "contributionscores-changes": "Endringer",
+ "contributionscores-username": "Brukernavn",
+ "contributionscores-invalidusername": "Ugyldig brukernavn",
+ "contributionscores-invalidmetric": "Ugyldig målemetode"
+}
diff --git a/ContributionScores/i18n/nds.json b/ContributionScores/i18n/nds.json
new file mode 100644
index 00000000..4934c016
--- /dev/null
+++ b/ContributionScores/i18n/nds.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Slomox"
+ ]
+ },
+ "contributionscores-days": "Letzte $1 Daag",
+ "contributionscores-pages": "Sieden",
+ "contributionscores-changes": "Ännern",
+ "contributionscores-username": "Brukernaam"
+}
diff --git a/ContributionScores/i18n/ne.json b/ContributionScores/i18n/ne.json
new file mode 100644
index 00000000..d0bdaa7d
--- /dev/null
+++ b/ContributionScores/i18n/ne.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "RajeshPandey",
+ "पर्वत सुबेदी"
+ ]
+ },
+ "contributionscores": "योगदान प्राप्ताङ्कहरू",
+ "contributionscores-days": "अन्तिम {{PLURAL:$1|दिन|$1 दिनहरू}}",
+ "contributionscores-allrevisions": "सबै समय",
+ "contributionscores-score": "प्राप्ताङ्क",
+ "contributionscores-rank": "क्रम",
+ "contributionscores-pages": "पृष्ठहरू",
+ "contributionscores-changes": "परिवर्तनहरू",
+ "contributionscores-username": "प्रयोगकर्ता नाम",
+ "contributionscores-invalidusername": "अबैध प्रयोगकर्ता नाम"
+}
diff --git a/ContributionScores/i18n/niu.json b/ContributionScores/i18n/niu.json
new file mode 100644
index 00000000..de68d78e
--- /dev/null
+++ b/ContributionScores/i18n/niu.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Jose77"
+ ]
+ },
+ "contributionscores-username": "Matahigoa he tagata"
+}
diff --git a/ContributionScores/i18n/nl.json b/ContributionScores/i18n/nl.json
new file mode 100644
index 00000000..e6bc7096
--- /dev/null
+++ b/ContributionScores/i18n/nl.json
@@ -0,0 +1,21 @@
+{
+ "@metadata": {
+ "authors": [
+ "Flightmare",
+ "Siebrand"
+ ]
+ },
+ "contributionscores": "Gebruikersstatistieken",
+ "contributionscores-desc": "Geeft een overzicht van [[Special:ContributionScores|gebruikers met de meeste bijdragen]] in de wiki",
+ "contributionscores-info": "Deze score meet voornamelijk het aantal unieke pagina's dat is bewerkt, terwijl een groot aantal bewerkingen wel in acht wordt genomen.",
+ "contributionscores-top": "(Top $1)",
+ "contributionscores-days": "Laatste {{PLURAL:$1|dag|$1 dagen}}",
+ "contributionscores-allrevisions": "Alle versies",
+ "contributionscores-score": "Punten",
+ "contributionscores-rank": "Rang",
+ "contributionscores-pages": "Pagina's",
+ "contributionscores-changes": "Wijzigingen",
+ "contributionscores-username": "Gebruikersnaam",
+ "contributionscores-invalidusername": "Ongeldige gebruikersnaam",
+ "contributionscores-invalidmetric": "Ongeldige eenheid"
+}
diff --git a/ContributionScores/i18n/nn.json b/ContributionScores/i18n/nn.json
new file mode 100644
index 00000000..203af6ce
--- /dev/null
+++ b/ContributionScores/i18n/nn.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "Gunnernett",
+ "Harald Khan",
+ "Jon Harald Søby",
+ "Njardarlogar"
+ ]
+ },
+ "contributionscores": "Bidragspoeng",
+ "contributionscores-desc": "Spør wikidatabasen etter det høgaste [[Special:ContributionScores|bidragsvolumet]]",
+ "contributionscores-info": "Bidragspoeng blir rekna ut på følgjande måte:\n* eitt poeng for kvar unik sida som har blitt endra\n* Kvadratrota av (totalt tal på endringar) &minus; (unike sider endra) × 2\nPoeng som blir rekna ut på denne måten set endringsmangfald høgare enn endringsvolum. Dette tyder til sist at dette primært måler kor mange forskjellige sider som har blitt endra, med omsyn til høgt endringsvolum &ndash; anteke å føra til sider av høgare kvalitet.",
+ "contributionscores-top": "(topp $1)",
+ "contributionscores-days": "Siste {{PLURAL:$1|dagen|$1 dagane}}",
+ "contributionscores-allrevisions": "Alle versjonar",
+ "contributionscores-score": "Poeng",
+ "contributionscores-pages": "Sider",
+ "contributionscores-changes": "Endringar",
+ "contributionscores-username": "Brukarnamn",
+ "contributionscores-invalidusername": "Ugyldig brukarnamn",
+ "contributionscores-invalidmetric": "Ugyldig målemetode"
+}
diff --git a/ContributionScores/i18n/nso.json b/ContributionScores/i18n/nso.json
new file mode 100644
index 00000000..7b4ff4ed
--- /dev/null
+++ b/ContributionScores/i18n/nso.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mohau"
+ ]
+ },
+ "contributionscores-pages": "Matlakala",
+ "contributionscores-changes": "Diphetogo",
+ "contributionscores-username": "Leina la mošomši"
+}
diff --git a/ContributionScores/i18n/oc.json b/ContributionScores/i18n/oc.json
new file mode 100644
index 00000000..29b5872b
--- /dev/null
+++ b/ContributionScores/i18n/oc.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Cedric31"
+ ]
+ },
+ "contributionscores": "Puntatge de las contribucions",
+ "contributionscores-desc": "Espia la basa de donadas wiki pels [[Special:ContributionScores|utilizaires que contribuisson mai]]",
+ "contributionscores-info": "La marca mesura en prioritat las paginas unicas modificadas, en prenent en compte los gròsses volums de modificacion.",
+ "contributionscores-top": "(Melhor $1)",
+ "contributionscores-days": "Dins {{PLURAL:$1|lo darrièr jorn|los darrièrs $1 jorns}}",
+ "contributionscores-allrevisions": "Tot lo temps",
+ "contributionscores-score": "Puntatge",
+ "contributionscores-rank": "Reng",
+ "contributionscores-pages": "Paginas",
+ "contributionscores-changes": "Modificacions",
+ "contributionscores-username": "Nom d'utilizaire",
+ "contributionscores-invalidusername": "Nom d'utilizaire invalid",
+ "contributionscores-invalidmetric": "Metria incorrècta"
+}
diff --git a/ContributionScores/i18n/or.json b/ContributionScores/i18n/or.json
new file mode 100644
index 00000000..d9211763
--- /dev/null
+++ b/ContributionScores/i18n/or.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ansumang",
+ "Odisha1",
+ "Psubhashish"
+ ]
+ },
+ "contributionscores-allrevisions": "ସବୁ ବେଳେ",
+ "contributionscores-score": "ସ୍କୋର",
+ "contributionscores-pages": "ପୃଷ୍ଠା",
+ "contributionscores-changes": "ବଦଳସବୁ",
+ "contributionscores-username": "ବ୍ୟବହାରକାରୀଙ୍କ ନାମ"
+}
diff --git a/ContributionScores/i18n/os.json b/ContributionScores/i18n/os.json
new file mode 100644
index 00000000..f003757c
--- /dev/null
+++ b/ContributionScores/i18n/os.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Amikeco"
+ ]
+ },
+ "contributionscores-username": "Архайæджы ном"
+}
diff --git a/ContributionScores/i18n/pa.json b/ContributionScores/i18n/pa.json
new file mode 100644
index 00000000..b464cc6a
--- /dev/null
+++ b/ContributionScores/i18n/pa.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "BukhariSaeed"
+ ]
+ },
+ "contributionscores-changes": "ਤਬਦੀਲੀਆਂ"
+}
diff --git a/ContributionScores/i18n/pam.json b/ContributionScores/i18n/pam.json
new file mode 100644
index 00000000..b79f33c1
--- /dev/null
+++ b/ContributionScores/i18n/pam.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Katimawan2005"
+ ]
+ },
+ "contributionscores-top": "(Pekamatas a $1)",
+ "contributionscores-days": "Tauling $1 Aldo",
+ "contributionscores-allrevisions": "Eganaganang mibayu",
+ "contributionscores-pages": "Bulung",
+ "contributionscores-changes": "Miyalilan",
+ "contributionscores-username": "Lagyungtalagamit (Username)"
+}
diff --git a/ContributionScores/i18n/pdc.json b/ContributionScores/i18n/pdc.json
new file mode 100644
index 00000000..1e8b59b4
--- /dev/null
+++ b/ContributionScores/i18n/pdc.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Xqt"
+ ]
+ },
+ "contributionscores-pages": "Bledder",
+ "contributionscores-username": "Yuuser-Naame"
+}
diff --git a/ContributionScores/i18n/pdt.json b/ContributionScores/i18n/pdt.json
new file mode 100644
index 00000000..06102516
--- /dev/null
+++ b/ContributionScores/i18n/pdt.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Slomox"
+ ]
+ },
+ "contributionscores-username": "Bruckernome"
+}
diff --git a/ContributionScores/i18n/pl.json b/ContributionScores/i18n/pl.json
new file mode 100644
index 00000000..9f9a19d9
--- /dev/null
+++ b/ContributionScores/i18n/pl.json
@@ -0,0 +1,27 @@
+{
+ "@metadata": {
+ "authors": [
+ "Chrumps",
+ "Derbeth",
+ "Equadus",
+ "McMonster",
+ "Rail",
+ "Railfail536",
+ "Sp5uhe",
+ "Wpedzich"
+ ]
+ },
+ "contributionscores": "Punkty za edycje",
+ "contributionscores-desc": "Wylicza [[Special:ContributionScores|punkty za edycje]] dla użytkowników",
+ "contributionscores-info": "Wynik jest uzależniony przede wszystkim od liczby edytowanych unikalnych stron z uwzględnieniem dużej liczby edycji – zakładając wyższą wartość tworzenia nowych artykułów.",
+ "contributionscores-top": "($1 najlepszych)",
+ "contributionscores-days": "{{PLURAL:$1|Ostatni 1 dzień|Ostatnie $1 dni|Ostatnich $1 dni}}",
+ "contributionscores-allrevisions": "Cała aktywność",
+ "contributionscores-score": "Punktów",
+ "contributionscores-rank": "Ranga",
+ "contributionscores-pages": "Stron",
+ "contributionscores-changes": "Zmian",
+ "contributionscores-username": "Nazwa użytkownika",
+ "contributionscores-invalidusername": "Zła nazwa użytkownika",
+ "contributionscores-invalidmetric": "Nieprawidłowa metryka"
+}
diff --git a/ContributionScores/i18n/pms.json b/ContributionScores/i18n/pms.json
new file mode 100644
index 00000000..3972a335
--- /dev/null
+++ b/ContributionScores/i18n/pms.json
@@ -0,0 +1,21 @@
+{
+ "@metadata": {
+ "authors": [
+ "Borichèt",
+ "Bèrto 'd Sèra",
+ "Dragonòt"
+ ]
+ },
+ "contributionscores": "Classìfica dla contribussion",
+ "contributionscores-desc": "Antéroga ël database wiki an sël pì àut [[Special:ContributionScores|volum dij contribù utent]]",
+ "contributionscores-info": "Ël pontegi a mzura primariament le pàgine ùniche modificà, pijand an cont ij gròss volum ëd modìfiche.",
+ "contributionscores-top": "(Ij $1 mej)",
+ "contributionscores-days": "Ùltim Last {{PLURAL:$1|di|$1 di}}",
+ "contributionscores-allrevisions": "Tute le vire",
+ "contributionscores-score": "Puntegi",
+ "contributionscores-pages": "Pàgine",
+ "contributionscores-changes": "Cambi",
+ "contributionscores-username": "Stranòm",
+ "contributionscores-invalidusername": "Stranòm pa bon",
+ "contributionscores-invalidmetric": "Métrica pa bon-a"
+}
diff --git a/ContributionScores/i18n/pnb.json b/ContributionScores/i18n/pnb.json
new file mode 100644
index 00000000..0004a8e9
--- /dev/null
+++ b/ContributionScores/i18n/pnb.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "BukhariSaeed"
+ ]
+ },
+ "contributionscores-changes": "تبدیلیاں",
+ "contributionscores-username": "ورتن آلے دا ناں"
+}
diff --git a/ContributionScores/i18n/ps.json b/ContributionScores/i18n/ps.json
new file mode 100644
index 00000000..38cf08dc
--- /dev/null
+++ b/ContributionScores/i18n/ps.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ahmed-Najib-Biabani-Ibrahimkhel",
+ "Amjad Khan",
+ "Baloch Khan"
+ ]
+ },
+ "contributionscores-days": "وروستۍ {{PLURAL:$1|ورځ|$1 ورځې}}",
+ "contributionscores-allrevisions": "هر وخت",
+ "contributionscores-score": "سکور (ګولونه)",
+ "contributionscores-rank": "رتبه",
+ "contributionscores-pages": "مخونه",
+ "contributionscores-changes": "بدلونونه",
+ "contributionscores-username": "کارن-نوم",
+ "contributionscores-invalidusername": "ناسم کارن-نوم"
+}
diff --git a/ContributionScores/i18n/pt-br.json b/ContributionScores/i18n/pt-br.json
new file mode 100644
index 00000000..7a165f4c
--- /dev/null
+++ b/ContributionScores/i18n/pt-br.json
@@ -0,0 +1,27 @@
+{
+ "@metadata": {
+ "authors": [
+ "!Silent",
+ "Brunoy Anastasiya Seryozhenko",
+ "Crazymadlover",
+ "Eduardo.mps",
+ "Giro720",
+ "HenriqueCrang",
+ "Luckas",
+ "Opraco"
+ ]
+ },
+ "contributionscores": "Pontuação de contribuições",
+ "contributionscores-desc": "Inquire a base de dados wiki sobre os mais altos [[Special:ContributionScores|volumes de contribuição dos utilizadores]]",
+ "contributionscores-info": "A pontuação mede, principalmente, as páginas únicas editadas, tendo em consideração o alto volume de edições.",
+ "contributionscores-top": "(top $1)",
+ "contributionscores-days": "{{PLURAL:$1|Último dia|Últimos $1 dias}}",
+ "contributionscores-allrevisions": "Desde sempre",
+ "contributionscores-score": "Pontuação",
+ "contributionscores-rank": "Classificação",
+ "contributionscores-pages": "Páginas",
+ "contributionscores-changes": "Mudanças",
+ "contributionscores-username": "Nome de usuário",
+ "contributionscores-invalidusername": "Nome de usuário inválido",
+ "contributionscores-invalidmetric": "Métrica inválida"
+}
diff --git a/ContributionScores/i18n/pt.json b/ContributionScores/i18n/pt.json
new file mode 100644
index 00000000..c544056d
--- /dev/null
+++ b/ContributionScores/i18n/pt.json
@@ -0,0 +1,25 @@
+{
+ "@metadata": {
+ "authors": [
+ "Fúlvio",
+ "Hamilton Abreu",
+ "Malafaya",
+ "Vitorvicentevalente",
+ "Waldir",
+ "Waldyrious"
+ ]
+ },
+ "contributionscores": "Pontuação de contribuições",
+ "contributionscores-desc": "Inquire a base de dados wiki sobre os mais elevados [[Special:ContributionScores|volumes de contribuição dos utilizadores]]",
+ "contributionscores-info": "A pontuação mede, principalmente, as páginas únicas editadas, tendo em consideração o alto volume de edições.",
+ "contributionscores-top": "(Primeiros $1)",
+ "contributionscores-days": "{{PLURAL:$1|Último dia|Últimos $1 dias}}",
+ "contributionscores-allrevisions": "Desde sempre",
+ "contributionscores-score": "Pontuação",
+ "contributionscores-rank": "Posição",
+ "contributionscores-pages": "Páginas",
+ "contributionscores-changes": "Alterações",
+ "contributionscores-username": "Nome de utilizador",
+ "contributionscores-invalidusername": "Nome de utilizador inválido",
+ "contributionscores-invalidmetric": "Métrica inválida"
+}
diff --git a/ContributionScores/i18n/qqq.json b/ContributionScores/i18n/qqq.json
new file mode 100644
index 00000000..15c272ed
--- /dev/null
+++ b/ContributionScores/i18n/qqq.json
@@ -0,0 +1,28 @@
+{
+ "@metadata": {
+ "authors": [
+ "Jon Harald Søby",
+ "JtFuruhata",
+ "Kalan",
+ "Liuxinyu970226",
+ "Mormegil",
+ "Purodha",
+ "Raymond",
+ "Shirayuki",
+ "Tacsipacsi"
+ ]
+ },
+ "contributionscores": "{{doc-special|ContributionScores}}",
+ "contributionscores-desc": "{{desc|url=//www.mediawiki.org/wiki/Extension:Contribution_Scores|name=Contribution Scores}}",
+ "contributionscores-info": "see https://github.com/wikimedia/mediawiki-extensions-ContributionScores/blob/master/ContributionScores_body.php\n\n:COUNT(DISTINCT rev_page) AS page_count\n:COUNT(rev_id) AS rev_count\n:page_count+SQRT(rev_count-page_count)*2 AS wiki_rank",
+ "contributionscores-top": "Second part of the headings of [[Special:ContributionScores]].\n\nPLURAL is supported, but not used by the English original message.\n\nParameters:\n* $1 - limit value. Default value: 50 or 10\n{{Identical|Top}}",
+ "contributionscores-days": "Heading of [[Special:ContributionScores]].\n\nIf the number of days is not defined, {{msg-mw|Contributionscores-allrevisions}} is used.\n\nParameters:\n* $1 - number of days",
+ "contributionscores-allrevisions": "Used as a header of [[Special:ContributionScores]].\n\nSee also:\n* {{msg-mw|Contributionscores-days}}\n{{Identical|All time}}",
+ "contributionscores-score": "Used as column header of the table.\n{{Related|Contributionscores-score}}\n{{Identical|Score}}",
+ "contributionscores-rank": "{{Related|Contributionscores-score}}\n{{Identical|Rank}}",
+ "contributionscores-pages": "{{Related|Contributionscores-score}}\n{{Identical|Page}}",
+ "contributionscores-changes": "{{Related|Contributionscores-score}}\n{{Identical|Change}}",
+ "contributionscores-username": "{{Related|Contributionscores-score}}\n{{Identical|Username}}",
+ "contributionscores-invalidusername": "Used as error message if the specified username is invalid.\n\nSee example: [[Template:User Score]].\nThis template contains <code><nowiki>{{#cscore:{{PAGENAME}}|score}}</nowiki></code> and its page name is invalid as username.\n\nSee also:\n* {{msg-mw|Contributionscores-invalidmetric}}\n{{Identical|Invalid username}}",
+ "contributionscores-invalidmetric": "Used as error message if the specified metric is invalid.\n\nValid metrics are: score, changes and pages\n\nSee also:\n* {{msg-mw|Contributionscores-invalidusername}}"
+}
diff --git a/ContributionScores/i18n/qu.json b/ContributionScores/i18n/qu.json
new file mode 100644
index 00000000..9c4cba2a
--- /dev/null
+++ b/ContributionScores/i18n/qu.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "AlimanRuna"
+ ]
+ },
+ "contributionscores-days": "Qayna {{PLURAL:$1|p'unchaw|$1 p'unchawkuna}}"
+}
diff --git a/ContributionScores/i18n/ro.json b/ContributionScores/i18n/ro.json
new file mode 100644
index 00000000..a06d7182
--- /dev/null
+++ b/ContributionScores/i18n/ro.json
@@ -0,0 +1,23 @@
+{
+ "@metadata": {
+ "authors": [
+ "AlexZaim",
+ "Firilacroco",
+ "KlaudiuMihaila",
+ "Minisarm",
+ "Stelistcristi"
+ ]
+ },
+ "contributionscores": "Punctaje contribuții",
+ "contributionscores-desc": "Interoghează baza de date a wikiului pentru a găsi cel mai mare [[Special:ContributionScores|volum de contribuții ale unui utilizator]]",
+ "contributionscores-info": "Scorul măsoară în primul rând paginile unic modificate, cu considerație pentru volumul ridicat de modificări.",
+ "contributionscores-top": "(primii $1)",
+ "contributionscores-days": "{{PLURAL:$1|Ultima zi|Ultimele $1 zile}}",
+ "contributionscores-allrevisions": "Clasamentul tuturor timpurilor",
+ "contributionscores-score": "Scor",
+ "contributionscores-pages": "Pagini",
+ "contributionscores-changes": "Modificări",
+ "contributionscores-username": "Nume de utilizator",
+ "contributionscores-invalidusername": "Nume de utilizator incorect",
+ "contributionscores-invalidmetric": "Metrică incorectă"
+}
diff --git a/ContributionScores/i18n/roa-tara.json b/ContributionScores/i18n/roa-tara.json
new file mode 100644
index 00000000..045b8cf6
--- /dev/null
+++ b/ContributionScores/i18n/roa-tara.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Joetaras"
+ ]
+ },
+ "contributionscores": "Pundegge de le condrebbute",
+ "contributionscores-desc": "Le sondagge d'u database de Uicchi pe le cchiù ierte [[Special:ContributionScores|volume de condrebbuzione de l'utende]]",
+ "contributionscores-info": "De base, stu pundegge mesure apprime de tutte, le pàggene uneche cangiate, cu 'a conziderazzione pe le volume de cangiaminde ierte.",
+ "contributionscores-top": "(Le Prime $1)",
+ "contributionscores-days": "Urteme {{PLURAL:$1|sciurne|$1 sciurne}}",
+ "contributionscores-allrevisions": "Tutte 'u tiembe",
+ "contributionscores-score": "Pundegge",
+ "contributionscores-rank": "Posizione",
+ "contributionscores-pages": "Pàggene",
+ "contributionscores-changes": "Cangiaminde",
+ "contributionscores-username": "Nome de l'utende",
+ "contributionscores-invalidusername": "Nome de l'utende invalide",
+ "contributionscores-invalidmetric": "Metriche invalide"
+}
diff --git a/ContributionScores/i18n/rtm.json b/ContributionScores/i18n/rtm.json
new file mode 100644
index 00000000..e53fa0a4
--- /dev/null
+++ b/ContributionScores/i18n/rtm.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Jose77"
+ ]
+ },
+ "contributionscores-username": "Asa"
+}
diff --git a/ContributionScores/i18n/ru.json b/ContributionScores/i18n/ru.json
new file mode 100644
index 00000000..0c33bdda
--- /dev/null
+++ b/ContributionScores/i18n/ru.json
@@ -0,0 +1,26 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ahonc",
+ "Kaganer",
+ "Kalan",
+ "Lockal",
+ "Okras",
+ "Ole Yves",
+ "Александр Сигачёв"
+ ]
+ },
+ "contributionscores": "Оценка вклада",
+ "contributionscores-desc": "Определяет из базы данных [[Special:ContributionScores|участников с наибольшим числом правок]]",
+ "contributionscores-info": "Оценка рассчитывается в первую очередь по количеству отредактированных уникальных страниц, с учётом величины сделанных изменений.",
+ "contributionscores-top": "(лучшие $1)",
+ "contributionscores-days": "{{PLURAL:$1|1=Последний день|Последний $1 день|Последние $1 дня|Последние $1 дней}}",
+ "contributionscores-allrevisions": "За всё время",
+ "contributionscores-score": "Оценка",
+ "contributionscores-rank": "Ранг",
+ "contributionscores-pages": "Страниц",
+ "contributionscores-changes": "Правок",
+ "contributionscores-username": "Имя участника",
+ "contributionscores-invalidusername": "Неправильное имя участника",
+ "contributionscores-invalidmetric": "Ошибочная метрика"
+}
diff --git a/ContributionScores/i18n/rue.json b/ContributionScores/i18n/rue.json
new file mode 100644
index 00000000..8fd67736
--- /dev/null
+++ b/ContributionScores/i18n/rue.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Gazeb"
+ ]
+ },
+ "contributionscores-score": "Оцінка",
+ "contributionscores-pages": "Сторінкы",
+ "contributionscores-changes": "Зміны",
+ "contributionscores-username": "Мено хоснователя"
+}
diff --git a/ContributionScores/i18n/scn.json b/ContributionScores/i18n/scn.json
new file mode 100644
index 00000000..60cf0904
--- /dev/null
+++ b/ContributionScores/i18n/scn.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "Aushulz",
+ "Pippinu",
+ "Sarvaturi"
+ ]
+ },
+ "contributionscores": "Punteggiu pî cuntribbuti",
+ "contributionscores-desc": "Addumanna â basi di dati dâ wiki circannu l’utenti cu [[Special:ContributionScores|vulumi di cuntribbutu]] cchiù granni",
+ "contributionscores-info": "Stu punteggiu misura principalmenti la quantità di pàggini canciati, tinennu macari cuntu dî vulumi dî canciamenti granni.",
+ "contributionscores-top": "({{PLURAL:$1|Lu megghiu|Li $1 megghiu}})",
+ "contributionscores-days": "Di {{PLURAL:$1|l’ùrtimu jornu|l’ùrtimi $1 jorna}}",
+ "contributionscores-allrevisions": "Di sempri",
+ "contributionscores-score": "Punteggiu",
+ "contributionscores-rank": "Pusizzioni",
+ "contributionscores-pages": "Pàggini",
+ "contributionscores-changes": "Canciamenti",
+ "contributionscores-username": "Nomu utenti",
+ "contributionscores-invalidusername": "Nomu utenti nun vàlidu",
+ "contributionscores-invalidmetric": "Mètrica nun vàlida"
+}
diff --git a/ContributionScores/i18n/sd.json b/ContributionScores/i18n/sd.json
new file mode 100644
index 00000000..c9c9f78e
--- /dev/null
+++ b/ContributionScores/i18n/sd.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mehtab ahmed",
+ "Tweety"
+ ]
+ },
+ "contributionscores-days": "گذريل {{PLURAL:$1|ڏينھن|$1 ڏينھن}}",
+ "contributionscores-pages": "صفحا",
+ "contributionscores-changes": "بدلاءَ",
+ "contributionscores-username": "واپرائيندڙ-نانءُ"
+}
diff --git a/ContributionScores/i18n/sh.json b/ContributionScores/i18n/sh.json
new file mode 100644
index 00000000..87ffc519
--- /dev/null
+++ b/ContributionScores/i18n/sh.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Vlad5250"
+ ]
+ },
+ "contributionscores": "Ocjene za doprinose",
+ "contributionscores-desc": "Preuzima podatke s wikibaze podataka za [[Special:ContributionScores|korisnike s najviše doprinosa]]",
+ "contributionscores-info": "Saldo je mjera koja izražava uređivanja pojedinačnih stranica, uzimajući u obzir velike količine uređivanja.",
+ "contributionscores-top": "(Najboljih $1)",
+ "contributionscores-days": "{{PLURAL:$1|Posljednji $1 dan|Posljednja $1 dana|Posljednjih $1 dana}}",
+ "contributionscores-allrevisions": "Svih vremena",
+ "contributionscores-score": "Ocjena",
+ "contributionscores-rank": "Rang",
+ "contributionscores-pages": "Stranice",
+ "contributionscores-changes": "Izmjene",
+ "contributionscores-username": "Korisničko ime",
+ "contributionscores-invalidusername": "Nevaljano korisničko ime",
+ "contributionscores-invalidmetric": "Nevaljana metrika"
+}
diff --git a/ContributionScores/i18n/si.json b/ContributionScores/i18n/si.json
new file mode 100644
index 00000000..97e06ee7
--- /dev/null
+++ b/ContributionScores/i18n/si.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "පසිඳු කාවින්ද",
+ "බිඟුවා"
+ ]
+ },
+ "contributionscores": "දායකත්ව ලකුණු",
+ "contributionscores-info": "මෙම ලකුණ ප්‍රධාන වශයෙන් ඉහළ සංස්කරණ ධාරිතාවක් සඳහා සංස්කරණය කරනු ලැබූ අසමසම පිටු සමග සලකා බැලීමෙන් මනිනු ලැබේ.",
+ "contributionscores-top": "(ඉහළම $1)",
+ "contributionscores-days": "අවසන් {{PLURAL:$1|දිනයේ|දින $1}}",
+ "contributionscores-allrevisions": "හැම වෙලාවෙම",
+ "contributionscores-score": "ලකුණු",
+ "contributionscores-pages": "පිටු",
+ "contributionscores-changes": "වෙනස් කිරීම්",
+ "contributionscores-username": "පරිශීලක නාමය",
+ "contributionscores-invalidusername": "වලංගු නොවන පරිශීලක නාමය",
+ "contributionscores-invalidmetric": "වලංගු නොවන මාත්‍රිකය"
+}
diff --git a/ContributionScores/i18n/sk.json b/ContributionScores/i18n/sk.json
new file mode 100644
index 00000000..1222f1d5
--- /dev/null
+++ b/ContributionScores/i18n/sk.json
@@ -0,0 +1,21 @@
+{
+ "@metadata": {
+ "authors": [
+ "Helix84",
+ "Luky001",
+ "Teslaton"
+ ]
+ },
+ "contributionscores": "Skóre príspevkov",
+ "contributionscores-desc": "Zisťuje naväčší [[Special:ContributionScores|objem používateľských príspevkov]] z databázy wiki",
+ "contributionscores-info": "Skóre primárne meria jedinečné editované stránky s ohľadom na veľké množstvo úprav.",
+ "contributionscores-top": "(Najlepších $1)",
+ "contributionscores-days": "{{PLURAL:$1|Posledný $1 deň|Posledné $1 dni|Posledných $1 dní}}",
+ "contributionscores-allrevisions": "Celá história",
+ "contributionscores-score": "Skóre",
+ "contributionscores-pages": "Stránky",
+ "contributionscores-changes": "Zmeny",
+ "contributionscores-username": "Používateľské meno",
+ "contributionscores-invalidusername": "Neplatné používateľské meno",
+ "contributionscores-invalidmetric": "Neplatná metrika"
+}
diff --git a/ContributionScores/i18n/sl.json b/ContributionScores/i18n/sl.json
new file mode 100644
index 00000000..52c5d66f
--- /dev/null
+++ b/ContributionScores/i18n/sl.json
@@ -0,0 +1,21 @@
+{
+ "@metadata": {
+ "authors": [
+ "Dbc334",
+ "Eleassar"
+ ]
+ },
+ "contributionscores": "Rezultati prispevkov",
+ "contributionscores-desc": "V zbirki podatkov wiki poišče največjo [[Special:ContributionScores|količino prispevkov uporabnikov]]",
+ "contributionscores-info": "Rezultat prvotno meri urejanja različnih strani, z upoštevanjem velike količine urejanj.",
+ "contributionscores-top": "({{PLURAL:$1|Najvišji|Najvišja|Najvišji|Najvišjih}} $1)",
+ "contributionscores-days": "{{PLURAL:$1|Zadnji $1 dan|Zadnja $1 dneva|Zadnji $1 dnevi|Zadnjih $1 dni}}",
+ "contributionscores-allrevisions": "Vseh časov",
+ "contributionscores-score": "Rezultat",
+ "contributionscores-rank": "Uvrstitev",
+ "contributionscores-pages": "Strani",
+ "contributionscores-changes": "Spremembe",
+ "contributionscores-username": "Uporabniško ime",
+ "contributionscores-invalidusername": "Neveljavno uporabniško ime",
+ "contributionscores-invalidmetric": "Neveljavna metrika"
+}
diff --git a/ContributionScores/i18n/sr-ec.json b/ContributionScores/i18n/sr-ec.json
new file mode 100644
index 00000000..325ac8ae
--- /dev/null
+++ b/ContributionScores/i18n/sr-ec.json
@@ -0,0 +1,25 @@
+{
+ "@metadata": {
+ "authors": [
+ "Acamicamacaraca",
+ "Milicevic01",
+ "Rancher",
+ "Sasa Stefanovic",
+ "Zoranzoki21",
+ "Михајло Анђелковић"
+ ]
+ },
+ "contributionscores": "Оцене доприноса",
+ "contributionscores-desc": "Анкетира вики базу података за највиши [[Special:ContributionScores|волумен доприноса корисника]]",
+ "contributionscores-info": "Резултат првенствено мери јединствене измењене странице, узимајући у обзир велику количину уређивања.",
+ "contributionscores-top": "(првих $1)",
+ "contributionscores-days": "{{PLURAL:$1|1=Последњег дана|Последњих $1 дана}}",
+ "contributionscores-allrevisions": "Свих времена",
+ "contributionscores-score": "Резултат",
+ "contributionscores-rank": "Ранг",
+ "contributionscores-pages": "Странице",
+ "contributionscores-changes": "Измене",
+ "contributionscores-username": "Корисничко име",
+ "contributionscores-invalidusername": "Неисправно корисничко име",
+ "contributionscores-invalidmetric": "Неисправна метрика"
+}
diff --git a/ContributionScores/i18n/sr-el.json b/ContributionScores/i18n/sr-el.json
new file mode 100644
index 00000000..6a2e95e0
--- /dev/null
+++ b/ContributionScores/i18n/sr-el.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Michaello",
+ "Milicevic01"
+ ]
+ },
+ "contributionscores-top": "(prvih $1)",
+ "contributionscores-days": "{{PLURAL:$1|1=Poslednjeg dana|Poslednjih $1 dana}}",
+ "contributionscores-allrevisions": "Svih vremena",
+ "contributionscores-pages": "Stranice",
+ "contributionscores-changes": "Izmene",
+ "contributionscores-username": "Korisničko ime"
+}
diff --git a/ContributionScores/i18n/stq.json b/ContributionScores/i18n/stq.json
new file mode 100644
index 00000000..8f353215
--- /dev/null
+++ b/ContributionScores/i18n/stq.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Pyt"
+ ]
+ },
+ "contributionscores": "Benutserbiedraage ouskätsje",
+ "contributionscores-info": "Ouskätsskema:\n*1 Punkt foar älke beoarbaidede Siede\n*Quadroatwuttel fon aal do (Beoarbaidengen) - (Summe fon do beoarbaidede Sieden) * 2\nOuskätsengen ap disse Gruundloage weege ju Fuulfoold fon do Biedraage swarrer as dät Biedraachsvolumen. Disse Ouschätsenge mät do apaate Sieden, man lukt uk wäls ganse Oarbaid in Reekenge.",
+ "contributionscores-top": "(Buppeste $1)",
+ "contributionscores-days": "Lääste $1 Deege",
+ "contributionscores-allrevisions": "Aal Versione",
+ "contributionscores-score": "Skätsenge",
+ "contributionscores-pages": "Sieden",
+ "contributionscores-changes": "Annerengen",
+ "contributionscores-username": "Benutsernoome"
+}
diff --git a/ContributionScores/i18n/su.json b/ContributionScores/i18n/su.json
new file mode 100644
index 00000000..eb291f71
--- /dev/null
+++ b/ContributionScores/i18n/su.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Irwangatot",
+ "Kandar"
+ ]
+ },
+ "contributionscores": "Peunteun Kontribusi",
+ "contributionscores-desc": "Jajal pamanggih pangkalan data wiki ngeunaan [[Special:ContributionScores|eusi kontribusi pamaké]] pangpunjulna",
+ "contributionscores-info": "Peunteun diitung dumasar\n*1 peunteun pikeun unggal éditan dina kaca nu unik\n*Akar Kuadrat tina (Jumlah Éditan) - (Jumlah Kaca Unik) * 2\nPeunteun nu diitung dumasar aturan di luhur ngukur karagaman éditan tina jumlah éditan. Ieu peunteun téh utamana ngukur éditan dina kaca nu unik, kalawan dirojong ku jumlah éditan anu loba - kalawan anggapan kacana jadi leuwih alus.",
+ "contributionscores-top": "(Punclut $1)",
+ "contributionscores-days": "{{PLURAL:$1|Poé|$1 Poé}} Panungtung",
+ "contributionscores-allrevisions": "Sadaya Révisi",
+ "contributionscores-score": "Peunteun",
+ "contributionscores-pages": "Kaca",
+ "contributionscores-changes": "Parobahan",
+ "contributionscores-username": "Sandiasma",
+ "contributionscores-invalidusername": "Pamaké teu cocog",
+ "contributionscores-invalidmetric": "matrik teu cocog"
+}
diff --git a/ContributionScores/i18n/sv.json b/ContributionScores/i18n/sv.json
new file mode 100644
index 00000000..25d944d3
--- /dev/null
+++ b/ContributionScores/i18n/sv.json
@@ -0,0 +1,23 @@
+{
+ "@metadata": {
+ "authors": [
+ "Lejonel",
+ "M.M.S.",
+ "Najami",
+ "WikiPhoenix"
+ ]
+ },
+ "contributionscores": "Bidragspoäng",
+ "contributionscores-desc": "Hämtar information från databasen om de användare som gjort [[Special:ContributionScores|flest bidrag]]",
+ "contributionscores-info": "Poängen beräknar främst redigerade unika sidor, med hänsyn till höga redigeringsvolymer.",
+ "contributionscores-top": "(Topp $1)",
+ "contributionscores-days": "Senaste {{PLURAL:$1|dagen|$1 dagarna}}",
+ "contributionscores-allrevisions": "Hela tiden",
+ "contributionscores-score": "Poäng",
+ "contributionscores-rank": "Rankning",
+ "contributionscores-pages": "Sidor",
+ "contributionscores-changes": "Ändringar",
+ "contributionscores-username": "Användarnamn",
+ "contributionscores-invalidusername": "Ogiltigt användarnamn",
+ "contributionscores-invalidmetric": "Ogiltig metrisk"
+}
diff --git a/ContributionScores/i18n/ta.json b/ContributionScores/i18n/ta.json
new file mode 100644
index 00000000..3afde768
--- /dev/null
+++ b/ContributionScores/i18n/ta.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "Karthi.dr",
+ "TRYPPN",
+ "Trengarasu",
+ "Ulmo",
+ "கௌசிக் பிரபு",
+ "மதனாஹரன்"
+ ]
+ },
+ "contributionscores": "பங்களிப்புப் புள்ளிகள்",
+ "contributionscores-top": "(முதல் $1)",
+ "contributionscores-days": "கடைசி {{PLURAL:$1|நாள்|$1 நாட்கள்}}",
+ "contributionscores-allrevisions": "எல்லா திருத்தங்களும்",
+ "contributionscores-score": "புள்ளி",
+ "contributionscores-rank": "தர வரிசை",
+ "contributionscores-pages": "பக்கங்கள்",
+ "contributionscores-changes": "மாற்றங்கள்",
+ "contributionscores-username": "பயனர் பெயர்",
+ "contributionscores-invalidusername": "செல்லாத பயனர்பெயர்"
+}
diff --git a/ContributionScores/i18n/te.json b/ContributionScores/i18n/te.json
new file mode 100644
index 00000000..8e2a5219
--- /dev/null
+++ b/ContributionScores/i18n/te.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Veeven"
+ ]
+ },
+ "contributionscores-top": "(పై $1)",
+ "contributionscores-days": "చివరి {{PLURAL:$1|రోజు|$1 రోజులు}}",
+ "contributionscores-allrevisions": "ఇప్పటివరకూ",
+ "contributionscores-score": "స్కోరు",
+ "contributionscores-pages": "పేజీలు",
+ "contributionscores-changes": "మార్పులు",
+ "contributionscores-username": "వాడుకరి పేరు",
+ "contributionscores-invalidusername": "తప్పుడు వాడుకరిపేరు"
+}
diff --git a/ContributionScores/i18n/tet.json b/ContributionScores/i18n/tet.json
new file mode 100644
index 00000000..c1c65c69
--- /dev/null
+++ b/ContributionScores/i18n/tet.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "MF-Warburg"
+ ]
+ },
+ "contributionscores-pages": "Pájina sira",
+ "contributionscores-username": "Naran uza-na'in"
+}
diff --git a/ContributionScores/i18n/tg-cyrl.json b/ContributionScores/i18n/tg-cyrl.json
new file mode 100644
index 00000000..07b7b8f5
--- /dev/null
+++ b/ContributionScores/i18n/tg-cyrl.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ibrahim"
+ ]
+ },
+ "contributionscores-days": "Охирин $1 Рӯз",
+ "contributionscores-allrevisions": "Ҳамаи Нусхаҳо",
+ "contributionscores-score": "Имтиёз",
+ "contributionscores-pages": "Саҳифаҳо",
+ "contributionscores-changes": "Тағйирот",
+ "contributionscores-username": "Номи корбарӣ"
+}
diff --git a/ContributionScores/i18n/tg-latn.json b/ContributionScores/i18n/tg-latn.json
new file mode 100644
index 00000000..5e6c7e15
--- /dev/null
+++ b/ContributionScores/i18n/tg-latn.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Liangent"
+ ]
+ },
+ "contributionscores-allrevisions": "Hamai Nusxaho",
+ "contributionscores-score": "Imtijoz",
+ "contributionscores-pages": "Sahifaho",
+ "contributionscores-changes": "Taƣjirot",
+ "contributionscores-username": "Nomi korbarī"
+}
diff --git a/ContributionScores/i18n/th.json b/ContributionScores/i18n/th.json
new file mode 100644
index 00000000..b170c11f
--- /dev/null
+++ b/ContributionScores/i18n/th.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "Aefgh39622",
+ "Ans",
+ "Woraponboonkerd"
+ ]
+ },
+ "contributionscores": "คะแนนการแก้ไข",
+ "contributionscores-desc": "จัดอันดับฐานข้อมูลของวิกิสำหรับ[[Special:ContributionScores|ผู้ใ้ช้ที่มีจำนวนการแก้ไขสูงสุด]]",
+ "contributionscores-info": "คะแนนคิดจากจำนวนหน้าที่เข้าร่วมแก้ไข พร้อมพิจารณาปริมาณการแก้ไขเป็นหลัก",
+ "contributionscores-top": "($1 อันดับแรก)",
+ "contributionscores-days": "$1 {{PLURAL:$1|วัน|วัน}} ที่แล้ว",
+ "contributionscores-allrevisions": "ตลอดเวลา",
+ "contributionscores-score": "คะแนน",
+ "contributionscores-rank": "การจัดอันดับ",
+ "contributionscores-pages": "จำนวนหน้า",
+ "contributionscores-changes": "การเปลี่ยนแปลง",
+ "contributionscores-username": "ชื่อผู้ใช้",
+ "contributionscores-invalidusername": "ชื่อผู้ใช้ไม่ถูกต้อง",
+ "contributionscores-invalidmetric": "เกณฑ์ชี้วัดไม่ถูกต้อง"
+}
diff --git a/ContributionScores/i18n/ti.json b/ContributionScores/i18n/ti.json
new file mode 100644
index 00000000..31f64fa5
--- /dev/null
+++ b/ContributionScores/i18n/ti.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Joanmp17"
+ ]
+ },
+ "contributionscores-pages": "ገጻት",
+ "contributionscores-changes": "ለውጥታት",
+ "contributionscores-username": "ሽም ተጠቃሚ"
+}
diff --git a/ContributionScores/i18n/tk.json b/ContributionScores/i18n/tk.json
new file mode 100644
index 00000000..72d4b0af
--- /dev/null
+++ b/ContributionScores/i18n/tk.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Hanberke"
+ ]
+ },
+ "contributionscores-username": "Ulanyjy ady"
+}
diff --git a/ContributionScores/i18n/tl.json b/ContributionScores/i18n/tl.json
new file mode 100644
index 00000000..717f9845
--- /dev/null
+++ b/ContributionScores/i18n/tl.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "AnakngAraw"
+ ]
+ },
+ "contributionscores": "Mga puntos ng ambag",
+ "contributionscores-desc": "Tinatarahan ang kalipunan ng dato ng wiki para sa pinakamataas na [[Special:ContributionScores|dami ng ambag ng tagagamit]]",
+ "contributionscores-info": "Tinutuos ang mga puntos ayon sa sumusunod:\n*Isang (1) puntos para sa bawat bukod-tanging pahinang binago\n*Pariugat ng (kabuoang bilang ng mga pagbabagong ginawa) - (kabuoang bilang ng bukod-tanging mga pahina) * 2\nTinutuos ang mga puntos sa ganitong paraan: timbang ng pagkakaiba-iba ng pagbabago sa ibabaw ng dami ng pagbabago.\nSa kapayakan, pangunahing sinusukat ng puntos na ito ang binagong natatanging mga pahina, na may pagsasaalang-alang sa mataas na dami ng pagbago - na ipinapalagay bilang isang pahinang may mataas na uri.",
+ "contributionscores-top": "(Pinakatampok na $1)",
+ "contributionscores-days": "Huling {{PLURAL:$1|araw|$1 mga araw}}",
+ "contributionscores-allrevisions": "Lahat ng panahon",
+ "contributionscores-score": "Puntos",
+ "contributionscores-pages": "Mga pahina",
+ "contributionscores-changes": "Mga pagbabago",
+ "contributionscores-username": "Pangalan ng tagagamit",
+ "contributionscores-invalidusername": "Hindi tanggap na pangalan ng tagagamit",
+ "contributionscores-invalidmetric": "Hindi tanggap na metriko"
+}
diff --git a/ContributionScores/i18n/tr.json b/ContributionScores/i18n/tr.json
new file mode 100644
index 00000000..5e6834a0
--- /dev/null
+++ b/ContributionScores/i18n/tr.json
@@ -0,0 +1,25 @@
+{
+ "@metadata": {
+ "authors": [
+ "Hedda",
+ "Joseph",
+ "Karduelis",
+ "Mach",
+ "Suelnur",
+ "Vito Genovese"
+ ]
+ },
+ "contributionscores": "Katkı puanları",
+ "contributionscores-desc": "En yüksek [[Special:ContributionScores|kullanıcı katkı hacmi]] için viki veritabanını sorgular",
+ "contributionscores-info": "Puanlama, öncelikle yüksek düzenleme hacmi dikkate alınarak düzenlenmiş benzersiz sayfaları ölçer.",
+ "contributionscores-top": "(Zirvedeki $1 kişi)",
+ "contributionscores-days": "Son $1 {{PLURAL:$1|gün|gün}}",
+ "contributionscores-allrevisions": "Tüm zamanlar",
+ "contributionscores-score": "Puan",
+ "contributionscores-rank": "Sıralama",
+ "contributionscores-pages": "Sayfalar",
+ "contributionscores-changes": "Değişiklikler",
+ "contributionscores-username": "Kullanıcı adı",
+ "contributionscores-invalidusername": "Geçersiz kullanıcı adı",
+ "contributionscores-invalidmetric": "Geçersiz metrik"
+}
diff --git a/ContributionScores/i18n/tt-cyrl.json b/ContributionScores/i18n/tt-cyrl.json
new file mode 100644
index 00000000..ad4c01f5
--- /dev/null
+++ b/ContributionScores/i18n/tt-cyrl.json
@@ -0,0 +1,21 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ерней",
+ "Ильнар"
+ ]
+ },
+ "contributionscores": "Кертем билгеләү",
+ "contributionscores-desc": "Хәтердән [[Special:ContributionScores|иң зур тәрҗемә ясаучы кулланучыларны]] билгели.",
+ "contributionscores-info": "Билгеләр кую, беренче чиратта, үзгәртелгән мәкаләләр санына һәм аларның күләменә карап бирелә.",
+ "contributionscores-top": "(Иң әйбәт $1)",
+ "contributionscores-days": "Соңгы {{PLURAL:$1|$1 көн өчен}}",
+ "contributionscores-allrevisions": "Бөтен вакыт өчен",
+ "contributionscores-score": "Бәя",
+ "contributionscores-rank": "Ранг",
+ "contributionscores-pages": "Битләр",
+ "contributionscores-changes": "Төзәтмәләр",
+ "contributionscores-username": "Кулланучы исеме",
+ "contributionscores-invalidusername": "Кулланучының исеме дөрес түгел",
+ "contributionscores-invalidmetric": "Ялгыш билгеләү"
+}
diff --git a/ContributionScores/i18n/ug-arab.json b/ContributionScores/i18n/ug-arab.json
new file mode 100644
index 00000000..854fba18
--- /dev/null
+++ b/ContributionScores/i18n/ug-arab.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Alfredie"
+ ]
+ },
+ "contributionscores-username": "ئىشلەتكۇچى ئىسمى"
+}
diff --git a/ContributionScores/i18n/ug-latn.json b/ContributionScores/i18n/ug-latn.json
new file mode 100644
index 00000000..f013b824
--- /dev/null
+++ b/ContributionScores/i18n/ug-latn.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Jose77"
+ ]
+ },
+ "contributionscores-username": "Ishletkuchi ismi"
+}
diff --git a/ContributionScores/i18n/uk.json b/ContributionScores/i18n/uk.json
new file mode 100644
index 00000000..77bd8611
--- /dev/null
+++ b/ContributionScores/i18n/uk.json
@@ -0,0 +1,25 @@
+{
+ "@metadata": {
+ "authors": [
+ "AS",
+ "Ahonc",
+ "Andriykopanytsia",
+ "Prima klasy4na",
+ "Ата",
+ "Тест"
+ ]
+ },
+ "contributionscores": "Оцінка внеску",
+ "contributionscores-desc": "Визначає з бази даних [[Special:ContributionScores|користувачів з найбільшою кількістю редагувань]]",
+ "contributionscores-info": "При підрахунку оцінки велика вага надається розмаїттю редагувань, враховується і загальна кількість.",
+ "contributionscores-top": "($1 {{PLURAL:$1|1=найкращий|найкращих}})",
+ "contributionscores-days": "{{PLURAL:$1|Останній день|Останні $1 дні|Останні $1 днів}}",
+ "contributionscores-allrevisions": "Весь час",
+ "contributionscores-score": "Оцінка",
+ "contributionscores-rank": "Ранг",
+ "contributionscores-pages": "Сторінок",
+ "contributionscores-changes": "Редагувань",
+ "contributionscores-username": "Ім'я користувача",
+ "contributionscores-invalidusername": "Неправильне ім'я користувача",
+ "contributionscores-invalidmetric": "Неправильна метрика"
+}
diff --git a/ContributionScores/i18n/ur.json b/ContributionScores/i18n/ur.json
new file mode 100644
index 00000000..8580c3a7
--- /dev/null
+++ b/ContributionScores/i18n/ur.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "පසිඳු කාවින්ද"
+ ]
+ },
+ "contributionscores-allrevisions": "تمام وقت",
+ "contributionscores-score": "سکور",
+ "contributionscores-pages": "صفحات",
+ "contributionscores-changes": "تبدیلیاں",
+ "contributionscores-username": "صارف کا نام",
+ "contributionscores-invalidusername": "باطل کے صارف کا نام"
+}
diff --git a/ContributionScores/i18n/vec.json b/ContributionScores/i18n/vec.json
new file mode 100644
index 00000000..e77e44da
--- /dev/null
+++ b/ContributionScores/i18n/vec.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Candalua",
+ "Fierodelveneto"
+ ]
+ },
+ "contributionscores": "Ponteji contribusion",
+ "contributionscores-desc": "Intèroga el database de la wiki par el pi grando [[Special:ContributionScores|volume de contributi utente]]",
+ "contributionscores-info": "I punti i vien calcolà come segue:\n*Un (1) punto par ogni diversa pagina modificà\n*Raìsa quadrata de (Tute le modifiche fate) - (Total de le pagine modificà) * 2\nFasendo i conti in sta maniera pesa piassè la diversità de le modifiche rispeto al nùmaro dei contributi.\nIn sostansa, sto puntegio el tien conto sopratuto de le diverse pagine modificà, tegnendo in considerazion anca un alto volume de modifiche - che fa pensar a na pi alta qualità de la pagina modificà.",
+ "contributionscores-top": "(Ultimi $1)",
+ "contributionscores-days": "{{PLURAL:$1|Ultimo zòrno|Ultimi $1 zòrni}}",
+ "contributionscores-allrevisions": "Tute le revision",
+ "contributionscores-score": "Puntegio",
+ "contributionscores-pages": "Pàjine",
+ "contributionscores-changes": "Canbiamenti",
+ "contributionscores-username": "Nome utente",
+ "contributionscores-invalidusername": "Nome utente mia valido",
+ "contributionscores-invalidmetric": "Metrica mia valida"
+}
diff --git a/ContributionScores/i18n/vep.json b/ContributionScores/i18n/vep.json
new file mode 100644
index 00000000..185acf36
--- /dev/null
+++ b/ContributionScores/i18n/vep.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Игорь Бродский"
+ ]
+ },
+ "contributionscores": "Tondan arvoind",
+ "contributionscores-desc": "Märičeb [[Special:ContributionScores|kävutajid, kel om enamba redaktiruindad,]] andmuzbazan turbiš",
+ "contributionscores-info": "Arvsana lugedas ezmäks unikaližiden redaktiruidud lehtpoliden lugun mödhe; sidaig ottas sil'mnägubale redaktiruindan surembad mülüd.",
+ "contributionscores-top": "($1 parembad)",
+ "contributionscores-days": "{{PLURAL:$1|jäl'gmäine päiv|$1 jäl'gmäšt päiväd}}",
+ "contributionscores-allrevisions": "Kaikes aigas",
+ "contributionscores-score": "Punktad",
+ "contributionscores-rank": "Rang",
+ "contributionscores-pages": "Lehtpol't",
+ "contributionscores-changes": "Toižetusid",
+ "contributionscores-username": "Kävutajannimi",
+ "contributionscores-invalidusername": "Vär kävutajannimi",
+ "contributionscores-invalidmetric": "Petuzline metrik"
+}
diff --git a/ContributionScores/i18n/vi.json b/ContributionScores/i18n/vi.json
new file mode 100644
index 00000000..f0a639c1
--- /dev/null
+++ b/ContributionScores/i18n/vi.json
@@ -0,0 +1,21 @@
+{
+ "@metadata": {
+ "authors": [
+ "Minh Nguyen",
+ "Phjtieudoc",
+ "Vinhtantran"
+ ]
+ },
+ "contributionscores": "Điểm số đóng góp",
+ "contributionscores-desc": "Truy xuất cơ sở dữ liệu wiki để xem [[Special:ContributionScores|mức đóng góp]] cao nhất của thành viên",
+ "contributionscores-info": "Điểm số này chủ yếu đo số trang riêng lẻ được sửa đổi, có xét thêm mức độ sửa đổi cao.",
+ "contributionscores-top": "(Tốp $1)",
+ "contributionscores-days": "{{PLURAL:$1|Ngày|$1 ngày}} qua",
+ "contributionscores-allrevisions": "Từ trước đến nay",
+ "contributionscores-score": "Điểm số",
+ "contributionscores-pages": "Trang",
+ "contributionscores-changes": "Thay đổi",
+ "contributionscores-username": "Tên người dùng",
+ "contributionscores-invalidusername": "Tên người dùng không hợp lệ",
+ "contributionscores-invalidmetric": "Chuẩn đo không hợp lệ"
+}
diff --git a/ContributionScores/i18n/vo.json b/ContributionScores/i18n/vo.json
new file mode 100644
index 00000000..f83bd606
--- /dev/null
+++ b/ContributionScores/i18n/vo.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Malafaya",
+ "Smeira"
+ ]
+ },
+ "contributionscores-days": "{{PLURAL:$1|Del|Dels}} lätik $1",
+ "contributionscores-allrevisions": "Revids valik",
+ "contributionscores-pages": "Pads",
+ "contributionscores-changes": "Votükams",
+ "contributionscores-username": "Gebananem"
+}
diff --git a/ContributionScores/i18n/wa.json b/ContributionScores/i18n/wa.json
new file mode 100644
index 00000000..e4014b97
--- /dev/null
+++ b/ContributionScores/i18n/wa.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Srtxg"
+ ]
+ },
+ "contributionscores": "Ponts des contribouwaedjes",
+ "contributionscores-desc": "Riwaite li båze di dnêyes po les [[Special:ContributionScores|uzeus avou l' meyeu livea d' contribouwaedje]]",
+ "contributionscores-info": "Les ponts sont carculés come shût:\n* On (1) pont po tchaeke pådje unike k' on candjmint î a stî fwait\n* Li cwårêye raecene di (nombe di candjmints) - (nombe totå di pådjes unikes) * 2\n\nDi cisse manire on dene pus di pontiaedje al varyisté des contribouwaedjes k' a leu cwantité.\nPo l' dire pus simplumint, ci pontiaedje ci mezeure copurade li nombe di pådejs diferinnes di candjeyes, et poy seulmint li cwantité di candjmints diferins.",
+ "contributionscores-top": "(les $1 meyeus)",
+ "contributionscores-days": "{{PLURAL:$1|Sol dierin djoû|So les $1 dierins djoûs}}",
+ "contributionscores-allrevisions": "Dispoy todi",
+ "contributionscores-score": "Ponts",
+ "contributionscores-pages": "Pådjes",
+ "contributionscores-changes": "Candjmints",
+ "contributionscores-username": "No d' uzeu:",
+ "contributionscores-invalidusername": "No d' uzeu nén valide",
+ "contributionscores-invalidmetric": "Metrike nén valide"
+}
diff --git a/ContributionScores/i18n/yi.json b/ContributionScores/i18n/yi.json
new file mode 100644
index 00000000..2985670b
--- /dev/null
+++ b/ContributionScores/i18n/yi.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "פוילישער"
+ ]
+ },
+ "contributionscores-days": "{{PLURAL:$1|לעצטן טאָג|לעצטע $1 טעג}}",
+ "contributionscores-pages": "בלעטער",
+ "contributionscores-username": "באַניצער נאָמען"
+}
diff --git a/ContributionScores/i18n/yue.json b/ContributionScores/i18n/yue.json
new file mode 100644
index 00000000..30339ed8
--- /dev/null
+++ b/ContributionScores/i18n/yue.json
@@ -0,0 +1,23 @@
+{
+ "@metadata": {
+ "authors": [
+ "PhiLiP",
+ "Shinjiman",
+ "Shirayuki",
+ "Yueman"
+ ]
+ },
+ "contributionscores": "貢獻分數",
+ "contributionscores-desc": "根據響wiki數據庫畀出最高嘅[[Special:ContributionScores|用戶貢獻容量]]",
+ "contributionscores-info": "呢個分數係會依主要嘅唯一編輯過嘅頁,同埋考慮高編輯量。",
+ "contributionscores-top": "(最高$1名)",
+ "contributionscores-days": "最近$1日",
+ "contributionscores-allrevisions": "全部時間",
+ "contributionscores-score": "分數",
+ "contributionscores-rank": "等級",
+ "contributionscores-pages": "版",
+ "contributionscores-changes": "更改",
+ "contributionscores-username": "用戶名",
+ "contributionscores-invalidusername": "無效嘅用戶名",
+ "contributionscores-invalidmetric": "無效嘅公制"
+}
diff --git a/ContributionScores/i18n/zh-hans.json b/ContributionScores/i18n/zh-hans.json
new file mode 100644
index 00000000..1777bfaf
--- /dev/null
+++ b/ContributionScores/i18n/zh-hans.json
@@ -0,0 +1,25 @@
+{
+ "@metadata": {
+ "authors": [
+ "Dimension",
+ "Hydra",
+ "Liuxinyu970226",
+ "PhiLiP",
+ "Shinjiman",
+ "Shirayuki"
+ ]
+ },
+ "contributionscores": "贡献分数",
+ "contributionscores-desc": "根据在wiki数据库中给出最高的[[Special:ContributionScores|用户贡献容量]]",
+ "contributionscores-info": "得分主要考量具有独特性的编辑,同时考虑编辑量。",
+ "contributionscores-top": "(最高$1名)",
+ "contributionscores-days": "最近$1天",
+ "contributionscores-allrevisions": "所有的时间",
+ "contributionscores-score": "分数",
+ "contributionscores-rank": "排名",
+ "contributionscores-pages": "页面",
+ "contributionscores-changes": "更改",
+ "contributionscores-username": "用户名",
+ "contributionscores-invalidusername": "无效的用户名",
+ "contributionscores-invalidmetric": "无效的公制"
+}
diff --git a/ContributionScores/i18n/zh-hant.json b/ContributionScores/i18n/zh-hant.json
new file mode 100644
index 00000000..282e7692
--- /dev/null
+++ b/ContributionScores/i18n/zh-hant.json
@@ -0,0 +1,28 @@
+{
+ "@metadata": {
+ "authors": [
+ "Cwlin0416",
+ "Kly",
+ "LNDDYL",
+ "Liuxinyu970226",
+ "Mark85296341",
+ "PhiLiP",
+ "Shinjiman",
+ "Shirayuki",
+ "Simon Shek"
+ ]
+ },
+ "contributionscores": "貢獻分數",
+ "contributionscores-desc": "調查 Wiki 資料庫中[[Special:ContributionScores|貢獻最多的使用者]]",
+ "contributionscores-info": "此分數主要以編輯個別頁面數量計算並考慮編輯次數。",
+ "contributionscores-top": "(前 $1 名)",
+ "contributionscores-days": "最近 {{PLURAL:$1|天|$1 天}}",
+ "contributionscores-allrevisions": "所有時間",
+ "contributionscores-score": "分數",
+ "contributionscores-rank": "等級",
+ "contributionscores-pages": "頁面數量",
+ "contributionscores-changes": "修改次數",
+ "contributionscores-username": "使用者名稱",
+ "contributionscores-invalidusername": "無效的使用者名稱",
+ "contributionscores-invalidmetric": "無效的計算單位"
+}
diff --git a/ContributionScores/i18n/zh-hk.json b/ContributionScores/i18n/zh-hk.json
new file mode 100644
index 00000000..340fcb1e
--- /dev/null
+++ b/ContributionScores/i18n/zh-hk.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Liuxinyu970226"
+ ]
+ },
+ "contributionscores-username": "用戶名稱"
+}
diff --git a/ContributionScores/package-lock.json b/ContributionScores/package-lock.json
new file mode 100644
index 00000000..2394240e
--- /dev/null
+++ b/ContributionScores/package-lock.json
@@ -0,0 +1,4241 @@
+{
+ "name": "ContributionScores",
+ "lockfileVersion": 2,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "ContributionScores",
+ "devDependencies": {
+ "eslint-config-wikimedia": "0.15.3",
+ "grunt": "1.5.3",
+ "grunt-banana-checker": "0.9.0",
+ "grunt-eslint": "22.0.0"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
+ "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/highlight": "^7.8.3"
+ }
+ },
+ "node_modules/@babel/highlight": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz",
+ "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^2.0.0",
+ "esutils": "^2.0.2",
+ "js-tokens": "^4.0.0"
+ }
+ },
+ "node_modules/abbrev": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
+ "dev": true
+ },
+ "node_modules/acorn": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz",
+ "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==",
+ "dev": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-jsx": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz",
+ "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==",
+ "dev": true
+ },
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ansi-escapes": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.0.tgz",
+ "integrity": "sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg==",
+ "dev": true,
+ "dependencies": {
+ "type-fest": "^0.8.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "dependencies": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "node_modules/array-each": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz",
+ "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/array-slice": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz",
+ "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/astral-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
+ "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/async": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz",
+ "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==",
+ "dev": true
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+ "dev": true
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "dev": true,
+ "dependencies": {
+ "fill-range": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/chardet": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
+ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
+ "dev": true
+ },
+ "node_modules/cli-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
+ "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
+ "dev": true,
+ "dependencies": {
+ "restore-cursor": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cli-width": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
+ "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
+ "dev": true
+ },
+ "node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
+ "node_modules/colors": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
+ "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.1.90"
+ }
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+ "dev": true
+ },
+ "node_modules/cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dev": true,
+ "dependencies": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ },
+ "engines": {
+ "node": ">=4.8"
+ }
+ },
+ "node_modules/cross-spawn/node_modules/semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/dateformat": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz",
+ "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/deep-is": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
+ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
+ "dev": true
+ },
+ "node_modules/detect-file": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
+ "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/eslint": {
+ "version": "6.8.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz",
+ "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.0.0",
+ "ajv": "^6.10.0",
+ "chalk": "^2.1.0",
+ "cross-spawn": "^6.0.5",
+ "debug": "^4.0.1",
+ "doctrine": "^3.0.0",
+ "eslint-scope": "^5.0.0",
+ "eslint-utils": "^1.4.3",
+ "eslint-visitor-keys": "^1.1.0",
+ "espree": "^6.1.2",
+ "esquery": "^1.0.1",
+ "esutils": "^2.0.2",
+ "file-entry-cache": "^5.0.1",
+ "functional-red-black-tree": "^1.0.1",
+ "glob-parent": "^5.0.0",
+ "globals": "^12.1.0",
+ "ignore": "^4.0.6",
+ "import-fresh": "^3.0.0",
+ "imurmurhash": "^0.1.4",
+ "inquirer": "^7.0.0",
+ "is-glob": "^4.0.0",
+ "js-yaml": "^3.13.1",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.3.0",
+ "lodash": "^4.17.14",
+ "minimatch": "^3.0.4",
+ "mkdirp": "^0.5.1",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.8.3",
+ "progress": "^2.0.0",
+ "regexpp": "^2.0.1",
+ "semver": "^6.1.2",
+ "strip-ansi": "^5.2.0",
+ "strip-json-comments": "^3.0.1",
+ "table": "^5.2.3",
+ "text-table": "^0.2.0",
+ "v8-compile-cache": "^2.0.3"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
+ },
+ "engines": {
+ "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
+ }
+ },
+ "node_modules/eslint-config-wikimedia": {
+ "version": "0.15.3",
+ "resolved": "https://registry.npmjs.org/eslint-config-wikimedia/-/eslint-config-wikimedia-0.15.3.tgz",
+ "integrity": "sha512-MGfUwNoW2IckRismX3L8a/CI1CKkYyXHiIyAqiu27TCQwrDubryI+rtuuFYozauB3LC5WSIOnW2m1ZljtPvPPg==",
+ "dev": true,
+ "dependencies": {
+ "eslint": "^6.8.0",
+ "eslint-plugin-es": "^3.0.0",
+ "eslint-plugin-json": "^2.1.1",
+ "eslint-plugin-mediawiki": "^0.2.3",
+ "eslint-plugin-no-jquery": "^2.3.2",
+ "eslint-plugin-qunit": "^4.0.0",
+ "eslint-plugin-vue": "^6.1.2"
+ }
+ },
+ "node_modules/eslint-plugin-es": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.0.tgz",
+ "integrity": "sha512-6/Jb/J/ZvSebydwbBJO1R9E5ky7YeElfK56Veh7e4QGFHCXoIXGH9HhVz+ibJLM3XJ1XjP+T7rKBLUa/Y7eIng==",
+ "dev": true,
+ "dependencies": {
+ "eslint-utils": "^2.0.0",
+ "regexpp": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/eslint-plugin-es/node_modules/eslint-utils": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.0.0.tgz",
+ "integrity": "sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA==",
+ "dev": true,
+ "dependencies": {
+ "eslint-visitor-keys": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/eslint-plugin-es/node_modules/regexpp": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz",
+ "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/eslint-plugin-json": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-json/-/eslint-plugin-json-2.1.1.tgz",
+ "integrity": "sha512-Ktsab8ij33V2KFLhh4alC1FYztdmbV32DeMZYYUCZm4kKLW1s4DrleKKgtbAHSJsmshCK5QGOZtfyc2r3jCRsg==",
+ "dev": true,
+ "dependencies": {
+ "lodash": "^4.17.15",
+ "vscode-json-languageservice": "^3.5.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/eslint-plugin-mediawiki": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-mediawiki/-/eslint-plugin-mediawiki-0.2.3.tgz",
+ "integrity": "sha512-/6CB/VdwZHIsPZ5gZJ3amwHUbEgbL6DZULXWTRwKoS+2q5t8TS1hu+EX83a1hPrxGWFusfV+bvgOi15aXVXi4Q==",
+ "dev": true,
+ "dependencies": {
+ "eslint-plugin-vue": "^6.2.2"
+ }
+ },
+ "node_modules/eslint-plugin-no-jquery": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-no-jquery/-/eslint-plugin-no-jquery-2.3.2.tgz",
+ "integrity": "sha512-8M9GByb/JOO+dktgbFeC/YAMaqlscInO3fH3A9fLxZduH1NTXsIAUrimas6zDwOLBvEXpRaEZycc2QAl+W+Agw==",
+ "dev": true
+ },
+ "node_modules/eslint-plugin-qunit": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-qunit/-/eslint-plugin-qunit-4.0.0.tgz",
+ "integrity": "sha512-+0i2xcYryUoLawi47Lp0iJKzkP931G5GXwIOq1KBKQc2pknV1VPjfE6b4mI2mR2RnL7WRoS30YjwC9SjQgJDXQ==",
+ "dev": true,
+ "engines": {
+ "node": "6.x || 8.x || >=10.0.0"
+ }
+ },
+ "node_modules/eslint-plugin-vue": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-6.2.2.tgz",
+ "integrity": "sha512-Nhc+oVAHm0uz/PkJAWscwIT4ijTrK5fqNqz9QB1D35SbbuMG1uB6Yr5AJpvPSWg+WOw7nYNswerYh0kOk64gqQ==",
+ "dev": true,
+ "dependencies": {
+ "natural-compare": "^1.4.0",
+ "semver": "^5.6.0",
+ "vue-eslint-parser": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.10"
+ }
+ },
+ "node_modules/eslint-plugin-vue/node_modules/semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/eslint-scope": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz",
+ "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==",
+ "dev": true,
+ "dependencies": {
+ "esrecurse": "^4.1.0",
+ "estraverse": "^4.1.1"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/eslint-utils": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz",
+ "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==",
+ "dev": true,
+ "dependencies": {
+ "eslint-visitor-keys": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/eslint-visitor-keys": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz",
+ "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/espree": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.2.tgz",
+ "integrity": "sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^7.1.0",
+ "acorn-jsx": "^5.1.0",
+ "eslint-visitor-keys": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true,
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/esquery": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz",
+ "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
+ "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/eventemitter2": {
+ "version": "0.4.14",
+ "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz",
+ "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=",
+ "dev": true
+ },
+ "node_modules/exit": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
+ "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/expand-tilde": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
+ "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
+ "dev": true,
+ "dependencies": {
+ "homedir-polyfill": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+ "dev": true
+ },
+ "node_modules/external-editor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
+ "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
+ "dev": true,
+ "dependencies": {
+ "chardet": "^0.7.0",
+ "iconv-lite": "^0.4.24",
+ "tmp": "^0.0.33"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz",
+ "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==",
+ "dev": true
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
+ "dev": true
+ },
+ "node_modules/figures": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-3.1.0.tgz",
+ "integrity": "sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==",
+ "dev": true,
+ "dependencies": {
+ "escape-string-regexp": "^1.0.5"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/file-entry-cache": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
+ "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
+ "dev": true,
+ "dependencies": {
+ "flat-cache": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "dev": true,
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/findup-sync": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz",
+ "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=",
+ "dev": true,
+ "dependencies": {
+ "glob": "~5.0.0"
+ },
+ "engines": {
+ "node": ">= 0.6.0"
+ }
+ },
+ "node_modules/findup-sync/node_modules/glob": {
+ "version": "5.0.15",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
+ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
+ "dev": true,
+ "dependencies": {
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "2 || 3",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/fined": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz",
+ "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==",
+ "dev": true,
+ "dependencies": {
+ "expand-tilde": "^2.0.2",
+ "is-plain-object": "^2.0.3",
+ "object.defaults": "^1.1.0",
+ "object.pick": "^1.2.0",
+ "parse-filepath": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/flagged-respawn": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz",
+ "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/flat-cache": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
+ "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
+ "dev": true,
+ "dependencies": {
+ "flatted": "^2.0.0",
+ "rimraf": "2.6.3",
+ "write": "1.0.3"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/flatted": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz",
+ "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==",
+ "dev": true
+ },
+ "node_modules/for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/for-own": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
+ "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
+ "dev": true,
+ "dependencies": {
+ "for-in": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+ "dev": true
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "dev": true
+ },
+ "node_modules/functional-red-black-tree": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
+ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
+ "dev": true
+ },
+ "node_modules/getobject": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/getobject/-/getobject-1.0.0.tgz",
+ "integrity": "sha512-tbUz6AKKKr2YiMB+fLWIgq5ZeBOobop9YMMAU9dC54/ot2ksMXt3DOFyBuhZw6ptcVszEykgByK20j7W9jHFag==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/glob": {
+ "version": "7.1.6",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
+ "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/global-modules": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
+ "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
+ "dev": true,
+ "dependencies": {
+ "global-prefix": "^1.0.1",
+ "is-windows": "^1.0.1",
+ "resolve-dir": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/global-prefix": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
+ "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=",
+ "dev": true,
+ "dependencies": {
+ "expand-tilde": "^2.0.2",
+ "homedir-polyfill": "^1.0.1",
+ "ini": "^1.3.4",
+ "is-windows": "^1.0.1",
+ "which": "^1.2.14"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/globals": {
+ "version": "12.3.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-12.3.0.tgz",
+ "integrity": "sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw==",
+ "dev": true,
+ "dependencies": {
+ "type-fest": "^0.8.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/grunt": {
+ "version": "1.5.3",
+ "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.5.3.tgz",
+ "integrity": "sha512-mKwmo4X2d8/4c/BmcOETHek675uOqw0RuA/zy12jaspWqvTp4+ZeQF1W+OTpcbncnaBsfbQJ6l0l4j+Sn/GmaQ==",
+ "dev": true,
+ "dependencies": {
+ "dateformat": "~3.0.3",
+ "eventemitter2": "~0.4.13",
+ "exit": "~0.1.2",
+ "findup-sync": "~0.3.0",
+ "glob": "~7.1.6",
+ "grunt-cli": "~1.4.3",
+ "grunt-known-options": "~2.0.0",
+ "grunt-legacy-log": "~3.0.0",
+ "grunt-legacy-util": "~2.0.1",
+ "iconv-lite": "~0.4.13",
+ "js-yaml": "~3.14.0",
+ "minimatch": "~3.0.4",
+ "mkdirp": "~1.0.4",
+ "nopt": "~3.0.6",
+ "rimraf": "~3.0.2"
+ },
+ "bin": {
+ "grunt": "bin/grunt"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/grunt-banana-checker": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/grunt-banana-checker/-/grunt-banana-checker-0.9.0.tgz",
+ "integrity": "sha512-SqPiB6OazWqR8USL0NymtuT5Br3mD9WBBsM1rHC/3wIi2SrZNM6/+j9CIeuEM5oCn+AtO2Y0+rzzFyOdC9afAg==",
+ "dev": true,
+ "bin": {
+ "banana-checker": "src/cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/grunt-cli": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.4.3.tgz",
+ "integrity": "sha512-9Dtx/AhVeB4LYzsViCjUQkd0Kw0McN2gYpdmGYKtE2a5Yt7v1Q+HYZVWhqXc/kGnxlMtqKDxSwotiGeFmkrCoQ==",
+ "dev": true,
+ "dependencies": {
+ "grunt-known-options": "~2.0.0",
+ "interpret": "~1.1.0",
+ "liftup": "~3.0.1",
+ "nopt": "~4.0.1",
+ "v8flags": "~3.2.0"
+ },
+ "bin": {
+ "grunt": "bin/grunt"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/grunt-cli/node_modules/nopt": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz",
+ "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==",
+ "dev": true,
+ "dependencies": {
+ "abbrev": "1",
+ "osenv": "^0.1.4"
+ },
+ "bin": {
+ "nopt": "bin/nopt.js"
+ }
+ },
+ "node_modules/grunt-eslint": {
+ "version": "22.0.0",
+ "resolved": "https://registry.npmjs.org/grunt-eslint/-/grunt-eslint-22.0.0.tgz",
+ "integrity": "sha512-I7vIU4x/mb20fmA6TAmLx6Wzn7mfs8ZXeuk7LbP2ujKVFV7KZmJ3qXUyqe2wnD+v/74Rs5uYOZrLL8EoBmlG9Q==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^2.1.0",
+ "eslint": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/grunt-known-options": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-2.0.0.tgz",
+ "integrity": "sha512-GD7cTz0I4SAede1/+pAbmJRG44zFLPipVtdL9o3vqx9IEyb7b4/Y3s7r6ofI3CchR5GvYJ+8buCSioDv5dQLiA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/grunt-legacy-log": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-3.0.0.tgz",
+ "integrity": "sha512-GHZQzZmhyq0u3hr7aHW4qUH0xDzwp2YXldLPZTCjlOeGscAOWWPftZG3XioW8MasGp+OBRIu39LFx14SLjXRcA==",
+ "dev": true,
+ "dependencies": {
+ "colors": "~1.1.2",
+ "grunt-legacy-log-utils": "~2.1.0",
+ "hooker": "~0.2.3",
+ "lodash": "~4.17.19"
+ },
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
+ "node_modules/grunt-legacy-log-utils": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.1.0.tgz",
+ "integrity": "sha512-lwquaPXJtKQk0rUM1IQAop5noEpwFqOXasVoedLeNzaibf/OPWjKYvvdqnEHNmU+0T0CaReAXIbGo747ZD+Aaw==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "~4.1.0",
+ "lodash": "~4.17.19"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/grunt-legacy-log-utils/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/grunt-legacy-log-utils/node_modules/chalk": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
+ "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/grunt-legacy-log-utils/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/grunt-legacy-log-utils/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/grunt-legacy-log-utils/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/grunt-legacy-log-utils/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/grunt-legacy-util": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-2.0.1.tgz",
+ "integrity": "sha512-2bQiD4fzXqX8rhNdXkAywCadeqiPiay0oQny77wA2F3WF4grPJXCvAcyoWUJV+po/b15glGkxuSiQCK299UC2w==",
+ "dev": true,
+ "dependencies": {
+ "async": "~3.2.0",
+ "exit": "~0.1.2",
+ "getobject": "~1.0.0",
+ "hooker": "~0.2.3",
+ "lodash": "~4.17.21",
+ "underscore.string": "~3.3.5",
+ "which": "~2.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/grunt-legacy-util/node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/grunt/node_modules/js-yaml": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/grunt/node_modules/mkdirp": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "dev": true,
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/grunt/node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ }
+ },
+ "node_modules/has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/homedir-polyfill": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
+ "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==",
+ "dev": true,
+ "dependencies": {
+ "parse-passwd": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/hooker": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz",
+ "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dev": true,
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ignore": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
+ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/import-fresh": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz",
+ "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==",
+ "dev": true,
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "dev": true,
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "node_modules/ini": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+ "dev": true
+ },
+ "node_modules/inquirer": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.4.tgz",
+ "integrity": "sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-escapes": "^4.2.1",
+ "chalk": "^2.4.2",
+ "cli-cursor": "^3.1.0",
+ "cli-width": "^2.0.0",
+ "external-editor": "^3.0.3",
+ "figures": "^3.0.0",
+ "lodash": "^4.17.15",
+ "mute-stream": "0.0.8",
+ "run-async": "^2.2.0",
+ "rxjs": "^6.5.3",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^5.1.0",
+ "through": "^2.3.6"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/interpret": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz",
+ "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=",
+ "dev": true
+ },
+ "node_modules/is-absolute": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz",
+ "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==",
+ "dev": true,
+ "dependencies": {
+ "is-relative": "^1.0.0",
+ "is-windows": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-core-module": {
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz",
+ "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==",
+ "dev": true,
+ "dependencies": {
+ "has": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
+ "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
+ "dev": true,
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-promise": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
+ "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
+ "dev": true
+ },
+ "node_modules/is-relative": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz",
+ "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==",
+ "dev": true,
+ "dependencies": {
+ "is-unc-path": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-unc-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz",
+ "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==",
+ "dev": true,
+ "dependencies": {
+ "unc-path-regex": "^0.1.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-windows": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+ "dev": true
+ },
+ "node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true
+ },
+ "node_modules/js-yaml": {
+ "version": "3.13.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
+ "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
+ },
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
+ "dev": true
+ },
+ "node_modules/jsonc-parser": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.2.1.tgz",
+ "integrity": "sha512-o6/yDBYccGvTz1+QFevz6l6OBZ2+fMVu2JZ9CIhzsYRX4mjaK5IyX9eldUdCmga16zlgQxyrj5pt9kzuj2C02w==",
+ "dev": true
+ },
+ "node_modules/kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/levn": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/liftup": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/liftup/-/liftup-3.0.1.tgz",
+ "integrity": "sha512-yRHaiQDizWSzoXk3APcA71eOI/UuhEkNN9DiW2Tt44mhYzX4joFoCZlxsSOF7RyeLlfqzFLQI1ngFq3ggMPhOw==",
+ "dev": true,
+ "dependencies": {
+ "extend": "^3.0.2",
+ "findup-sync": "^4.0.0",
+ "fined": "^1.2.0",
+ "flagged-respawn": "^1.0.1",
+ "is-plain-object": "^2.0.4",
+ "object.map": "^1.0.1",
+ "rechoir": "^0.7.0",
+ "resolve": "^1.19.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/liftup/node_modules/findup-sync": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-4.0.0.tgz",
+ "integrity": "sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==",
+ "dev": true,
+ "dependencies": {
+ "detect-file": "^1.0.0",
+ "is-glob": "^4.0.0",
+ "micromatch": "^4.0.2",
+ "resolve-dir": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "dev": true
+ },
+ "node_modules/make-iterator": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz",
+ "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^6.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/map-cache": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
+ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "dev": true,
+ "dependencies": {
+ "braces": "^3.0.2",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz",
+ "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
+ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
+ "dev": true
+ },
+ "node_modules/mkdirp": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.3.tgz",
+ "integrity": "sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.5"
+ },
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "node_modules/mute-stream": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
+ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
+ "dev": true
+ },
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
+ "dev": true
+ },
+ "node_modules/nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+ "dev": true
+ },
+ "node_modules/nopt": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
+ "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
+ "dev": true,
+ "dependencies": {
+ "abbrev": "1"
+ },
+ "bin": {
+ "nopt": "bin/nopt.js"
+ }
+ },
+ "node_modules/object.defaults": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz",
+ "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=",
+ "dev": true,
+ "dependencies": {
+ "array-each": "^1.0.1",
+ "array-slice": "^1.0.0",
+ "for-own": "^1.0.0",
+ "isobject": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object.map": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz",
+ "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=",
+ "dev": true,
+ "dependencies": {
+ "for-own": "^1.0.0",
+ "make-iterator": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object.pick": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
+ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+ "dev": true,
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "dev": true,
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/onetime": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz",
+ "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==",
+ "dev": true,
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/optionator": {
+ "version": "0.8.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
+ "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
+ "dev": true,
+ "dependencies": {
+ "deep-is": "~0.1.3",
+ "fast-levenshtein": "~2.0.6",
+ "levn": "~0.3.0",
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2",
+ "word-wrap": "~1.2.3"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/os-homedir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/osenv": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
+ "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
+ "dev": true,
+ "dependencies": {
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.0"
+ }
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parse-filepath": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz",
+ "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=",
+ "dev": true,
+ "dependencies": {
+ "is-absolute": "^1.0.0",
+ "map-cache": "^0.2.0",
+ "path-root": "^0.1.1"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/parse-passwd": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
+ "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true
+ },
+ "node_modules/path-root": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz",
+ "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=",
+ "dev": true,
+ "dependencies": {
+ "path-root-regex": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-root-regex": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz",
+ "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/prelude-ls": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/progress": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/punycode": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/rechoir": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz",
+ "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==",
+ "dev": true,
+ "dependencies": {
+ "resolve": "^1.9.0"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/regexpp": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
+ "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.5.0"
+ }
+ },
+ "node_modules/resolve": {
+ "version": "1.22.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
+ "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
+ "dev": true,
+ "dependencies": {
+ "is-core-module": "^2.8.1",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/resolve-dir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
+ "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=",
+ "dev": true,
+ "dependencies": {
+ "expand-tilde": "^2.0.0",
+ "global-modules": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/restore-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
+ "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
+ "dev": true,
+ "dependencies": {
+ "onetime": "^5.1.0",
+ "signal-exit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/rimraf": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
+ "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ }
+ },
+ "node_modules/run-async": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
+ "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
+ "dev": true,
+ "dependencies": {
+ "is-promise": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/rxjs": {
+ "version": "6.5.4",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz",
+ "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^1.9.0"
+ },
+ "engines": {
+ "npm": ">=2.0.0"
+ }
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "dev": true
+ },
+ "node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
+ "dev": true
+ },
+ "node_modules/slice-ansi": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
+ "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^3.2.0",
+ "astral-regex": "^1.0.0",
+ "is-fullwidth-code-point": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+ "dev": true
+ },
+ "node_modules/string-width": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
+ "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string-width/node_modules/strip-ansi": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
+ "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/strip-ansi/node_modules/ansi-regex": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
+ "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz",
+ "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/table": {
+ "version": "5.4.6",
+ "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
+ "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
+ "dev": true,
+ "dependencies": {
+ "ajv": "^6.10.2",
+ "lodash": "^4.17.14",
+ "slice-ansi": "^2.1.0",
+ "string-width": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/table/node_modules/emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true
+ },
+ "node_modules/table/node_modules/is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/table/node_modules/string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
+ "dev": true
+ },
+ "node_modules/through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
+ "dev": true
+ },
+ "node_modules/tmp": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+ "dev": true,
+ "dependencies": {
+ "os-tmpdir": "~1.0.2"
+ },
+ "engines": {
+ "node": ">=0.6.0"
+ }
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/tslib": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz",
+ "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==",
+ "dev": true
+ },
+ "node_modules/type-check": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "~1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/type-fest": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
+ "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/unc-path-regex": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
+ "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/underscore.string": {
+ "version": "3.3.5",
+ "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.5.tgz",
+ "integrity": "sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg==",
+ "dev": true,
+ "dependencies": {
+ "sprintf-js": "^1.0.3",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/uri-js": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
+ "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
+ "dev": true,
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+ "dev": true
+ },
+ "node_modules/v8-compile-cache": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz",
+ "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==",
+ "dev": true
+ },
+ "node_modules/v8flags": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz",
+ "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==",
+ "dev": true,
+ "dependencies": {
+ "homedir-polyfill": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/vscode-json-languageservice": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-3.5.2.tgz",
+ "integrity": "sha512-9cUvBq00O08lpWVVOx6tQ1yLxCHss79nsUdEAVYGomRyMbnPBmc0AkYPcXI9WK1EM6HBo0R9Zo3NjFhcICpy4A==",
+ "dev": true,
+ "dependencies": {
+ "jsonc-parser": "^2.2.1",
+ "vscode-languageserver-textdocument": "^1.0.1",
+ "vscode-languageserver-types": "^3.15.1",
+ "vscode-nls": "^4.1.1",
+ "vscode-uri": "^2.1.1"
+ }
+ },
+ "node_modules/vscode-languageserver-textdocument": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.1.tgz",
+ "integrity": "sha512-UIcJDjX7IFkck7cSkNNyzIz5FyvpQfY7sdzVy+wkKN/BLaD4DQ0ppXQrKePomCxTS7RrolK1I0pey0bG9eh8dA==",
+ "dev": true
+ },
+ "node_modules/vscode-languageserver-types": {
+ "version": "3.15.1",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz",
+ "integrity": "sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ==",
+ "dev": true
+ },
+ "node_modules/vscode-nls": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-4.1.2.tgz",
+ "integrity": "sha512-7bOHxPsfyuCqmP+hZXscLhiHwe7CSuFE4hyhbs22xPIhQ4jv99FcR4eBzfYYVLP356HNFpdvz63FFb/xw6T4Iw==",
+ "dev": true
+ },
+ "node_modules/vscode-uri": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-2.1.1.tgz",
+ "integrity": "sha512-eY9jmGoEnVf8VE8xr5znSah7Qt1P/xsCdErz+g8HYZtJ7bZqKH5E3d+6oVNm1AC/c6IHUDokbmVXKOi4qPAC9A==",
+ "dev": true
+ },
+ "node_modules/vue-eslint-parser": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.0.0.tgz",
+ "integrity": "sha512-yR0dLxsTT7JfD2YQo9BhnQ6bUTLsZouuzt9SKRP7XNaZJV459gvlsJo4vT2nhZ/2dH9j3c53bIx9dnqU2prM9g==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.1.1",
+ "eslint-scope": "^5.0.0",
+ "eslint-visitor-keys": "^1.1.0",
+ "espree": "^6.1.2",
+ "esquery": "^1.0.1",
+ "lodash": "^4.17.15"
+ },
+ "engines": {
+ "node": ">=8.10"
+ }
+ },
+ "node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
+ }
+ },
+ "node_modules/word-wrap": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
+ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "dev": true
+ },
+ "node_modules/write": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
+ "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
+ "dev": true,
+ "dependencies": {
+ "mkdirp": "^0.5.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ }
+ },
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
+ "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.8.3"
+ }
+ },
+ "@babel/highlight": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz",
+ "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.0.0",
+ "esutils": "^2.0.2",
+ "js-tokens": "^4.0.0"
+ }
+ },
+ "abbrev": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
+ "dev": true
+ },
+ "acorn": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz",
+ "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==",
+ "dev": true
+ },
+ "acorn-jsx": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz",
+ "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==",
+ "dev": true
+ },
+ "ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
+ "requires": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "ansi-escapes": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.0.tgz",
+ "integrity": "sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg==",
+ "dev": true,
+ "requires": {
+ "type-fest": "^0.8.1"
+ }
+ },
+ "ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "requires": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "array-each": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz",
+ "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==",
+ "dev": true
+ },
+ "array-slice": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz",
+ "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==",
+ "dev": true
+ },
+ "astral-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
+ "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
+ "dev": true
+ },
+ "async": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz",
+ "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==",
+ "dev": true
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+ "dev": true
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "dev": true,
+ "requires": {
+ "fill-range": "^7.0.1"
+ }
+ },
+ "callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "chardet": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
+ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
+ "dev": true
+ },
+ "cli-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
+ "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
+ "dev": true,
+ "requires": {
+ "restore-cursor": "^3.1.0"
+ }
+ },
+ "cli-width": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
+ "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
+ "dev": true
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
+ "colors": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
+ "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
+ "dev": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+ "dev": true
+ },
+ "cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dev": true,
+ "requires": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ }
+ }
+ },
+ "dateformat": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz",
+ "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==",
+ "dev": true
+ },
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "deep-is": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
+ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
+ "dev": true
+ },
+ "detect-file": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
+ "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=",
+ "dev": true
+ },
+ "doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2"
+ }
+ },
+ "emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "dev": true
+ },
+ "eslint": {
+ "version": "6.8.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz",
+ "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "ajv": "^6.10.0",
+ "chalk": "^2.1.0",
+ "cross-spawn": "^6.0.5",
+ "debug": "^4.0.1",
+ "doctrine": "^3.0.0",
+ "eslint-scope": "^5.0.0",
+ "eslint-utils": "^1.4.3",
+ "eslint-visitor-keys": "^1.1.0",
+ "espree": "^6.1.2",
+ "esquery": "^1.0.1",
+ "esutils": "^2.0.2",
+ "file-entry-cache": "^5.0.1",
+ "functional-red-black-tree": "^1.0.1",
+ "glob-parent": "^5.0.0",
+ "globals": "^12.1.0",
+ "ignore": "^4.0.6",
+ "import-fresh": "^3.0.0",
+ "imurmurhash": "^0.1.4",
+ "inquirer": "^7.0.0",
+ "is-glob": "^4.0.0",
+ "js-yaml": "^3.13.1",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.3.0",
+ "lodash": "^4.17.14",
+ "minimatch": "^3.0.4",
+ "mkdirp": "^0.5.1",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.8.3",
+ "progress": "^2.0.0",
+ "regexpp": "^2.0.1",
+ "semver": "^6.1.2",
+ "strip-ansi": "^5.2.0",
+ "strip-json-comments": "^3.0.1",
+ "table": "^5.2.3",
+ "text-table": "^0.2.0",
+ "v8-compile-cache": "^2.0.3"
+ }
+ },
+ "eslint-config-wikimedia": {
+ "version": "0.15.3",
+ "resolved": "https://registry.npmjs.org/eslint-config-wikimedia/-/eslint-config-wikimedia-0.15.3.tgz",
+ "integrity": "sha512-MGfUwNoW2IckRismX3L8a/CI1CKkYyXHiIyAqiu27TCQwrDubryI+rtuuFYozauB3LC5WSIOnW2m1ZljtPvPPg==",
+ "dev": true,
+ "requires": {
+ "eslint": "^6.8.0",
+ "eslint-plugin-es": "^3.0.0",
+ "eslint-plugin-json": "^2.1.1",
+ "eslint-plugin-mediawiki": "^0.2.3",
+ "eslint-plugin-no-jquery": "^2.3.2",
+ "eslint-plugin-qunit": "^4.0.0",
+ "eslint-plugin-vue": "^6.1.2"
+ }
+ },
+ "eslint-plugin-es": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.0.tgz",
+ "integrity": "sha512-6/Jb/J/ZvSebydwbBJO1R9E5ky7YeElfK56Veh7e4QGFHCXoIXGH9HhVz+ibJLM3XJ1XjP+T7rKBLUa/Y7eIng==",
+ "dev": true,
+ "requires": {
+ "eslint-utils": "^2.0.0",
+ "regexpp": "^3.0.0"
+ },
+ "dependencies": {
+ "eslint-utils": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.0.0.tgz",
+ "integrity": "sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA==",
+ "dev": true,
+ "requires": {
+ "eslint-visitor-keys": "^1.1.0"
+ }
+ },
+ "regexpp": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz",
+ "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==",
+ "dev": true
+ }
+ }
+ },
+ "eslint-plugin-json": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-json/-/eslint-plugin-json-2.1.1.tgz",
+ "integrity": "sha512-Ktsab8ij33V2KFLhh4alC1FYztdmbV32DeMZYYUCZm4kKLW1s4DrleKKgtbAHSJsmshCK5QGOZtfyc2r3jCRsg==",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.17.15",
+ "vscode-json-languageservice": "^3.5.1"
+ }
+ },
+ "eslint-plugin-mediawiki": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-mediawiki/-/eslint-plugin-mediawiki-0.2.3.tgz",
+ "integrity": "sha512-/6CB/VdwZHIsPZ5gZJ3amwHUbEgbL6DZULXWTRwKoS+2q5t8TS1hu+EX83a1hPrxGWFusfV+bvgOi15aXVXi4Q==",
+ "dev": true,
+ "requires": {
+ "eslint-plugin-vue": "^6.2.2"
+ }
+ },
+ "eslint-plugin-no-jquery": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-no-jquery/-/eslint-plugin-no-jquery-2.3.2.tgz",
+ "integrity": "sha512-8M9GByb/JOO+dktgbFeC/YAMaqlscInO3fH3A9fLxZduH1NTXsIAUrimas6zDwOLBvEXpRaEZycc2QAl+W+Agw==",
+ "dev": true
+ },
+ "eslint-plugin-qunit": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-qunit/-/eslint-plugin-qunit-4.0.0.tgz",
+ "integrity": "sha512-+0i2xcYryUoLawi47Lp0iJKzkP931G5GXwIOq1KBKQc2pknV1VPjfE6b4mI2mR2RnL7WRoS30YjwC9SjQgJDXQ==",
+ "dev": true
+ },
+ "eslint-plugin-vue": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-6.2.2.tgz",
+ "integrity": "sha512-Nhc+oVAHm0uz/PkJAWscwIT4ijTrK5fqNqz9QB1D35SbbuMG1uB6Yr5AJpvPSWg+WOw7nYNswerYh0kOk64gqQ==",
+ "dev": true,
+ "requires": {
+ "natural-compare": "^1.4.0",
+ "semver": "^5.6.0",
+ "vue-eslint-parser": "^7.0.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ }
+ }
+ },
+ "eslint-scope": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz",
+ "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==",
+ "dev": true,
+ "requires": {
+ "esrecurse": "^4.1.0",
+ "estraverse": "^4.1.1"
+ }
+ },
+ "eslint-utils": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz",
+ "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==",
+ "dev": true,
+ "requires": {
+ "eslint-visitor-keys": "^1.1.0"
+ }
+ },
+ "eslint-visitor-keys": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz",
+ "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==",
+ "dev": true
+ },
+ "espree": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.2.tgz",
+ "integrity": "sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==",
+ "dev": true,
+ "requires": {
+ "acorn": "^7.1.0",
+ "acorn-jsx": "^5.1.0",
+ "eslint-visitor-keys": "^1.1.0"
+ }
+ },
+ "esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true
+ },
+ "esquery": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz",
+ "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==",
+ "dev": true,
+ "requires": {
+ "estraverse": "^4.0.0"
+ }
+ },
+ "esrecurse": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
+ "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
+ "dev": true,
+ "requires": {
+ "estraverse": "^4.1.0"
+ }
+ },
+ "estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "dev": true
+ },
+ "esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true
+ },
+ "eventemitter2": {
+ "version": "0.4.14",
+ "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz",
+ "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=",
+ "dev": true
+ },
+ "exit": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
+ "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=",
+ "dev": true
+ },
+ "expand-tilde": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
+ "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
+ "dev": true,
+ "requires": {
+ "homedir-polyfill": "^1.0.1"
+ }
+ },
+ "extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+ "dev": true
+ },
+ "external-editor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
+ "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
+ "dev": true,
+ "requires": {
+ "chardet": "^0.7.0",
+ "iconv-lite": "^0.4.24",
+ "tmp": "^0.0.33"
+ }
+ },
+ "fast-deep-equal": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz",
+ "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==",
+ "dev": true
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true
+ },
+ "fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
+ "dev": true
+ },
+ "figures": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-3.1.0.tgz",
+ "integrity": "sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "^1.0.5"
+ }
+ },
+ "file-entry-cache": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
+ "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
+ "dev": true,
+ "requires": {
+ "flat-cache": "^2.0.1"
+ }
+ },
+ "fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "dev": true,
+ "requires": {
+ "to-regex-range": "^5.0.1"
+ }
+ },
+ "findup-sync": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz",
+ "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=",
+ "dev": true,
+ "requires": {
+ "glob": "~5.0.0"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "5.0.15",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
+ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
+ "dev": true,
+ "requires": {
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "2 || 3",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ }
+ }
+ },
+ "fined": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz",
+ "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==",
+ "dev": true,
+ "requires": {
+ "expand-tilde": "^2.0.2",
+ "is-plain-object": "^2.0.3",
+ "object.defaults": "^1.1.0",
+ "object.pick": "^1.2.0",
+ "parse-filepath": "^1.0.1"
+ }
+ },
+ "flagged-respawn": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz",
+ "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==",
+ "dev": true
+ },
+ "flat-cache": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
+ "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
+ "dev": true,
+ "requires": {
+ "flatted": "^2.0.0",
+ "rimraf": "2.6.3",
+ "write": "1.0.3"
+ }
+ },
+ "flatted": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz",
+ "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==",
+ "dev": true
+ },
+ "for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
+ "dev": true
+ },
+ "for-own": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
+ "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
+ "dev": true,
+ "requires": {
+ "for-in": "^1.0.1"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+ "dev": true
+ },
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "dev": true
+ },
+ "functional-red-black-tree": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
+ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
+ "dev": true
+ },
+ "getobject": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/getobject/-/getobject-1.0.0.tgz",
+ "integrity": "sha512-tbUz6AKKKr2YiMB+fLWIgq5ZeBOobop9YMMAU9dC54/ot2ksMXt3DOFyBuhZw6ptcVszEykgByK20j7W9jHFag==",
+ "dev": true
+ },
+ "glob": {
+ "version": "7.1.6",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
+ "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "requires": {
+ "is-glob": "^4.0.1"
+ }
+ },
+ "global-modules": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
+ "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
+ "dev": true,
+ "requires": {
+ "global-prefix": "^1.0.1",
+ "is-windows": "^1.0.1",
+ "resolve-dir": "^1.0.0"
+ }
+ },
+ "global-prefix": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
+ "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=",
+ "dev": true,
+ "requires": {
+ "expand-tilde": "^2.0.2",
+ "homedir-polyfill": "^1.0.1",
+ "ini": "^1.3.4",
+ "is-windows": "^1.0.1",
+ "which": "^1.2.14"
+ }
+ },
+ "globals": {
+ "version": "12.3.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-12.3.0.tgz",
+ "integrity": "sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw==",
+ "dev": true,
+ "requires": {
+ "type-fest": "^0.8.1"
+ }
+ },
+ "grunt": {
+ "version": "1.5.3",
+ "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.5.3.tgz",
+ "integrity": "sha512-mKwmo4X2d8/4c/BmcOETHek675uOqw0RuA/zy12jaspWqvTp4+ZeQF1W+OTpcbncnaBsfbQJ6l0l4j+Sn/GmaQ==",
+ "dev": true,
+ "requires": {
+ "dateformat": "~3.0.3",
+ "eventemitter2": "~0.4.13",
+ "exit": "~0.1.2",
+ "findup-sync": "~0.3.0",
+ "glob": "~7.1.6",
+ "grunt-cli": "~1.4.3",
+ "grunt-known-options": "~2.0.0",
+ "grunt-legacy-log": "~3.0.0",
+ "grunt-legacy-util": "~2.0.1",
+ "iconv-lite": "~0.4.13",
+ "js-yaml": "~3.14.0",
+ "minimatch": "~3.0.4",
+ "mkdirp": "~1.0.4",
+ "nopt": "~3.0.6",
+ "rimraf": "~3.0.2"
+ },
+ "dependencies": {
+ "js-yaml": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "dev": true,
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ }
+ },
+ "mkdirp": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "dev": true
+ },
+ "rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ }
+ }
+ },
+ "grunt-banana-checker": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/grunt-banana-checker/-/grunt-banana-checker-0.9.0.tgz",
+ "integrity": "sha512-SqPiB6OazWqR8USL0NymtuT5Br3mD9WBBsM1rHC/3wIi2SrZNM6/+j9CIeuEM5oCn+AtO2Y0+rzzFyOdC9afAg==",
+ "dev": true
+ },
+ "grunt-cli": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.4.3.tgz",
+ "integrity": "sha512-9Dtx/AhVeB4LYzsViCjUQkd0Kw0McN2gYpdmGYKtE2a5Yt7v1Q+HYZVWhqXc/kGnxlMtqKDxSwotiGeFmkrCoQ==",
+ "dev": true,
+ "requires": {
+ "grunt-known-options": "~2.0.0",
+ "interpret": "~1.1.0",
+ "liftup": "~3.0.1",
+ "nopt": "~4.0.1",
+ "v8flags": "~3.2.0"
+ },
+ "dependencies": {
+ "nopt": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz",
+ "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==",
+ "dev": true,
+ "requires": {
+ "abbrev": "1",
+ "osenv": "^0.1.4"
+ }
+ }
+ }
+ },
+ "grunt-eslint": {
+ "version": "22.0.0",
+ "resolved": "https://registry.npmjs.org/grunt-eslint/-/grunt-eslint-22.0.0.tgz",
+ "integrity": "sha512-I7vIU4x/mb20fmA6TAmLx6Wzn7mfs8ZXeuk7LbP2ujKVFV7KZmJ3qXUyqe2wnD+v/74Rs5uYOZrLL8EoBmlG9Q==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.1.0",
+ "eslint": "^6.0.1"
+ }
+ },
+ "grunt-known-options": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-2.0.0.tgz",
+ "integrity": "sha512-GD7cTz0I4SAede1/+pAbmJRG44zFLPipVtdL9o3vqx9IEyb7b4/Y3s7r6ofI3CchR5GvYJ+8buCSioDv5dQLiA==",
+ "dev": true
+ },
+ "grunt-legacy-log": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-3.0.0.tgz",
+ "integrity": "sha512-GHZQzZmhyq0u3hr7aHW4qUH0xDzwp2YXldLPZTCjlOeGscAOWWPftZG3XioW8MasGp+OBRIu39LFx14SLjXRcA==",
+ "dev": true,
+ "requires": {
+ "colors": "~1.1.2",
+ "grunt-legacy-log-utils": "~2.1.0",
+ "hooker": "~0.2.3",
+ "lodash": "~4.17.19"
+ }
+ },
+ "grunt-legacy-log-utils": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.1.0.tgz",
+ "integrity": "sha512-lwquaPXJtKQk0rUM1IQAop5noEpwFqOXasVoedLeNzaibf/OPWjKYvvdqnEHNmU+0T0CaReAXIbGo747ZD+Aaw==",
+ "dev": true,
+ "requires": {
+ "chalk": "~4.1.0",
+ "lodash": "~4.17.19"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
+ "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "grunt-legacy-util": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-2.0.1.tgz",
+ "integrity": "sha512-2bQiD4fzXqX8rhNdXkAywCadeqiPiay0oQny77wA2F3WF4grPJXCvAcyoWUJV+po/b15glGkxuSiQCK299UC2w==",
+ "dev": true,
+ "requires": {
+ "async": "~3.2.0",
+ "exit": "~0.1.2",
+ "getobject": "~1.0.0",
+ "hooker": "~0.2.3",
+ "lodash": "~4.17.21",
+ "underscore.string": "~3.3.5",
+ "which": "~2.0.2"
+ },
+ "dependencies": {
+ "which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ }
+ }
+ },
+ "has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "homedir-polyfill": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
+ "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==",
+ "dev": true,
+ "requires": {
+ "parse-passwd": "^1.0.0"
+ }
+ },
+ "hooker": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz",
+ "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=",
+ "dev": true
+ },
+ "iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dev": true,
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
+ "ignore": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
+ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
+ "dev": true
+ },
+ "import-fresh": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz",
+ "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==",
+ "dev": true,
+ "requires": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ }
+ },
+ "imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+ "dev": true
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "dev": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "ini": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+ "dev": true
+ },
+ "inquirer": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.4.tgz",
+ "integrity": "sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ==",
+ "dev": true,
+ "requires": {
+ "ansi-escapes": "^4.2.1",
+ "chalk": "^2.4.2",
+ "cli-cursor": "^3.1.0",
+ "cli-width": "^2.0.0",
+ "external-editor": "^3.0.3",
+ "figures": "^3.0.0",
+ "lodash": "^4.17.15",
+ "mute-stream": "0.0.8",
+ "run-async": "^2.2.0",
+ "rxjs": "^6.5.3",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^5.1.0",
+ "through": "^2.3.6"
+ }
+ },
+ "interpret": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz",
+ "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=",
+ "dev": true
+ },
+ "is-absolute": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz",
+ "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==",
+ "dev": true,
+ "requires": {
+ "is-relative": "^1.0.0",
+ "is-windows": "^1.0.1"
+ }
+ },
+ "is-core-module": {
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz",
+ "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==",
+ "dev": true,
+ "requires": {
+ "has": "^1.0.3"
+ }
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
+ "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ },
+ "is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true
+ },
+ "is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.1"
+ }
+ },
+ "is-promise": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
+ "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
+ "dev": true
+ },
+ "is-relative": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz",
+ "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==",
+ "dev": true,
+ "requires": {
+ "is-unc-path": "^1.0.0"
+ }
+ },
+ "is-unc-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz",
+ "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==",
+ "dev": true,
+ "requires": {
+ "unc-path-regex": "^0.1.2"
+ }
+ },
+ "is-windows": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+ "dev": true
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+ "dev": true
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ },
+ "js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true
+ },
+ "js-yaml": {
+ "version": "3.13.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
+ "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
+ "dev": true,
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ }
+ },
+ "json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
+ },
+ "json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
+ "dev": true
+ },
+ "jsonc-parser": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.2.1.tgz",
+ "integrity": "sha512-o6/yDBYccGvTz1+QFevz6l6OBZ2+fMVu2JZ9CIhzsYRX4mjaK5IyX9eldUdCmga16zlgQxyrj5pt9kzuj2C02w==",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "dev": true
+ },
+ "levn": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2"
+ }
+ },
+ "liftup": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/liftup/-/liftup-3.0.1.tgz",
+ "integrity": "sha512-yRHaiQDizWSzoXk3APcA71eOI/UuhEkNN9DiW2Tt44mhYzX4joFoCZlxsSOF7RyeLlfqzFLQI1ngFq3ggMPhOw==",
+ "dev": true,
+ "requires": {
+ "extend": "^3.0.2",
+ "findup-sync": "^4.0.0",
+ "fined": "^1.2.0",
+ "flagged-respawn": "^1.0.1",
+ "is-plain-object": "^2.0.4",
+ "object.map": "^1.0.1",
+ "rechoir": "^0.7.0",
+ "resolve": "^1.19.0"
+ },
+ "dependencies": {
+ "findup-sync": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-4.0.0.tgz",
+ "integrity": "sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==",
+ "dev": true,
+ "requires": {
+ "detect-file": "^1.0.0",
+ "is-glob": "^4.0.0",
+ "micromatch": "^4.0.2",
+ "resolve-dir": "^1.0.1"
+ }
+ }
+ }
+ },
+ "lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "dev": true
+ },
+ "make-iterator": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz",
+ "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.2"
+ }
+ },
+ "map-cache": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
+ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
+ "dev": true
+ },
+ "micromatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "dev": true,
+ "requires": {
+ "braces": "^3.0.2",
+ "picomatch": "^2.3.1"
+ }
+ },
+ "mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz",
+ "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
+ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
+ "dev": true
+ },
+ "mkdirp": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.3.tgz",
+ "integrity": "sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg==",
+ "dev": true,
+ "requires": {
+ "minimist": "^1.2.5"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "mute-stream": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
+ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
+ "dev": true
+ },
+ "natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
+ "dev": true
+ },
+ "nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+ "dev": true
+ },
+ "nopt": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
+ "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
+ "dev": true,
+ "requires": {
+ "abbrev": "1"
+ }
+ },
+ "object.defaults": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz",
+ "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=",
+ "dev": true,
+ "requires": {
+ "array-each": "^1.0.1",
+ "array-slice": "^1.0.0",
+ "for-own": "^1.0.0",
+ "isobject": "^3.0.0"
+ }
+ },
+ "object.map": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz",
+ "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=",
+ "dev": true,
+ "requires": {
+ "for-own": "^1.0.0",
+ "make-iterator": "^1.0.0"
+ }
+ },
+ "object.pick": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
+ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.1"
+ }
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "dev": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "onetime": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz",
+ "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^2.1.0"
+ }
+ },
+ "optionator": {
+ "version": "0.8.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
+ "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
+ "dev": true,
+ "requires": {
+ "deep-is": "~0.1.3",
+ "fast-levenshtein": "~2.0.6",
+ "levn": "~0.3.0",
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2",
+ "word-wrap": "~1.2.3"
+ }
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
+ "dev": true
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+ "dev": true
+ },
+ "osenv": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
+ "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
+ "dev": true,
+ "requires": {
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.0"
+ }
+ },
+ "parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "requires": {
+ "callsites": "^3.0.0"
+ }
+ },
+ "parse-filepath": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz",
+ "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=",
+ "dev": true,
+ "requires": {
+ "is-absolute": "^1.0.0",
+ "map-cache": "^0.2.0",
+ "path-root": "^0.1.1"
+ }
+ },
+ "parse-passwd": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
+ "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=",
+ "dev": true
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+ "dev": true
+ },
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+ "dev": true
+ },
+ "path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true
+ },
+ "path-root": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz",
+ "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=",
+ "dev": true,
+ "requires": {
+ "path-root-regex": "^0.1.0"
+ }
+ },
+ "path-root-regex": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz",
+ "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=",
+ "dev": true
+ },
+ "picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true
+ },
+ "prelude-ls": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
+ "dev": true
+ },
+ "progress": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+ "dev": true
+ },
+ "punycode": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+ "dev": true
+ },
+ "rechoir": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz",
+ "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==",
+ "dev": true,
+ "requires": {
+ "resolve": "^1.9.0"
+ }
+ },
+ "regexpp": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
+ "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
+ "dev": true
+ },
+ "resolve": {
+ "version": "1.22.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
+ "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
+ "dev": true,
+ "requires": {
+ "is-core-module": "^2.8.1",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ }
+ },
+ "resolve-dir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
+ "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=",
+ "dev": true,
+ "requires": {
+ "expand-tilde": "^2.0.0",
+ "global-modules": "^1.0.0"
+ }
+ },
+ "resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true
+ },
+ "restore-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
+ "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
+ "dev": true,
+ "requires": {
+ "onetime": "^5.1.0",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "rimraf": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
+ "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
+ "run-async": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
+ "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
+ "dev": true,
+ "requires": {
+ "is-promise": "^2.1.0"
+ }
+ },
+ "rxjs": {
+ "version": "6.5.4",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz",
+ "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==",
+ "dev": true,
+ "requires": {
+ "tslib": "^1.9.0"
+ }
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "dev": true
+ },
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "^1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+ "dev": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
+ "dev": true
+ },
+ "slice-ansi": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
+ "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.0",
+ "astral-regex": "^1.0.0",
+ "is-fullwidth-code-point": "^2.0.0"
+ },
+ "dependencies": {
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ }
+ }
+ },
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
+ "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "dependencies": {
+ "strip-ansi": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
+ "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^5.0.0"
+ }
+ }
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
+ "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
+ "dev": true
+ }
+ }
+ },
+ "strip-json-comments": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz",
+ "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ },
+ "supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true
+ },
+ "table": {
+ "version": "5.4.6",
+ "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
+ "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.10.2",
+ "lodash": "^4.17.14",
+ "slice-ansi": "^2.1.0",
+ "string-width": "^3.0.0"
+ },
+ "dependencies": {
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ }
+ }
+ }
+ },
+ "text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
+ "dev": true
+ },
+ "through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
+ "dev": true
+ },
+ "tmp": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+ "dev": true,
+ "requires": {
+ "os-tmpdir": "~1.0.2"
+ }
+ },
+ "to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "requires": {
+ "is-number": "^7.0.0"
+ }
+ },
+ "tslib": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz",
+ "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==",
+ "dev": true
+ },
+ "type-check": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "~1.1.2"
+ }
+ },
+ "type-fest": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
+ "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
+ "dev": true
+ },
+ "unc-path-regex": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
+ "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=",
+ "dev": true
+ },
+ "underscore.string": {
+ "version": "3.3.5",
+ "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.5.tgz",
+ "integrity": "sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg==",
+ "dev": true,
+ "requires": {
+ "sprintf-js": "^1.0.3",
+ "util-deprecate": "^1.0.2"
+ }
+ },
+ "uri-js": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
+ "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
+ "dev": true,
+ "requires": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+ "dev": true
+ },
+ "v8-compile-cache": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz",
+ "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==",
+ "dev": true
+ },
+ "v8flags": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz",
+ "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==",
+ "dev": true,
+ "requires": {
+ "homedir-polyfill": "^1.0.1"
+ }
+ },
+ "vscode-json-languageservice": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-3.5.2.tgz",
+ "integrity": "sha512-9cUvBq00O08lpWVVOx6tQ1yLxCHss79nsUdEAVYGomRyMbnPBmc0AkYPcXI9WK1EM6HBo0R9Zo3NjFhcICpy4A==",
+ "dev": true,
+ "requires": {
+ "jsonc-parser": "^2.2.1",
+ "vscode-languageserver-textdocument": "^1.0.1",
+ "vscode-languageserver-types": "^3.15.1",
+ "vscode-nls": "^4.1.1",
+ "vscode-uri": "^2.1.1"
+ }
+ },
+ "vscode-languageserver-textdocument": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.1.tgz",
+ "integrity": "sha512-UIcJDjX7IFkck7cSkNNyzIz5FyvpQfY7sdzVy+wkKN/BLaD4DQ0ppXQrKePomCxTS7RrolK1I0pey0bG9eh8dA==",
+ "dev": true
+ },
+ "vscode-languageserver-types": {
+ "version": "3.15.1",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz",
+ "integrity": "sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ==",
+ "dev": true
+ },
+ "vscode-nls": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-4.1.2.tgz",
+ "integrity": "sha512-7bOHxPsfyuCqmP+hZXscLhiHwe7CSuFE4hyhbs22xPIhQ4jv99FcR4eBzfYYVLP356HNFpdvz63FFb/xw6T4Iw==",
+ "dev": true
+ },
+ "vscode-uri": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-2.1.1.tgz",
+ "integrity": "sha512-eY9jmGoEnVf8VE8xr5znSah7Qt1P/xsCdErz+g8HYZtJ7bZqKH5E3d+6oVNm1AC/c6IHUDokbmVXKOi4qPAC9A==",
+ "dev": true
+ },
+ "vue-eslint-parser": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.0.0.tgz",
+ "integrity": "sha512-yR0dLxsTT7JfD2YQo9BhnQ6bUTLsZouuzt9SKRP7XNaZJV459gvlsJo4vT2nhZ/2dH9j3c53bIx9dnqU2prM9g==",
+ "dev": true,
+ "requires": {
+ "debug": "^4.1.1",
+ "eslint-scope": "^5.0.0",
+ "eslint-visitor-keys": "^1.1.0",
+ "espree": "^6.1.2",
+ "esquery": "^1.0.1",
+ "lodash": "^4.17.15"
+ }
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ },
+ "word-wrap": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
+ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
+ "dev": true
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "dev": true
+ },
+ "write": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
+ "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
+ "dev": true,
+ "requires": {
+ "mkdirp": "^0.5.1"
+ }
+ }
+ }
+}
diff --git a/ContributionScores/package.json b/ContributionScores/package.json
new file mode 100644
index 00000000..3f112b13
--- /dev/null
+++ b/ContributionScores/package.json
@@ -0,0 +1,13 @@
+{
+ "name": "ContributionScores",
+ "private": true,
+ "scripts": {
+ "test": "grunt test"
+ },
+ "devDependencies": {
+ "eslint-config-wikimedia": "0.15.3",
+ "grunt": "1.5.3",
+ "grunt-banana-checker": "0.9.0",
+ "grunt-eslint": "22.0.0"
+ }
+}
diff --git a/ContributionScores/version b/ContributionScores/version
new file mode 100644
index 00000000..df036a89
--- /dev/null
+++ b/ContributionScores/version
@@ -0,0 +1,4 @@
+ContributionScores: REL1_35
+2022-10-23T08:06:43
+
+a35de70