data-values/value-view (master)

sourcepatches
$ date
Thu Mar  4 11:52:27 UTC 2021

$ git clone file:///srv/git/data-values-value-view.git repo --depth=1 -b master
Cloning into 'repo'...

$ git config user.name libraryupgrader

$ git config user.email tools.libraryupgrader@tools.wmflabs.org

$ git submodule update --init

$ grr init
Installed commit-msg hook.

$ git show-ref refs/heads/master
73d2ac10eedd5dc3388a151971120e8fdc9ac80d refs/heads/master

Upgrading n:eslint-config-wikimedia from 0.17.0 -> 0.18.1
$ npm install

> core-js@3.9.1 postinstall /src/repo/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"

Thank you for using core-js ( https://github.com/zloirock/core-js ) for polyfilling JavaScript standard library!

The project needs your help! Please consider supporting of core-js on Open Collective or Patreon: 
> https://opencollective.com/core-js 
> https://www.patreon.com/zloirock 

Also, the author of core-js ( https://github.com/zloirock ) is looking for a good job -)


> sinon@4.5.0 postinstall /src/repo/node_modules/sinon
> node scripts/support-sinon.js

Have some ❤️ for Sinon? You can support the project via Open Collective:
 > https://opencollective.com/sinon/donate

npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.3.2 (node_modules/watchpack/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.3.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.13 (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.3.2 (node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.3.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})

added 894 packages from 1295 contributors and audited 900 packages in 109.059s

31 packages are looking for funding
  run `npm fund` for details

found 2 low severity vulnerabilities
  run `npm audit fix` to fix them, or `npm audit` for details

$ npm update eslint -depth 10
npm WARN grunt-karma@4.0.0 requires a peer of karma@^4.0.0 || ^5.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.3.2 (node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.3.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.13 (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.3.2 (node_modules/watchpack/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.3.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})

+ eslint@7.21.0
added 5 packages from 4 contributors, removed 4 packages, updated 11 packages and audited 901 packages in 48.572s

30 packages are looking for funding
  run `npm fund` for details

found 2 low severity vulnerabilities
  run `npm audit fix` to fix them, or `npm audit` for details

$ npm install grunt-eslint@23.0.0 --save-exact
npm WARN grunt-karma@4.0.0 requires a peer of karma@^4.0.0 || ^5.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.3.2 (node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.3.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.13 (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.3.2 (node_modules/watchpack/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.3.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})

+ grunt-eslint@23.0.0
updated 1 package and audited 901 packages in 48.214s

30 packages are looking for funding
  run `npm fund` for details

found 2 low severity vulnerabilities
  run `npm audit fix` to fix them, or `npm audit` for details

$ ./node_modules/.bin/eslint . --fix

/src/repo/lib/jquery.event/jquery.event.special.eachchange.js
   22:2   warning  Missing JSDoc @return declaration                                        jsdoc/require-returns
  200:48  warning  'eventData' is already declared in the upper scope on line 192 column 9  no-shadow

/src/repo/lib/jquery.ui/jquery.ui.inputextender.js
  174:3  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  552:3  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc

/src/repo/lib/jquery.ui/jquery.ui.listrotator.js
  124:3   warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  130:24  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  177:3   warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  228:10  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  242:12  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  278:16  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  371:75  warning  'newValue' is already declared in the upper scope on line 363 column 23            no-shadow

/src/repo/lib/jquery.ui/jquery.ui.ooMenu.js
   88:0  warning  Missing JSDoc @param "key" type                                                    jsdoc/require-param-type
   89:0  warning  Missing JSDoc @param "value" type                                                  jsdoc/require-param-type
  187:5  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  384:0  warning  Missing JSDoc @param "event" type                                                  jsdoc/require-param-type
  541:0  warning  Missing JSDoc @param "menu" type                                                   jsdoc/require-param-type

/src/repo/lib/jquery.ui/jquery.ui.preview.js
   69:3   warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
   72:4   warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
   77:17  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
   90:3   warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  109:3   warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc

/src/repo/lib/jquery.ui/jquery.ui.suggester.js
  239:2  warning  Missing JSDoc @return declaration        jsdoc/require-returns
  240:0  warning  Missing JSDoc @param "key" type          jsdoc/require-param-type
  241:0  warning  Missing JSDoc @param "value" type        jsdoc/require-param-type
  522:2  warning  Found more than one @return declaration  jsdoc/require-returns
  522:2  warning  Found more than one @return declaration  jsdoc/require-returns-check
  640:2  warning  Found more than one @return declaration  jsdoc/require-returns
  640:2  warning  Found more than one @return declaration  jsdoc/require-returns-check
  661:2  warning  Found more than one @return declaration  jsdoc/require-returns
  661:2  warning  Found more than one @return declaration  jsdoc/require-returns-check

/src/repo/lib/jquery.ui/jquery.ui.toggler.js
    5:0   warning  Syntax error in namepath: iconClass='ui-icon-triangle-1-'                          jsdoc/valid-types
   14:0   warning  Syntax error in namepath: isRtl=false                                              jsdoc/valid-types
   22:0   warning  Syntax error in namepath: browserSupportsTransform=false                           jsdoc/valid-types
  108:22  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  116:3   warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  121:22  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  206:3   warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  210:4   warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  212:4   warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc

/src/repo/lib/jquery/jquery.PurposedCallbacks.js
  152:3  warning  Missing JSDoc @return declaration  jsdoc/require-returns

/src/repo/lib/jquery/jquery.focusAt.js
  73:2  warning  Missing JSDoc @return declaration  jsdoc/require-returns

/src/repo/lib/jquery/jquery.inputautoexpand.js
  114:1  warning  Missing JSDoc @return declaration  jsdoc/require-returns

/src/repo/src/ExpertExtender/ExpertExtender.Listrotator.js
  25:18  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc

/src/repo/src/experts/GlobeCoordinateInput.js
   45:29  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  202:37  warning  'precision' is already declared in the upper scope on line 197 column 35           no-shadow

/src/repo/src/experts/StringValue.js
  35:4  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc

/src/repo/src/experts/TimeInput.js
  68:29  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  86:28  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc

/src/repo/src/jquery.valueview.Expert.js
   79:0  warning  The type 'ViewState' is undefined                                                  jsdoc/no-undefined-types
  166:0  warning  The type 'ViewState' is undefined                                                  jsdoc/no-undefined-types
  214:4  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  241:4  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  264:0  warning  The type 'ViewState' is undefined                                                  jsdoc/no-undefined-types
  280:3  warning  Found more than one @return declaration                                            jsdoc/require-returns
  280:3  warning  Found more than one @return declaration                                            jsdoc/require-returns-check

/src/repo/src/jquery.valueview.valueview.js
   32:0  warning  Invalid JSDoc tag name "alternateClassName"                                        jsdoc/check-tag-names
  229:3  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  243:2  warning  Missing JSDoc @return declaration                                                  jsdoc/require-returns
  248:3  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  263:0  warning  Missing JSDoc @param "key" type                                                    jsdoc/require-param-type
  264:0  warning  Missing JSDoc @param "value" type                                                  jsdoc/require-param-type
  388:2  warning  Missing JSDoc @return declaration                                                  jsdoc/require-returns
  611:2  warning  Found more than one @return declaration                                            jsdoc/require-returns
  611:2  warning  Found more than one @return declaration                                            jsdoc/require-returns-check
  621:3  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  621:3  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  631:2  warning  Found more than one @return declaration                                            jsdoc/require-returns
  631:2  warning  Found more than one @return declaration                                            jsdoc/require-returns-check
  686:2  warning  Missing JSDoc @return declaration                                                  jsdoc/require-returns
  740:2  warning  Found more than one @return declaration                                            jsdoc/require-returns
  740:2  warning  Found more than one @return declaration                                            jsdoc/require-returns-check
  848:2  warning  Found more than one @return declaration                                            jsdoc/require-returns
  848:2  warning  Found more than one @return declaration                                            jsdoc/require-returns-check
  884:2  warning  Found more than one @return declaration                                            jsdoc/require-returns
  884:2  warning  Found more than one @return declaration                                            jsdoc/require-returns-check
  939:0  warning  The type 'ViewState' is undefined                                                  jsdoc/no-undefined-types

/src/repo/tests/lib/jquery.ui/jquery.ui.commonssuggester.tests.js
   8:0   warning  Missing JSDoc @param "mockSearchResult" type                          jsdoc/require-param-type
  13:20  warning  'options' is already declared in the upper scope on line 12 column 7  no-shadow

/src/repo/tests/lib/jquery.ui/jquery.ui.inputextender.tests.js
  12:2  warning  Missing JSDoc @return declaration   jsdoc/require-returns
  47:0  warning  Missing JSDoc @param "assert" type  jsdoc/require-param-type

/src/repo/tests/lib/jquery.ui/jquery.ui.listrotator.tests.js
   9:2  warning  Missing JSDoc @return declaration    jsdoc/require-returns
  12:0  warning  Missing JSDoc @param "options" type  jsdoc/require-param-type

/src/repo/tests/lib/jquery.ui/jquery.ui.ooMenu.tests.js
    8:2   warning  Missing JSDoc @return declaration                                   jsdoc/require-returns
  127:78  warning  'menu' is already declared in the upper scope on line 103 column 4  no-shadow

/src/repo/tests/lib/jquery.ui/jquery.ui.suggester.tests.js
  34:0  warning  The type 'ui' is undefined  jsdoc/no-undefined-types

/src/repo/tests/src/jquery.valueview.ExpertStore.tests.js
  28:0  warning  The type 'DataTypeMock' is undefined  jsdoc/no-undefined-types

/src/repo/tests/src/jquery.valueview.tests.MockExpert.js
  45:3  warning  Missing JSDoc @return declaration  jsdoc/require-returns

/src/repo/tests/src/jquery.valueview.tests.MockViewState.js
  29:3  warning  Missing JSDoc @return declaration  jsdoc/require-returns
  36:3  warning  Missing JSDoc @return declaration  jsdoc/require-returns
  43:3  warning  Missing JSDoc @return declaration  jsdoc/require-returns
  50:3  warning  Missing JSDoc @return declaration  jsdoc/require-returns
  57:3  warning  Missing JSDoc @return declaration  jsdoc/require-returns
  64:3  warning  Missing JSDoc @return declaration  jsdoc/require-returns
  65:0  warning  Missing JSDoc @param "key" type    jsdoc/require-param-type

✖ 94 problems (0 errors, 94 warnings)


$ ./node_modules/.bin/eslint . -f json
[{"filePath":"/src/repo/.eslintrc.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/Gruntfile.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ar.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ast.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/be-tarask.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/be.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/bg.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/bn.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/br.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/bs.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ca.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/cs.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/cy.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/da.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/de.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/dsb.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/el.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/en-ca.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/en-gb.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/en.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/eo.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/es.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/et.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/eu.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/fa.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/fi.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/fr.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/gl.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/gu.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/he.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/hi.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/hif-latn.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/hsb.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/hu.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/hy.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ia.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/id.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ilo.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/io.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/is.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/it.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ja.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/jv.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ka.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/kab.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/kn.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ko.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/lb.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/li.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/lt.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/lzh.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/mai.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/mg.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/mk.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ml.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/mni.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/mr.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ms.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/my.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/nb.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/nl.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/nn.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/oc.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/pl.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/pms.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/pnb.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ps.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/pt-br.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/pt.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/qqq.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/roa-tara.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ru.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/skr-arab.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/sl.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/sq.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/sr-ec.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/su.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/sv.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ta.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/te.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/tr.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/uk.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ur.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/vi.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/yi.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/yue.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/zh-hans.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/zh-hant.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/jsduck.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/lib/jquery.event/jquery.event.special.eachchange.js","messages":[{"ruleId":"jsdoc/require-returns","severity":1,"message":"Missing JSDoc @return declaration.","line":22,"column":2,"nodeType":"Block","endLine":30,"endColumn":5},{"ruleId":"no-shadow","severity":1,"message":"'eventData' is already declared in the upper scope on line 192 column 9.","line":200,"column":48,"nodeType":"Identifier","messageId":"noShadow","endLine":200,"endColumn":57}],"errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"( function () {\n\t'use strict';\n\n\t/**\n\t * Event id used for data binding and as namespace.\n\t *\n\t * @property {string}\n\t * @ignore\n\t */\n\tvar EVENT_ID = 'jqueryEventSpecialEachchange';\n\n\t/**\n\t * Name(s) of events that are in fact supported by the client.\n\t *\n\t * @property {string}\n\t * @ignore\n\t */\n\tvar inputEvent = null;\n\n\tvar triggeredHandlers = [];\n\n\t/**\n\t * Checks whether a handler with a given event id has already been triggered.\n\t *\n\t * @ignore\n\t *\n\t * @param {string} eventId\n\t * @param {number} index Numeric index within the list of handlers attached with the same\n\t *        event id.\n\t */\n\tfunction alreadyTriggered( eventId, index ) {\n\t\tfor ( var i = 0; i < triggeredHandlers.length; i++ ) {\n\t\t\tif ( eventId === triggeredHandlers[i].id && index === triggeredHandlers[i].index ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Returns the value of a jQuery element or null if the element does not feature retrieving its\n\t * value via .val().\n\t *\n\t * @ignore\n\t *\n\t * @param {jQuery} $elem\n\t * @return {*}\n\t */\n\tfunction getValue( $elem ) {\n\t\t// If the native element does not feature getting its value, an error is caused in the\n\t\t// jQuery mechanism trying to retrieve the value.\n\t\ttry {\n\t\t\treturn $elem.val();\n\t\t} catch ( e ) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t/**\n\t * Assigns a namespace to a string of one or more event names separated by a space character.\n\t *\n\t * @ignore\n\t *\n\t * @param {string} eventNames\n\t * @param {string} namespace\n\t * @return {string}\n\t */\n\tfunction assignNamespace( eventNames, namespace ) {\n\t\tvar names = eventNames.split( ' ' ),\n\t\t\tnamespacedNames = [];\n\n\t\tfor ( var i = 0; i < names.length; i++ ) {\n\t\t\tnamespacedNames.push( names[i] + '.' + namespace );\n\t\t}\n\n\t\treturn namespacedNames.join( ' ' );\n\t}\n\n\t/**\n\t * Returns a string of on or more event names to be used for detecting any instant changes of an\n\t * input box. This should be just 'input' in recent browsers.\n\t *\n\t * @ignore\n\t *\n\t * @return {string}\n\t */\n\tfunction getInputEvent() {\n\t\t// IE (at least <= version 9) does not trigger input event when pressing backspace\n\t\t// (version <= 8 does not support input event at all anyway)\n\t\tif ( $.client.profile().name === 'msie' && $.client.profile().versionNumber >= 9 ) {\n\t\t\treturn 'input keyup';\n\t\t}\n\n\t\tvar fallbackEvents = 'keyup keydown blur cut paste mousedown mouseup mouseout',\n\t\t\t$input = $( '<input/>' ),\n\t\t\tsupported = 'oninput' in $input[0];\n\t\treturn ( supported ) ? 'input' : fallbackEvents;\n\t}\n\n\t/**\n\t * eachchange jQuery event\n\t *\n\t * The `eachchange` event catches all designated input events. In recent browsers, it basically\n\t * delegates to the `input` event. Older browsers are supported by fallback events to achieve\n\t * some kind of simulation of the `input` event.\n\t *\n\t *     @example\n\t *     $( 'input' ).on( 'eachchange', function( event, previousValue ) {\n\t *         console.log( 'previous value: ' + previousValue );\n\t *         console.log( 'new value: ' + $( event.target ).val() );\n\t *     } );\n\t *\n\t * @see jQuery.event.special\n\t *\n\t * @class jQuery.event.special.eachchange\n\t * @extends jQuery.Event\n\t * @uses jQuery.client\n\t * @license GNU GPL v2+\n\t * @author H. Snater < mediawiki@snater.com >\n\t *\n\t * @param {jQuery.Event} event\n\t * @param {string} previousValue\n\t */\n\t$.event.special.eachchange = {\n\t\tsetup: function( data, namespaces, eventHandle ) {\n\t\t\tinputEvent = getInputEvent();\n\t\t},\n\n\t\tadd: function( handleObj ) {\n\t\t\tvar eventData = $.data( this, EVENT_ID + handleObj.namespace ),\n\t\t\t\t$elem = $( this ),\n\t\t\t\teventId = EVENT_ID + handleObj.namespace,\n\t\t\t\teventNameString = assignNamespace( inputEvent, eventId );\n\n\t\t\tif ( !eventData ) {\n\t\t\t\teventData = { handlers: [], prevVal: getValue( $elem ) };\n\t\t\t\t$( document ).on( eventNameString, function( event ) {\n\t\t\t\t\teventData = $.data( $elem[0], eventId );\n\t\t\t\t\teventData.prevVal = getValue( $elem );\n\t\t\t\t\t$.data( $elem[0], eventId, eventData );\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\t// Store the handler to be able to determine whether handler has been triggered already\n\t\t\t// when issuing a .trigger(Handler)():\n\t\t\teventData.handlers.push( handleObj.handler );\n\t\t\t$.data( this, eventId, eventData );\n\n\t\t\t// Delegate the \"eachchange\" event to the supported input event(s):\n\t\t\t$elem.on( eventNameString, function( event ) {\n\t\t\t\teventData = $.data( this, eventId );\n\n\t\t\t\tif ( !eventData ) {\n\t\t\t\t\t// Event has been removed but event handler is in the loop.\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tevent.origType = event.type;\n\t\t\t\tevent.type = 'eachchange';\n\n\t\t\t\thandleObj.handler.call( this, event, eventData.prevVal );\n\t\t\t} );\n\t\t},\n\n\t\tremove: function( handleObj ) {\n\t\t\tvar eventId = EVENT_ID + handleObj.namespace;\n\t\t\t$( this ).off( '.' + eventId );\n\t\t\t$( document ).off( '.' + eventId );\n\t\t\t$.removeData( this, eventId );\n\t\t},\n\n\t\ttrigger: function( event, data ) {\n\t\t\t// Since the value might have changed multiple times programmatically before calling\n\t\t\t// .trigger(Handlers)(), the previous value will be set to the current value and\n\t\t\t// forwarded to the handler(s) when issuing .trigger(Handler)().\n\t\t\tvar self = this,\n\t\t\t\tprevVal = getValue( $( this ) );\n\n\t\t\t$.each( $.data( this ), function( eventId, eventData ) {\n\t\t\t\tif ( eventId.indexOf( EVENT_ID ) === 0 ) {\n\t\t\t\t\teventData.prevVal = prevVal;\n\t\t\t\t\t$.data( self, eventId, eventData );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// Reset cache of already triggered handlers:\n\t\t\ttriggeredHandlers = [];\n\t\t},\n\n\t\thandle: function( event, data ) {\n\t\t\tif ( event.namespace !== '' ) {\n\t\t\t\tvar eventData = $.data( this, EVENT_ID + event.namespace );\n\t\t\t\tif ( eventData ) {\n\t\t\t\t\tevent.handleObj.handler.call( this, event, eventData.prevVal );\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tvar self = this;\n\n\t\t\t\t$.each( $.data( this ), function( eventId, eventData ) {\n\t\t\t\t\tif ( eventId.indexOf( EVENT_ID ) !== 0 ) {\n\t\t\t\t\t\t// Event is not an eachchange event.\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar handlers = $.data( self, eventId ).handlers;\n\n\t\t\t\t\tfor ( var i = 0; i < handlers.length; i++ ) {\n\t\t\t\t\t\tif ( !alreadyTriggered( eventId, i ) ) {\n\t\t\t\t\t\t\thandlers[i].call( self, event, eventData.prevVal );\n\n\t\t\t\t\t\t\ttriggeredHandlers.push( {\n\t\t\t\t\t\t\t\tid: eventId,\n\t\t\t\t\t\t\t\tindex: i\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t};\n\n}() );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/lib/jquery.ui/jquery.ui.commonssuggester.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/lib/jquery.ui/jquery.ui.inputextender.js","messages":[{"ruleId":"mediawiki/class-doc","severity":1,"message":"All possible CSS classes should be documented. See https://w.wiki/PS2 for details.","line":174,"column":3,"nodeType":"CallExpression","endLine":174,"endColumn":59},{"ruleId":"mediawiki/class-doc","severity":1,"message":"All possible CSS classes should be documented. See https://w.wiki/PS2 for details.","line":552,"column":3,"nodeType":"CallExpression","endLine":552,"endColumn":86}],"errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"( function () {\n\t'use strict';\n\n/**\n * Caches whether the widget is used in a rtl context. This, however, depends on using an \"rtl\"\n * class on the document body like it is done in MediaWiki.\n *\n * @property {boolean} [IS_RTL=false]\n * @ignore\n */\nvar IS_RTL = false;\n\n$( document ).ready( function() {\n\tIS_RTL = $( 'body' ).hasClass( 'rtl' );\n} );\n\n/**\n * Collection for keeping track which input extender widgets have their extension shown at the\n * moment.\n *\n * @property {jQuery.ui.inputextender} [inputExtendersWithVisibleExtension=Object]\n * @ignore\n */\nvar inputExtendersWithVisibleExtension = ( function() {\n\tvar inputExtenders = [];\n\treturn {\n\t\tadd: function( inputExtenderInstance ) {\n\t\t\tvar index = $.inArray( inputExtenderInstance, inputExtenders );\n\t\t\tif ( index < 0 ) {\n\t\t\t\tinputExtenders.push( inputExtenderInstance );\n\t\t\t}\n\t\t},\n\t\tremove: function( inputExtenderInstance ) {\n\t\t\tvar index = $.inArray( inputExtenderInstance, inputExtenders );\n\t\t\tif ( index > -1 ) {\n\t\t\t\tinputExtenders.splice( index, 1 );\n\t\t\t}\n\t\t},\n\t\tget: function() {\n\t\t\t// Make sure this is up to date and they are really visible.\n\t\t\treturn $.grep( inputExtenders, function( inputExtenderInstance ) {\n\t\t\t\treturn inputExtenderInstance.extensionIsVisible();\n\t\t\t} );\n\t\t}\n\t};\n}() );\n\n/**\n * Input extender widget\n *\n * The input extender extends an input element with additional contents displayed underneath the.\n * (uses `jQuery.animateWithEvent`, `jQuery.ui.position`)\n *\n * @class jQuery.ui.inputextender\n * @extends jQuery.Widget\n * @uses jQuery.event.special.eachchange\n * @uses jQuery.ui\n * @license GNU GPL v2+\n * @author H. Snater < mediawiki@snater.com >\n * @author Daniel Werner < daniel.a.r.werner@gmail.com >\n *\n * @constructor\n *\n * @param {Object} [options]\n * @param {jQuery[]} [options.content=[]]\n *        Default/\"fixed\" extender contents that always should be visible as long as the extension\n *        itself is visible.\n * @param {Function|null} [options.initCallback=null]\n *        Function triggered before the extension is being shown for the first time. This may be\n *        used to init some widgets that need to be visible on initialization for measuring\n *        dimension according to their container's styles.\n *        Context of the callback is the widget, first parameter is the extension's DOM in a jQuery\n *        container.\n * @param {boolean} [options.hideWhenInputEmpty=true]\n *        Whether all of the input extender's contents shall be hidden when the associated input\n *        element is empty.\n * @param {string} [options.contentAnimationEvents='']\n *        One or more events (separated with spaces) which imply that the input extenders\n *        extension's content is about to be animated. Those events should give a\n *        `jQuery.AnimationEvent` object as their event object. If this is the case and the event\n *        bubbles up to the input extender's extension node, then this will trigger the\n *        `contentanimation` event on the widget node.\n */\n/**\n * @event animation\n * Triggered at the beginning of an animation of the input's extension.\n * @param {jQuery.AnimationEvent} animationEvent\n */\n/**\n * @event contentanimation\n * Triggered at the beginning of an animation of the extender's extension content. Depends on the\n * \"contentAnimationEvents\" option.\n * @param {jQuery.AnimationEvent} animationEvent\n * The animation event gets passed on from the event within the input extender's extension\n * causing the \"contentanimation\" event.\n */\n/**\n * @event aftertoggle\n * Triggered after showExtension or hideExtension has been called. At this point extension() will\n * already return the extension's node but the extension might still not be visible for the user\n * since the animation has just been started.\n * @param {jQuery.Event} event\n */\n$.widget( 'ui.inputextender', {\n\t/**\n\t * @see jQuery.Widget.options\n\t * @protected\n\t * @readonly\n\t */\n\toptions: {\n\t\tcontent: [],\n\t\tcontentAnimationEvents: '',\n\t\tinitCallback: null,\n\t\thideWhenInputEmpty: true,\n\t\tposition: {\n\t\t\tmy: 'left top',\n\t\t\tat: 'left bottom',\n\t\t\tcollision: 'none',\n\t\t\toffset: '-4 2'\n\t\t}\n\t},\n\n\t/**\n\t * The input extension's node. Will be null until the extension is required for the first\n\t * time.\n\t *\n\t * @protected Use extension() instead. extension() will return null if the _$extension is not\n\t *            being used. _$extension might be destroyed in that case in future versions, so\n\t *            do not rely on it being set all of the time after its first initialization.\n\t * @property {jQuery|null}\n\t */\n\t_$extension: null,\n\n\t/**\n\t * Whether the input extender is in its extended state right now.\n\t *\n\t * @property {boolean} [_isExtended=false]\n\t * @protected\n\t */\n\t_isExtended: false,\n\n\t/**\n\t * Whether the input extender is visible\n\t *\n\t * @property {boolean} [_extensionIsVisible=false]\n\t * @protected\n\t */\n\t_extensionIsVisible: false,\n\n\t/**\n\t * Caches the timeout when the actual input extender animation should kick in.\n\t *\n\t * @property {number}\n\t * @protected\n\t */\n\t_animationTimeout: null,\n\n\t/**\n\t * Caches the element's offset to determine whether the input extension has to be\n\t * repositioned on draw() calls.\n\t *\n\t * @property {Object}\n\t * @protected\n\t */\n\t_offset: null,\n\n\t/**\n\t * @see jQuery.Widget._create\n\t * @protected\n\t */\n\t_create: function() {\n\t\tvar self = this;\n\n\t\tthis.element.addClass( this.widgetBaseClass + '-input' );\n\n\t\t// TODO: focus per mouse and tab should be treated differently. Focus by tab should\n\t\t//  leave enough time to tab again, by mouse the extension can be shown immediately.\n\t\tthis.element\n\t\t.on( 'focus.' + this.widgetName, function( event ) {\n\t\t\tif ( !self.options.hideWhenInputEmpty || self.element.val() !== '' ) {\n\t\t\t\tclearTimeout( self._animationTimeout );\n\t\t\t\tself._animationTimeout = setTimeout( function() {\n\t\t\t\t\tself.showExtension();\n\t\t\t\t}, 250 ); // TODO: Fixed values can't be changed nor turned off\n\t\t\t}\n\t\t} )\n\t\t.on( 'blur.' + this.widgetName, function( event ) {\n\t\t\tif ( self.__extensionFocused ) {\n\t\t\t\tdelete self.__extensionFocused;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tclearTimeout( self._animationTimeout );\n\t\t\tself._animationTimeout = setTimeout( function() {\n\t\t\t\tself.hideExtension();\n\t\t\t}, 250 ); // TODO: Fixed values can't be changed nor turned off\n\t\t} )\n\t\t.on( 'keydown.' + this.widgetName, function( event ) {\n\t\t\tif ( event.keyCode === $.ui.keyCode.ESCAPE ) {\n\t\t\t\tself.hideExtension();\n\t\t\t} else if ( self.extensionIsVisible()\n\t\t\t\t&& event.keyCode === $.ui.keyCode.TAB\n\t\t\t\t&& !event.shiftKey\n\t\t\t) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\t// When tabbing out of the input element, focus the first focusable element\n\t\t\t\t// within the extension.\n\t\t\t\tvar $focusable = self._$extension.find( ':focusable' );\n\t\t\t\tif ( $focusable.length ) {\n\t\t\t\t\t$focusable.first().focus();\n\t\t\t\t\tclearTimeout( self._animationTimeout );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\tif ( this.options.hideWhenInputEmpty ) {\n\t\t\tthis.element.on( 'eachchange', function( event, oldValue ) {\n\t\t\t\tif ( self.element.val() === '' ) {\n\t\t\t\t\tself.hideExtension();\n\t\t\t\t} else {\n\t\t\t\t\tself.showExtension();\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t$( 'html' )\n\t\t.off( '.' + this.widgetName )\n\t\t// Blurring by clicking away from the widget (one handler is sufficient):\n\t\t.on( 'click.' + this.widgetName, function( event ) {\n\t\t\t// Loop through all widgets and hide content when having clicked out of it:\n\t\t\t$( ':' + self.widgetBaseClass ).each( function( i, widgetNode ) {\n\t\t\t\tvar widget = $( widgetNode ).data( self.widgetName ),\n\t\t\t\t\t$target = $( event.target );\n\n\t\t\t\t// Hide the extension neither it nor the corresponding input element is\n\t\t\t\t// clicked:\n\t\t\t\tif ( !$target.closest( widget.element.add( widget._$extension ) ).length ) {\n\t\t\t\t\twidget.hideExtension();\n\t\t\t\t}\n\n\t\t\t} );\n\t\t} );\n\n\t\tif ( this.element.is( ':focus' ) ) {\n\t\t\tthis.showExtension();\n\t\t} else {\n\t\t\tthis.draw();\n\t\t}\n\t},\n\n\t/**\n\t * @see jQuery.Widget.destroy\n\t */\n\tdestroy: function() {\n\t\tif ( this.extensionIsActive() ) {\n\t\t\t// Hide extension the official way, make sure events getting triggered.\n\t\t\tthis.hideExtension();\n\t\t}\n\n\t\tif ( this._$extension ) {\n\t\t\t// Stop any ongoing extension hiding animation immediately, jump to its end.\n\t\t\tthis._$extension.stop( false, true );\n\t\t\tthis._$extension.remove();\n\t\t\tthis._$extension = null;\n\t\t}\n\n\t\t$.Widget.prototype.destroy.call( this );\n\t},\n\n\t/**\n\t * Shows the extension.\n\t *\n\t * @param {Function} [callback] Invoked as soon as the extension's show animation is done.\n\t */\n\tshowExtension: function( callback ) {\n\t\tif ( !this._isExtended ) {\n\t\t\tthis._isExtended = true;\n\t\t\tthis.draw( callback );\n\t\t\tthis._trigger( 'aftertoggle' );\n\t\t}\n\t},\n\n\t/**\n\t * Hides the extension.\n\t *\n\t * @param {Function} [callback] Invoked as soon as the extension's hide animation is done.\n\t */\n\thideExtension: function( callback ) {\n\t\tif ( this._isExtended ) {\n\t\t\tthis._isExtended = false;\n\t\t\tthis.draw( callback );\n\t\t\tthis._trigger( 'aftertoggle' );\n\t\t}\n\t},\n\n\t/**\n\t * Returns the input extension's node or null in case the extension is currently not in its\n\t * visible state.\n\t *\n\t * @return {jQuery|null}\n\t */\n\textension: function() {\n\t\treturn this.extensionIsVisible() ? this._$extension : null;\n\t},\n\n\t/**\n\t * Returns whether the extension is currently active.\n\t *\n\t * @return {boolean}\n\t */\n\textensionIsActive: function() {\n\t\treturn this._isExtended;\n\t},\n\n\t/**\n\t * Returns whether the extension is currently visible. Will still return true after\n\t * hideExtension() got called until the hide animation will be completed.\n\t *\n\t * @return {boolean}\n\t */\n\textensionIsVisible: function() {\n\t\tif ( !this._$extension ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this._extensionIsVisible;\n\t},\n\n\t/**\n\t * Draws the widget.\n\t *\n\t * @param {Function} [callback] Parameter is for private use only.\n\t */\n\tdraw: function( callback ) {\n\t\tthis.element[ this._isExtended ? 'addClass' : 'removeClass' ](\n\t\t\tthis.widgetBaseClass + '-extended' );\n\n\t\tthis._drawExtension( callback );\n\t},\n\n\t/**\n\t * @protected\n\t *\n\t * @param {Function} [callback]\n\t */\n\t_drawExtension: function( callback ) {\n\t\tvar extensionIsVisible = this.extensionIsVisible(),\n\t\t\t$extension = this._$extension;\n\n\t\tif ( !extensionIsVisible && !this._isExtended ) {\n\t\t\t// Extension not displayed and not supposed to be displayed.\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !$extension ) {\n\t\t\t$extension = this._buildExtension();\n\t\t\tthis._$extension = $extension;\n\t\t\t$extension.appendTo( $( 'body' ) );\n\n\t\t\tif ( $.isFunction( this.options.initCallback ) ) {\n\t\t\t\t$extension.show();\n\t\t\t\tthis.options.initCallback.call( this, $extension );\n\t\t\t\t$extension.hide();\n\t\t\t}\n\t\t}\n\n\t\t// Element needs to be visible to use jquery.ui.position.\n\t\tif ( !extensionIsVisible ) {\n\t\t\t$extension.show();\n\t\t\tthis._reposition();\n\t\t\t$extension.hide();\n\t\t} else {\n\t\t\tthis._reposition();\n\t\t}\n\n\t\tif ( extensionIsVisible !== this._isExtended ) {\n\t\t\t// Represent actual expansion status:\n\t\t\tif ( this._isExtended ) {\n\t\t\t\tthis._drawExtensionExpansion( callback );\n\t\t\t} else {\n\t\t\t\tthis._drawExtensionRemoval( callback );\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * @protected\n\t *\n\t * @param {Function} callback\n\t */\n\t_drawExtensionExpansion: function( callback ) {\n\t\tvar self = this;\n\t\tthis._extensionIsVisible = true;\n\n\t\t// When blurring the browser viewport and an re-focusing, Chrome is firing the \"focus\"\n\t\t// event twice. jQuery fadeIn sets the opacity to 0 for the first fadeIn but does not\n\t\t// pick up the value when triggering fadeIn the second time.\n\t\tif ( this._$extension.css( 'opacity' ) === '0' ) {\n\t\t\tthis._$extension.css( 'opacity', '1' );\n\t\t}\n\n\t\tthis._$extension.stop( true ).animateWithEvent(\n\t\t\t'extensionexpansion',\n\t\t\t'fadeIn',\n\t\t\t{\n\t\t\t\tduration: 100,\n\t\t\t\tcomplete: function() {\n\t\t\t\t\tif ( $.isFunction( callback ) ) {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tfunction( animationEvent ) {\n\t\t\t\tself._trigger( 'animation', animationEvent );\n\t\t\t}\n\t\t);\n\t\tinputExtendersWithVisibleExtension.add( this );\n\t},\n\n\t/**\n\t * @protected\n\t *\n\t * @param {Function} [callback]\n\t */\n\t_drawExtensionRemoval: function( callback ) {\n\t\tvar self = this;\n\t\tthis._extensionIsVisible = false;\n\n\t\tthis._$extension.stop( true ).animateWithEvent(\n\t\t\t'extensionremoval',\n\t\t\t'fadeOut',\n\t\t\t{\n\t\t\t\tduration: 100,\n\t\t\t\tcomplete: function() {\n\t\t\t\t\tinputExtendersWithVisibleExtension.remove( self );\n\t\t\t\t\tif ( $.isFunction( callback ) ) {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tfunction( animationEvent ) {\n\t\t\t\tself._trigger( 'animation', animationEvent );\n\t\t\t}\n\t\t);\n\t},\n\n\t/**\n\t * Repositions the extension.\n\t *\n\t * @protected\n\t */\n\t_reposition: function() {\n\t\tvar offset = this.element.offset(),\n\t\t\tvOffsetChanged = this._offset && offset.top !== this._offset.top,\n\t\t\thOffsetChanged = this._offset && ( offset.left !== this._offset.left\n\t\t\t\t|| IS_RTL && offset.right !== this._offset.right );\n\n\t\tif ( this._offset && ( vOffsetChanged || hOffsetChanged ) ) {\n\t\t\treturn; // Position has not changed.\n\t\t}\n\n\t\t/**\n\t\t * Flips the position string in RTL context.\n\t\t *\n\t\t * @param {string} string\n\t\t * @return {string}\n\t\t */\n\t\tfunction evaluateRtl( string ) {\n\t\t\tif ( IS_RTL ) {\n\t\t\t\tstring = ( string.indexOf( 'left' ) !== -1 )\n\t\t\t\t\t? string.replace( /left/ig, 'right' )\n\t\t\t\t\t: string.replace( /right/ig, 'left' );\n\t\t\t}\n\t\t\treturn string;\n\t\t}\n\n\t\tvar positionParams = {\n\t\t\tof: this.element,\n\t\t\tmy: evaluateRtl( this.options.position.my ),\n\t\t\tat: evaluateRtl( this.options.position.at )\n\t\t};\n\n\t\t// TODO: Repositioning is not optimal in RTL context when hitting the toggler in the\n\t\t//  extension to hide additional input. This seems to be caused by a width\n\t\t//  miscalculation which can be debugged with \"console.log( this._$extension.width() )\".\n\t\tthis._$extension.position( $.extend( {}, this.options.position, positionParams ) );\n\n\t\tthis._offset = offset;\n\t},\n\n\t/**\n\t * @protected\n\t *\n\t * @return {jQuery}\n\t */\n\t_buildExtension: function() {\n\t\tvar self = this;\n\t\tvar $closeButton = this._buildExtensionCloseButton();\n\t\tvar $extension = $( '<div/>', {\n\t\t\tclass: this.widgetBaseClass + '-extension ui-widget-content'\n\t\t} );\n\n\t\t$closeButton.append( this.options.content );\n\n\t\t$extension\n\t\t.append( $closeButton )\n\t\t.on( 'mousedown.' + this.widgetName, function( event ) {\n\t\t\tif ( !$( event.target ).closest( $closeButton ).length ) {\n\t\t\t\tself.__extensionFocused = true;\n\t\t\t\tclearTimeout( self._animationTimeout );\n\t\t\t\tself.showExtension();\n\t\t\t}\n\t\t} )\n\t\t.on( this.options.contentAnimationEvents, function( animationEvent ) {\n\t\t\tself._reposition();\n\t\t\tself._trigger( 'contentanimation', animationEvent );\n\t\t} )\n\t\t.on( 'keydown.' + this.widgetName, function( event ) {\n\t\t\t// Take care of tabbing out of the extension again:\n\t\t\tif ( event.keyCode === $.ui.keyCode.TAB ) {\n\t\t\t\tvar $focusable = self._$extension.find( ':focusable' );\n\n\t\t\t\tif ( $focusable.first().is( event.target ) && event.shiftKey ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t// Tab back to the input element:\n\t\t\t\t\tself.element.focus();\n\t\t\t\t} else if ( $focusable.last().is( event.target ) && !event.shiftKey ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t// Tabbing forward out of the extension: Focus the next focusable element\n\t\t\t\t\t// after the input element.\n\t\t\t\t\t$focusable = $( ':focusable' );\n\t\t\t\t\t$focusable.each( function( i, node ) {\n\t\t\t\t\t\tif ( self.element.is( node ) ) {\n\t\t\t\t\t\t\tself.hideExtension();\n\t\t\t\t\t\t\t$focusable[ ( i + 1 >= $focusable.length ) ? 0 : i + 1 ].focus();\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t\treturn $extension;\n\t},\n\n\t/**\n\t * @protected\n\t *\n\t * @return {jQuery}\n\t */\n\t_buildExtensionCloseButton: function() {\n\t\tvar self = this,\n\t\t\t$closeButton = $( '<div/>' ),\n\t\t\t$closeIcon = $( '<div/>' ).addClass( 'ui-icon ui-icon-close' );\n\n\t\t$closeButton.addClass( this.widgetBaseClass + '-extension-close ui-state-default' );\n\n\t\t$closeButton.on( 'mouseover.' + this.widgetName, function( event ) {\n\t\t\t$( this ).addClass( 'ui-state-hover' );\n\t\t} )\n\t\t.on( 'mouseout.' + this.widgetName, function( event ) {\n\t\t\t$( this ).removeClass( 'ui-state-hover' );\n\t\t} )\n\t\t.on( 'click.' + this.widgetName, function( event ) {\n\t\t\tself.hideExtension();\n\t\t} )\n\t\t.append( $closeIcon );\n\n\t\treturn $closeButton;\n\t}\n} );\n\n/**\n * Returns all the widget instances with currently visible extensions.\n *\n * @member jQuery.ui.inputextender\n * @method getInstancesWithVisibleExtensions\n * @static\n *\n * @return {jQuery.ui.inputextender[]}\n */\n$.ui.inputextender.getInstancesWithVisibleExtensions = function() {\n\treturn inputExtendersWithVisibleExtension.get();\n};\n\n/**\n * Will redraw all currently visible extensions of all input extender instances.\n * This is useful when changing the DOM, making sure that extensions are still next to their\n * input boxes in case position of the input boxes has changed.\n *\n * @member jQuery.ui.inputextender\n * @method redrawVisibleExtensions\n * @static\n */\n$.ui.inputextender.redrawVisibleExtensions = function() {\n\t$.each( $.ui.inputextender.getInstancesWithVisibleExtensions(), function( i, instance ) {\n\t\tinstance.draw();\n\t} );\n};\n\n}() );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/lib/jquery.ui/jquery.ui.languagesuggester.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/lib/jquery.ui/jquery.ui.listrotator.js","messages":[{"ruleId":"mediawiki/class-doc","severity":1,"message":"All possible CSS classes should be documented. See https://w.wiki/PS2 for details.","line":124,"column":3,"nodeType":"CallExpression","endLine":124,"endColumn":71},{"ruleId":"mediawiki/class-doc","severity":1,"message":"All possible CSS classes should be documented. See https://w.wiki/PS2 for details.","line":130,"column":24,"nodeType":"CallExpression","endLine":131,"endColumn":51},{"ruleId":"mediawiki/class-doc","severity":1,"message":"All possible CSS classes should be documented. See https://w.wiki/PS2 for details.","line":177,"column":3,"nodeType":"CallExpression","endLine":177,"endColumn":74},{"ruleId":"mediawiki/class-doc","severity":1,"message":"All possible CSS classes should be documented. See https://w.wiki/PS2 for details.","line":228,"column":10,"nodeType":"CallExpression","endLine":229,"endColumn":64},{"ruleId":"mediawiki/class-doc","severity":1,"message":"All possible CSS classes should be documented. See https://w.wiki/PS2 for details.","line":242,"column":12,"nodeType":"CallExpression","endLine":242,"endColumn":87},{"ruleId":"mediawiki/class-doc","severity":1,"message":"All possible CSS classes should be documented. See https://w.wiki/PS2 for details.","line":278,"column":16,"nodeType":"CallExpression","endLine":279,"endColumn":46},{"ruleId":"no-shadow","severity":1,"message":"'newValue' is already declared in the upper scope on line 363 column 23.","line":371,"column":75,"nodeType":"Identifier","messageId":"noShadow","endLine":371,"endColumn":83}],"errorCount":0,"warningCount":7,"fixableErrorCount":0,"fixableWarningCount":0,"source":"( function () {\n\t'use strict';\n\n/**\n * Measures the maximum width of a container according to a list of strings. The width is\n * determined by the widest string.\n *\n * @ignore\n *\n * @param {jQuery} $container\n * @param {string[]} strings\n * @return {number[]} The container's maximum width in pixel\n */\nfunction measureMaximumStringWidths( $container, strings ) {\n\tvar widths = [];\n\t$.each( strings, function( i, string ) {\n\t\t$container.empty().text( string );\n\t\twidths.push( $container.width() );\n\t} );\n\t$container.empty();\n\treturn widths;\n}\n\n/**\n * List rotator widget\n *\n * The list rotator may be used to rotate through a list of values. The previous and next value\n * according to the currently selected value are displayed as links next to the current value. In\n * addition, clicking the current value reveals a drop-down list to directly select a value from the\n * list values.\n * (uses `jQuery.ui.menu`, `jQuery.ui.position`)\n *\n * @class jQuery.ui.listrotator\n * @extends jQuery.Widget\n * @uses jQuery.ui\n * @license GNU GPL v2+\n * @author H. Snater < mediawiki@snater.com >\n *\n * @constructor\n *\n * @param {Object} options\n * @param {Object[]} options.values\n *        Array of objects containing the values to rotate.\n *        Single object structure:\n *        `{ value: actual value (being returned on value()), label: the value's label }`\n * @param {Object} [options.menu=Object]\n *        Options for the `jQuery.ui.menu` widget used as drop-down menu:\n * @param {Object} [options.menu.position=Object]\n *        Default object passed to `jQuery.ui.position` when positioning the menu. Positions will be\n *        flipped if isRtl option returns `true`.\n * @param {boolean} [options.deferInit=false]\n *        Whether to defer initializing the section widths until `initWidths()` is called\n *        \"manually\".\n * @param {util.MessageProvider} options.messageProvider\n */\n/**\n * @event selected\n * Triggered when a specific value is selected.\n * @param {jQuery.Event} event\n * @param {*} value Value as specified in the `values` option.\n */\n/**\n * @event auto\n * Triggered when \"manually\" checkbox is toggled.\n * @param {jQuery.Event} event\n */\n$.widget( 'ui.listrotator', {\n\t/**\n\t * @see jQuery.Widget.options\n\t * @protected\n\t * @readonly\n\t */\n\toptions: {\n\t\tvalues: [],\n\t\tmenu: {\n\t\t\tposition: {\n\t\t\t\tmy: 'left top',\n\t\t\t\tat: 'left bottom',\n\t\t\t\tcollision: 'none'\n\t\t\t}\n\t\t},\n\t\tdeferInit: false,\n\t\tmessageProvider: null\n\t},\n\n\t/**\n\t * Node of the current list item section.\n\t *\n\t * @property {jQuery}\n\t * @protected\n\t * @readonly\n\t */\n\t$curr: null,\n\n\t/**\n\t * @property {jQuery}\n\t * @protected\n\t * @readonly\n\t */\n\t$manually: null,\n\n\t/**\n\t * Node of the menu opening when clicking on the \"current\" section.\n\t *\n\t * @property {jQuery}\n\t * @protected\n\t * @readonly\n\t */\n\t$menu: null,\n\n\t/**\n\t * @see jQuery.Widget._create\n\t * @protected\n\t *\n\t * @throws {Error} if no values are supplied.\n\t */\n\t_create: function() {\n\t\tvar self = this;\n\n\t\tif ( this.options.values.length === 0 ) {\n\t\t\tthrow new Error( 'List of values required to initialize list rotator.' );\n\t\t}\n\n\t\tthis.element.addClass( this.widgetBaseClass + ' ui-widget-content' );\n\n\t\tthis.$curr = this._createCurrentLink();\n\t\tthis.$manually = this._createManuallyCheckbox();\n\n\t\tthis.element.append( this.$curr );\n\t\tthis.element.append( $( '<label/>' )\n\t\t\t.addClass( this.widgetBaseClass + '-manually' )\n\t\t\t.text( this.options.messageProvider.getMessage( 'valueview-listrotator-manually' ) )\n\t\t\t.prepend( this.$manually ) );\n\n\t\t// Construct and initialize menu widget:\n\t\tthis._createMenu();\n\n\t\t// Attach event to html node to detect click outside of the menu closing the menu:\n\t\t$( 'html' )\n\t\t.off( '.' + this.widgetName )\n\t\t.on( 'click.' + this.widgetName, function( event ) {\n\t\t\t$( ':' + self.widgetBaseClass ).each( function( i, node ) {\n\t\t\t\tvar $target = $( event.target ),\n\t\t\t\t\tlistrotator = $( node ).data( 'listrotator' );\n\n\t\t\t\t// Hide the menu if it is neither the \"current\" node nor the menu's node that\n\t\t\t\t// has been clicked.\n\t\t\t\tif ( !$target.closest( listrotator.$curr.add( listrotator.$menu ) ).length ) {\n\t\t\t\t\tlistrotator.$menu.hide();\n\t\t\t\t}\n\n\t\t\t} );\n\t\t} );\n\n\t\t// Focus on first element:\n\t\tthis.value( this.options.values[0].value );\n\n\t\tif ( !this.options.deferInit ) {\n\t\t\tthis.initWidths();\n\t\t}\n\n\t},\n\n\t/**\n\t * @see jQuery.Widget.destroy\n\t */\n\tdestroy: function() {\n\t\tvar menu = this.$menu.data( 'menu' );\n\t\tif ( menu ) {\n\t\t\tmenu.destroy();\n\t\t}\n\n\t\tthis.$menu.remove();\n\t\tthis.$manually.remove();\n\t\tthis.$curr.remove();\n\n\t\tthis.element.removeClass( this.widgetBaseClass + ' ui-widget-content' );\n\n\t\t$.Widget.prototype.destroy.call( this );\n\n\t\t// Remove event attached to the html node if no instances of the widget exist anymore:\n\t\tif ( $( ':' + this.widgetBaseClass ).length === 0 ) {\n\t\t\t$( 'html' ).off( '.' + this.widgetBaseClass );\n\t\t}\n\t},\n\n\t/**\n\t * Init the section widths.\n\t */\n\tinitWidths: function() {\n\t\t// Determine the maximum width a label may have and apply that width to each section:\n\t\tvar currentLabel = this.$curr.children( '.' + this.widgetBaseClass + '-label' ).text(),\n\t\t\tlabels = [],\n\t\t\tcurrMaxWidth = 0;\n\n\t\t$.each( this.options.values, function( i, v ) {\n\t\t\tlabels.push( v.label );\n\t\t} );\n\n\t\tvar stringWidths = measureMaximumStringWidths(\n\t\t\tthis.$curr.children( '.' + this.widgetBaseClass + '-label' ),\n\t\t\tlabels\n\t\t);\n\t\t$.each( stringWidths, function( i, width ) {\n\t\t\tif ( width > currMaxWidth ) {\n\t\t\t\tcurrMaxWidth = width;\n\t\t\t}\n\t\t} );\n\n\t\tthis.$curr.children( '.' + this.widgetBaseClass + '-label' ).width( currMaxWidth );\n\n\t\t// Make menu width comply to the \"current\" section:\n\t\tvar menuSpacing = this.$menu.outerWidth() - this.$menu.width();\n\t\tthis.$menu.width( this.$curr.outerWidth() - menuSpacing );\n\n\t\t// Reset \"current\" section's label:\n\t\tthis.$curr.children( '.' + this.widgetBaseClass + '-label' ).text( currentLabel );\n\t},\n\n\t/**\n\t * @private\n\t *\n\t * @return {jQuery}\n\t */\n\t_createCurrentLink: function() {\n\t\tvar self = this;\n\n\t\treturn $( '<a/>' )\n\t\t.addClass( this.widgetBaseClass + '-curr ui-state-disabled' )\n\t\t.on( 'click.' + this.widgetBaseClass, function( event ) {\n\t\t\tevent.preventDefault();\n\n\t\t\tself.$manually[0].checked = true;\n\t\t\t$( this ).removeClass( 'ui-state-disabled' );\n\n\t\t\tif ( !self.$menu.is( ':visible' ) ) {\n\t\t\t\tself._showMenu();\n\t\t\t} else {\n\t\t\t\tself._hideMenu();\n\t\t\t}\n\t\t} )\n\t\t.append( $( '<span/>' ).addClass( this.widgetBaseClass + '-label ui-state-default' ) )\n\t\t.append( $( '<span/>' ).addClass( 'ui-icon ui-icon-triangle-1-s' ) );\n\t},\n\n\t/**\n\t * @private\n\t *\n\t * @return {jQuery}\n\t */\n\t_createManuallyCheckbox: function() {\n\t\tvar self = this;\n\n\t\treturn $( '<input/>' )\n\t\t\t.attr( 'type', 'checkbox' )\n\t\t\t.on( 'change', function( event ) {\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tvar checked = event.target.checked;\n\t\t\t\tself.$curr.toggleClass( 'ui-state-disabled', !checked );\n\t\t\t\tif ( checked ) {\n\t\t\t\t\tself.activate();\n\t\t\t\t} else {\n\t\t\t\t\tself.$curr.removeClass( 'ui-state-active' );\n\t\t\t\t\tself._trigger( 'auto' );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\n\t/**\n\t * Create the drop-down menu assigned to the \"current\" section.\n\t *\n\t * @protected\n\t */\n\t_createMenu: function() {\n\t\tvar self = this;\n\n\t\tthis.$menu = $( '<ul/>' )\n\t\t.addClass( this.widgetBaseClass + '-menu' )\n\t\t.appendTo( $( 'body' ) ).hide();\n\n\t\t$.each( this.options.values, function( i, v ) {\n\t\t\tself._addMenuItem( v );\n\t\t} );\n\n\t\tthis.$menu.menu();\n\t},\n\n\t/**\n\t * @protected\n\t *\n\t * @param {Object} item\n\t * @return {jQuery}\n\t */\n\t_addMenuItem: function( item ) {\n\t\tvar self = this;\n\t\treturn $( '<li/>' )\n\t\t\t.append(\n\t\t\t\t$( '<a/>' )\n\t\t\t\t.text( item.label )\n\t\t\t\t.on( 'click', function( event ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\tself._trigger( 'selected', null, [ self.value( item.value ) ] );\n\t\t\t\t\tself.$menu.hide();\n\t\t\t\t} )\n\t\t\t)\n\t\t\t.data( 'value', item.value )\n\t\t\t.appendTo( this.$menu );\n\t},\n\n\t// TODO: Change behavior: value as setter should return \"this\" for allowing chaining calls\n\t//  to the widget.\n\t/**\n\t * Sets/Gets the widget's value. Setting the value involves setting the rotator to the\n\t * specified value without any animation.\n\t *\n\t * @param {*} [value] The value to assign. (Has to match a value actually existing in the widget's\n\t *        options.)\n\t * @return {*} Current value.\n\t */\n\tvalue: function( value ) {\n\t\t// Get the current value:\n\t\tif ( value === undefined || value === this.$curr.data( 'value' ) ) {\n\t\t\treturn this.$curr.data( 'value' );\n\t\t}\n\n\t\tvar values = this.options.values,\n\t\t\tindex = 0;\n\n\t\tthis.$curr.children( '.' + this.widgetBaseClass + '-label' ).empty();\n\n\t\t// Retrieve the index of the new value within the list of predefined values:\n\t\t$.each( values, function( i, v ) {\n\t\t\tif ( value === v.value ) {\n\t\t\t\tindex = i;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} );\n\n\t\t// Re-construct each section:\n\t\tthis.$curr\n\t\t.data( 'value', values[index].value )\n\t\t.children( '.' + this.widgetBaseClass + '-label' )\n\t\t.text( values[index].label );\n\n\t\t// Alter menu item states:\n\t\tthis.$menu.children( 'li' ).each( function( i, li ) {\n\t\t\tvar $li = $( li );\n\t\t\t$li.toggleClass( 'ui-state-active', value === $li.data( 'value' ) );\n\t\t} );\n\n\t\treturn value;\n\t},\n\n\t/**\n\t * Sets a new value rotating to the new value.\n\t *\n\t * @protected\n\t *\n\t * @param {*} newValue\n\t */\n\t_setValue: function( newValue ) {\n\t\tvar self = this;\n\n\t\tif ( this.$curr.data( 'value' ) === newValue ) {\n\t\t\t// Value is set already.\n\t\t\treturn;\n\t\t}\n\n\t\tthis.element.one( this.widgetEventPrefix + 'selected', function( event, newValue ) {\n\t\t\tself.activate();\n\t\t} );\n\n\t\tthis._trigger( 'selected', null, [ this.value( newValue ) ] );\n\t},\n\n\t/**\n\t * Activates the widget.\n\t *\n\t * @param {jQuery} [$section] Section to activate. \"Current\" section by default.\n\t */\n\tactivate: function( $section ) {\n\t\tthis.$curr.removeClass( 'ui-state-active ui-state-disabled ui-state-hover' );\n\n\t\tif ( $section === undefined ) {\n\t\t\t$section = this.$curr;\n\t\t}\n\n\t\t$section.addClass( 'ui-state-active' );\n\n\t\tif ( $section === this.$curr && !this.$manually[0].checked ) {\n\t\t\tthis.$manually[0].checked = true;\n\t\t}\n\t},\n\n\t/**\n\t * De-activates the widget.\n\t */\n\tdeactivate: function() {\n\t\tthis.$curr.removeClass( 'ui-state-active' );\n\t},\n\n\t/**\n\t * Returns whether the listrotator is currently not set to \"manually\", meaning that the value\n\t * returned by value() has not been chosen by the user explicitly.\n\t *\n\t * @return {boolean}\n\t */\n\tautoActive: function() {\n\t\treturn !this.$manually[0].checked;\n\t},\n\n\t/**\n\t * Shows the drop-down menu.\n\t *\n\t * @protected\n\t */\n\t_showMenu: function() {\n\t\tthis.$menu.show();\n\n\t\tfunction flip( string ) {\n\t\t\tvar segments = $.map( string.split( ' ' ), function( segment ) {\n\t\t\t\treturn ( segment.indexOf( 'left' ) !== -1 )\n\t\t\t\t\t? segment.replace( 'left', 'right' )\n\t\t\t\t\t: segment.replace( 'right', 'left' );\n\t\t\t} );\n\t\t\treturn segments.join( ' ' );\n\t\t}\n\n\t\tthis.$menu.position( $.extend( {\n\t\t\tof: this.$curr\n\t\t}, {\n\t\t\tmy: flip( this.options.menu.position.my ),\n\t\t\tat: flip( this.options.menu.position.at )\n\t\t} ) );\n\n\t\tthis.activate();\n\t},\n\n\t/**\n\t * Hides the drop-down menu.\n\t *\n\t * @protected\n\t */\n\t_hideMenu: function() {\n\t\tthis.$menu.hide();\n\t\tthis.activate();\n\t},\n\n\t/**\n\t * Disables the widget.\n\t */\n\tdisable: function() {\n\t\tthis.$curr.addClass( 'ui-state-disabled' );\n\t},\n\n\t/**\n\t * Enables the widget.\n\t */\n\tenable: function() {\n\t\tthis.$curr.removeClass( 'ui-state-disabled' );\n\t}\n\n} );\n\n}() );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/lib/jquery.ui/jquery.ui.ooMenu.js","messages":[{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"key\" type.","line":88,"column":null,"nodeType":"Block","endLine":88,"endColumn":null},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"value\" type.","line":89,"column":null,"nodeType":"Block","endLine":89,"endColumn":null},{"ruleId":"mediawiki/class-doc","severity":1,"message":"All possible CSS classes should be documented. See https://w.wiki/PS2 for details.","line":187,"column":5,"nodeType":"CallExpression","endLine":187,"endColumn":41},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"event\" type.","line":384,"column":null,"nodeType":"Block","endLine":384,"endColumn":null},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"menu\" type.","line":541,"column":null,"nodeType":"Block","endLine":541,"endColumn":null}],"errorCount":0,"warningCount":5,"fixableErrorCount":0,"fixableWarningCount":0,"source":"( function () {\n'use strict';\n\n/**\n * jQuery.ui.ooMenu provides an object-oriented menu structure. Menu items are managed using\n * specific objects instead of DOM elements.\n * (uses `jQuery.util.getscrollbarwidth`, `util.inherit`)\n *\n * @class jQuery.ui.ooMenu\n * @extends jQuery.Widget\n * @uses jQuery.util\n * @uses util\n * @license GNU GPL v2+\n * @author H. Snater < mediawiki@snater.com >\n *\n * @constructor\n *\n * @param {Object} [options]\n * @param {jQuery.ui.ooMenu.Item[]} [options.items=[]]\n *        List of items to display.\n * @param {jQuery.ui.ooMenu.CustomItem[]} [options.customItems=[]]\n *        List of custom items.\n * @param {Function|null} [options.manipulateLabel=null]\n *        Function applied to each label before rendering, expects {string} to be returned.\n *        Function parameter:\n *\n * - {string} options.manipulateLabel.label\n *\n * @param {number|null} [options.maxItems=10]\n *        Maximum number of visible items. If there are more items, scrollbars will be shown. Set\n *        to \"null\" to never have scrollbars on the menu.\n */\n/**\n * @event focus\n * Triggered when focusing/activating an item.\n * @param {jQuery.Event} event\n * @param {jQuery.ui.ooMenu.Item} item\n */\n/**\n * @event blur\n * Triggered when blurring/deactivating an item.\n * @param {jQuery.Event} event\n */\n/**\n * @event selected\n * Triggered when selecting an item.\n * @param {jQuery.Event} event\n * @param {jQuery.ui.ooMenu.Item|null} item\n */\n$.widget( 'ui.ooMenu', {\n\n\t/**\n\t * @see jQuery.Widget.options\n\t * @protected\n\t * @readonly\n\t */\n\toptions: {\n\t\titems: [],\n\t\tcustomItems: null,\n\t\tmanipulateLabel: null,\n\t\tmaxItems: 10\n\t},\n\n\t/**\n\t * @see jQuery.Widget._create\n\t * @protected\n\t */\n\t_create: function() {\n\t\tthis.options.customItems = this.options.customItems || [];\n\n\t\tthis.element.addClass( 'ui-ooMenu ui-widget ui-widget-content' );\n\n\t\tthis._refresh();\n\t},\n\n\t/**\n\t * @see jQuery.Widget.destroy\n\t */\n\tdestroy: function() {\n\t\tthis.element\n\t\t.removeClass( 'ui-ooMenu ui-widget ui-widget-content' )\n\t\t.empty();\n\n\t\t$.Widget.prototype.destroy.call( this );\n\t},\n\n\t/**\n\t * @param key\n\t * @param value\n\t * @see jQuery.Widget._setOption\n\t * @protected\n\t * @throws {Error} when trying to set `items` or `customItems` option with improper values.\n\t */\n\t_setOption: function( key, value ) {\n\t\tif ( key === 'items' || key === 'customItems' ) {\n\t\t\tif ( !$.isArray( value ) ) {\n\t\t\t\tthrow new Error( key + ' needs to be an array' );\n\t\t\t}\n\n\t\t\tfor ( var i = 0; i < value.length; i++ ) {\n\t\t\t\tif ( key === 'items' && !( value[i] instanceof $.ui.ooMenu.Item )\n\t\t\t\t\t|| key === 'customItems' && !( value[i] instanceof $.ui.ooMenu.CustomItem )\n\t\t\t\t) {\n\t\t\t\t\tthrow new Error( key + ' may only feature specific instances' );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t$.Widget.prototype._setOption.apply( this, arguments );\n\n\t\tif ( key === 'items' || key === 'customItems' ) {\n\t\t\tthis._refresh();\n\t\t} else if ( key === 'maxItems' ) {\n\t\t\tthis.scale();\n\t\t}\n\t},\n\n\t/**\n\t * Updates the menu content.\n\t *\n\t * @protected\n\t */\n\t_refresh: function() {\n\t\tthis.element.empty();\n\t\tthis.element.scrollTop( 0 );\n\t\tfor ( var i = 0; i < this.options.items.length; i++ ) {\n\t\t\tthis._appendItem( this.options.items[i] );\n\t\t}\n\n\t\tfor ( var j = 0; j < this.options.customItems.length; j++ ) {\n\t\t\tif ( this._evaluateVisibility( this.options.customItems[j] ) ) {\n\t\t\t\tthis._appendItem( this.options.customItems[j] );\n\t\t\t}\n\t\t}\n\n\t\tthis.scale();\n\t},\n\n\t/**\n\t * Evaluates whether a custom item is supposed to be visible or not.\n\t *\n\t * @protected\n\t *\n\t * @param {jQuery.ui.ooMenu.CustomItem} customItem\n\t * @return {boolean}\n\t */\n\t_evaluateVisibility: function( customItem ) {\n\t\treturn customItem.getVisibility( this );\n\t},\n\n\t/**\n\t * Appends an item to the menu.\n\t *\n\t * @protected\n\t *\n\t * @param {jQuery.ui.ooMenu.Item} item\n\t */\n\t_appendItem: function( item ) {\n\t\tvar self = this;\n\n\t\tvar label = this.options.manipulateLabel\n\t\t\t? this.options.manipulateLabel( item.getLabel() )\n\t\t\t: item.getLabel();\n\n\t\tvar $a = $( '<a/>' )\n\t\t\t.attr( 'tabindex', -1 )\n\t\t\t.html( label );\n\n\t\tif ( item.getLink() ) {\n\t\t\t$a.attr( 'href', item.getLink() );\n\t\t}\n\n\t\tvar $item = $( '<li/>' )\n\t\t\t.addClass( 'ui-ooMenu-item' )\n\t\t\t.attr( 'dir', 'auto' )\n\t\t\t.data( 'ui-ooMenu-item', item )\n\t\t\t.append( $a );\n\n\t\tif ( item instanceof $.ui.ooMenu.CustomItem ) {\n\t\t\t$item.addClass( 'ui-ooMenu-customItem' );\n\n\t\t\tif ( $.isFunction( item.getAction() ) ) {\n\t\t\t\t$item.addClass( 'ui-ooMenu-customItem-action' );\n\t\t\t}\n\n\t\t\tif ( item.getCssClass() ) {\n\t\t\t\t$item.addClass( item.getCssClass() );\n\t\t\t}\n\t\t}\n\n\t\t$item\n\t\t.on( 'mouseenter.ooMenu', function() {\n\t\t\tself.activate( item );\n\t\t} )\n\t\t.on( 'mouseleave.ooMenu', function() {\n\t\t\tself.deactivate();\n\t\t} )\n\t\t.on( 'mousedown.ooMenu', function( e ) {\n\t\t\tif ( !( e.which !== 1 || e.altKey || e.ctrlKey || e.shiftKey || e.metaKey ) ) {\n\t\t\t\tself.select( e );\n\t\t\t}\n\t\t} );\n\n\t\t$item.appendTo( this.element );\n\t},\n\n\t/**\n\t * Returns whether the menu currently features visible items.\n\t *\n\t * @param {boolean} [includeCustomItems]\n\t * @return {boolean}\n\t */\n\thasVisibleItems: function( includeCustomItems ) {\n\t\tif ( this.options.items.length ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ( !includeCustomItems ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tfor ( var i = 0; i < this.options.customItems.length; i++ ) {\n\t\t\tif ( this._evaluateVisibility( this.options.customItems[i] ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t/**\n\t * Scales the menu's height to the height of maximum list items and takes care of the menu width\n\t * not reaching out of the browser viewport.\n\t */\n\tscale: function() {\n\t\tthis.element\n\t\t.width( 'auto' )\n\t\t.height( 'auto' )\n\t\t.css( 'overflowY', 'visible' );\n\n\t\t// Constrain height:\n\t\tif ( this.options.maxItems ) {\n\t\t\tvar $children = this.element.children();\n\n\t\t\tif ( $children.length > this.options.maxItems ) {\n\t\t\t\tvar fixedHeight = 0;\n\n\t\t\t\tfor ( var i = 0; i < this.options.maxItems; i++ ) {\n\t\t\t\t\tfixedHeight += $children.eq( i ).outerHeight();\n\t\t\t\t}\n\n\t\t\t\tthis.element.width( this.element.outerWidth() + $.util.getscrollbarwidth() );\n\t\t\t\tthis.element.height( fixedHeight );\n\t\t\t\tthis.element.css( 'overflowY', 'scroll' );\n\t\t\t}\n\t\t}\n\n\t\t// Constrain width if menu reaches out of the browser viewport:\n\t\tif ( this.element.offset().left + this.element.outerWidth( true ) > $( window ).width() ) {\n\t\t\tthis.element.width(\n\t\t\t\t$( window ).width()\n\t\t\t\t\t- this.element.offset().left\n\t\t\t\t\t- ( this.element.outerWidth( true ) - this.element.width() )\n\t\t\t\t\t- 20 // safe space\n\t\t\t);\n\t\t}\n\t},\n\n\t/**\n\t * Returns the currently active item.\n\t *\n\t * @return {jQuery.ui.ooMenu.Item|null}\n\t */\n\tgetActiveItem: function() {\n\t\tvar $item = this.element.children( '.ui-state-hover' );\n\t\treturn !$item.length ? null : $item.data( 'ui-ooMenu-item' );\n\t},\n\n\t/**\n\t * Activates/focuses a specific item.\n\t *\n\t * @param {jQuery.ui.ooMenu.Item|jQuery} item\n\t *\n\t * @throws {Error} if the item is not specified correctly.\n\t */\n\tactivate: function( item ) {\n\t\tvar $item;\n\n\t\tif ( item instanceof $.ui.ooMenu.Item ) {\n\t\t\t$item = this.element.children( '.ui-ooMenu-item' ).filter( function() {\n\t\t\t\treturn $( this ).data( 'ui-ooMenu-item' ) === item;\n\t\t\t} );\n\t\t} else if ( item instanceof $ && item.data( 'ui-ooMenu-item' ) ) {\n\t\t\t$item = item;\n\t\t} else {\n\t\t\tthrow new Error( 'Need $.ui.ooMenu.Item instance or menu item jQuery object to '\n\t\t\t\t+ 'activate' );\n\t\t}\n\n\t\tthis.element.children( '.ui-state-hover' ).removeClass( 'ui-state-hover' );\n\n\t\tvar offset = $item.offset().top - this.element.offset().top,\n\t\t\tscroll = this.element.scrollTop(),\n\t\t\telementHeight = this.element.height();\n\n\t\tif ( offset < 0 ) {\n\t\t\tthis.element.scrollTop( scroll + offset );\n\t\t} else if ( offset >= elementHeight ) {\n\t\t\tthis.element.scrollTop( scroll + offset - elementHeight + $item.height() );\n\t\t}\n\n\t\t$item.addClass( 'ui-state-hover' );\n\n\t\t$( this ).trigger( 'focus', [$item.data( 'ui-ooMenu-item' )] );\n\t},\n\n\t/**\n\t * Deactivates the menu (resets activated item).\n\t */\n\tdeactivate: function() {\n\t\tif ( this._isActive() ) {\n\t\t\tthis.element.children( '.ui-state-hover' ).removeClass( 'ui-state-hover' );\n\t\t\t$( this ).trigger( 'blur' );\n\t\t}\n\t},\n\n\t/**\n\t * Returns whether there is an active menu item.\n\t *\n\t * @protected\n\t *\n\t * @return {boolean}\n\t */\n\t_isActive: function() {\n\t\treturn !!this.element.children( '.ui-state-hover' ).length;\n\t},\n\n\t/**\n\t * Moves focus to the next item.\n\t */\n\tnext: function() {\n\t\tthis._move( 'next', this.element.children( '.ui-ooMenu-item:first' ) );\n\t},\n\n\t/**\n\t * Moves focus to the previous item.\n\t */\n\tprevious: function() {\n\t\tthis._move( 'prev', this.element.children( '.ui-ooMenu-item:last' ) );\n\t},\n\n\t/**\n\t * Moves focus in a specific direction.\n\t *\n\t * @protected\n\t *\n\t * @param {string} direction Either \"next\" or \"prev\".\n\t * @param {jQuery} $edge\n\t */\n\t_move: function( direction, $edge ) {\n\t\tif ( !this.element.children().length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar $active = this.element.children( '.ui-state-hover' );\n\n\t\tif ( !$active.length ) {\n\t\t\tthis.activate( $edge );\n\t\t\treturn;\n\t\t}\n\n\t\tvar $nextItem = $active[direction + 'All']( '.ui-ooMenu-item' ).eq( 0 );\n\n\t\tif ( $nextItem.length ) {\n\t\t\tthis.activate( $nextItem );\n\t\t} else {\n\t\t\tthis.activate( $edge );\n\t\t}\n\t},\n\n\t/**\n\t * Selects an item.\n\t *\n\t * @param event\n\t */\n\tselect: function( event ) {\n\t\tvar $item = this.element.children( '.ui-state-hover' );\n\n\t\tvar item = !$item.length ? null : $item.data( 'ui-ooMenu-item' );\n\n\t\tif ( item instanceof $.ui.ooMenu.CustomItem ) {\n\t\t\tvar action = item.getAction();\n\t\t\tif ( $.isFunction( action ) ) {\n\t\t\t\taction();\n\t\t\t}\n\t\t}\n\n\t\tvar selectedEvent = $.Event( 'selected', {\n\t\t\toriginalEvent: event || null\n\t\t} );\n\n\t\t$( this ).trigger( selectedEvent, [item] );\n\t}\n} );\n\n/**\n * Default menu item.\n *\n * @class jQuery.ui.ooMenu.Item\n * @license GNU GPL v2+\n * @author H. Snater < mediawiki@snater.com >\n *\n * @constructor\n *\n * @param {string|jQuery} label The label to display in the menu.\n * @param {string|null} [value] The value to display in the input element if the item is selected.\n *        If no value is specified, the label text will be used.\n * @param {string|null} [link=null] Optional URL the item shall link to.\n *\n * @throws {Error} if any required parameter is not specified properly.\n */\nvar Item = function( label, value, link ) {\n\tif ( !label ) {\n\t\tthrow new Error( 'Label needs to be specified' );\n\t}\n\n\tthis._label = label;\n\tthis._value = value || ( label instanceof $ ? label.text() : label );\n\tthis._link = link || null;\n};\n\n$.extend( Item.prototype, {\n\t/**\n\t * @property {jQuery|string}\n\t * @protected\n\t */\n\t_label: null,\n\n\t/**\n\t * @property {string}\n\t * @protected\n\t */\n\t_value: null,\n\n\t/**\n\t * @property {string|null}\n\t * @protected\n\t */\n\t_link: null,\n\n\t/**\n\t * @return {jQuery}\n\t */\n\tgetLabel: function() {\n\t\treturn this._label instanceof String\n\t\t\t? $( document.createTextNode( this._label ) )\n\t\t\t: this._label;\n\t},\n\n\t/**\n\t * @return {string}\n\t */\n\tgetValue: function() {\n\t\treturn this._value;\n\t},\n\n\t/**\n\t * @return {string|null}\n\t */\n\tgetLink: function() {\n\t\treturn this._link;\n\t}\n} );\n\n/**\n * Customizable menu item.\n *\n * @class jQuery.ui.ooMenu.CustomItem\n * @extends jQuery.ui.ooMenu.Item\n * @license GNU GPL v2+\n * @author H. Snater < mediawiki@snater.com >\n *\n * @constructor\n *\n * @param {string|jQuery} label\n * @param {Function|boolean|null} [visibility=null]\n *        Function to determine the item's visibility or boolean defining static visibility. If\n *        \"null\" or omitted, the item will always be visible. Function expects {boolean} to be\n *        returned. Function parameter:\n *\n * - {jQuery.ui.ooMenu} [visibility.menu]\n *\n * @param {Function|null} [action=null]\n * @param {string|null} [cssClass=null]\n * @param {string|null} [link=null]\n *\n * @throws {Error} if any required parameter is not specified properly.\n */\nvar CustomItem = function( label, visibility, action, cssClass, link ) {\n\tif ( !label ) {\n\t\tthrow new Error( 'Label needs to be specified' );\n\t}\n\n\tthis._label = label;\n\tthis.setVisibility( visibility );\n\tthis.setAction( action );\n\tthis.setCssClass( cssClass );\n\tthis._link = link || null;\n};\n\nCustomItem = util.inherit(\n\tItem,\n\tCustomItem,\n\t{\n\t\t/**\n\t\t * @property {Function|boolean|null}\n\t\t * @protected\n\t\t */\n\t\t_visibility: null,\n\n\t\t/**\n\t\t * @property {Function|null}\n\t\t * @protected\n\t\t */\n\t\t_action: null,\n\n\t\t/**\n\t\t * @property {string}\n\t\t * @protected\n\t\t */\n\t\t_cssClass: null,\n\n\t\t/**\n\t\t * @inheritdoc\n\t\t */\n\t\tgetValue: function() {\n\t\t\treturn '';\n\t\t},\n\n\t\t/**\n\t\t * @param menu\n\t\t * @return {Function|boolean}\n\t\t */\n\t\tgetVisibility: function( menu ) {\n\t\t\tif ( $.isFunction( this._visibility ) ) {\n\t\t\t\treturn this._visibility( menu );\n\t\t\t}\n\t\t\treturn this._visibility !== false;\n\t\t},\n\n\t\t/**\n\t\t * @param {Function|boolean|null} [visibility]\n\t\t */\n\t\tsetVisibility: function( visibility ) {\n\t\t\tthis._visibility = $.isFunction( visibility ) || typeof visibility === 'boolean'\n\t\t\t\t? visibility\n\t\t\t\t: null;\n\t\t},\n\n\t\t/**\n\t\t * @return {Function|null}\n\t\t */\n\t\tgetAction: function() {\n\t\t\treturn this._action;\n\t\t},\n\n\t\t/**\n\t\t * @param {Function|null} [action]\n\t\t */\n\t\tsetAction: function( action ) {\n\t\t\tthis._action = $.isFunction( action ) ? action : null;\n\t\t},\n\n\t\t/**\n\t\t * @return {string}\n\t\t */\n\t\tgetCssClass: function() {\n\t\t\treturn this._cssClass;\n\t\t},\n\n\t\t/**\n\t\t * @param {string|null} [cssClass]\n\t\t */\n\t\tsetCssClass: function( cssClass ) {\n\t\t\tthis._cssClass = typeof cssClass === 'string' ? cssClass : '';\n\t\t},\n\n\t\t/**\n\t\t * @param {string} [link]\n\t\t */\n\t\tsetLink: function( link ) {\n\t\t\tthis._link = link || null;\n\t\t}\n\t}\n);\n\n$.extend( $.ui.ooMenu, {\n\tItem: Item,\n\tCustomItem: CustomItem\n} );\n\n} )( jQuery, util );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/lib/jquery.ui/jquery.ui.preview.js","messages":[{"ruleId":"mediawiki/class-doc","severity":1,"message":"All possible CSS classes should be documented. See https://w.wiki/PS2 for details.","line":69,"column":3,"nodeType":"CallExpression","endLine":70,"endColumn":36},{"ruleId":"mediawiki/class-doc","severity":1,"message":"All possible CSS classes should be documented. See https://w.wiki/PS2 for details.","line":72,"column":4,"nodeType":"CallExpression","endLine":73,"endColumn":48},{"ruleId":"mediawiki/class-doc","severity":1,"message":"All possible CSS classes should be documented. See https://w.wiki/PS2 for details.","line":77,"column":17,"nodeType":"CallExpression","endLine":78,"endColumn":47},{"ruleId":"mediawiki/class-doc","severity":1,"message":"All possible CSS classes should be documented. See https://w.wiki/PS2 for details.","line":90,"column":3,"nodeType":"CallExpression","endLine":92,"endColumn":39},{"ruleId":"mediawiki/class-doc","severity":1,"message":"All possible CSS classes should be documented. See https://w.wiki/PS2 for details.","line":109,"column":3,"nodeType":"CallExpression","endLine":109,"endColumn":79}],"errorCount":0,"warningCount":5,"fixableErrorCount":0,"fixableWarningCount":0,"source":"( function () {\n\t'use strict';\n\n/**\n * Preview widget whose visible content may be switched between a spinner animation and a value.\n * If the value to be set is empty, the widget will display an appropriate message.\n *\n * @class jQuery.ui.preview\n * @extends jQuery.Widget\n * @license GNU GPL v2+\n * @author H. Snater < mediawiki@snater.com >\n *\n * @constructor\n *\n * @param {Object} [options]\n * @param {jQuery|null} [options.$input=null]\n *        Input element node. If specified, the preview will not be updated when the input element\n *        is cleared, e.g. if the input will be hidden, it is not necessary to update the value.\n * @param {Object} [options.messages=Object]\n *        Default messages to use.\n * @param {util.MessageProvider|null} [options.messageProvider=null]\n *        Message provider to fetch messages from instead of using the default messages.\n */\n$.widget( 'ui.preview', {\n\n\t/**\n\t * @see jQuery.Widget.options\n\t * @protected\n\t * @readonly\n\t */\n\toptions: {\n\t\t$input: null,\n\t\tmessages: {\n\t\t\tlabel: 'will be displayed as:',\n\t\t\tnovalue: 'no valid value recognized'\n\t\t},\n\t\tmessageProvider: null\n\t},\n\n\t/**\n\t * The node of the previewed value.\n\t *\n\t * @property {jQuery}\n\t * @readonly\n\t */\n\t$value: null,\n\n\t/**\n\t * @property {util.MessageProvider}\n\t * @private\n\t */\n\t_messageProvider: null,\n\n\t/**\n\t * @see jQuery.Widget._create\n\t * @protected\n\t */\n\t_create: function() {\n\t\tvar hashBasedMessageProvider = new util.HashMessageProvider( this.options.messages );\n\t\tif ( this.options.messageProvider ) {\n\t\t\tthis._messageProvider = new util.CombiningMessageProvider(\n\t\t\t\tthis.options.messageProvider,\n\t\t\t\thashBasedMessageProvider\n\t\t\t);\n\t\t} else {\n\t\t\tthis._messageProvider = hashBasedMessageProvider;\n\t\t}\n\n\t\tthis.element\n\t\t.addClass( this.widgetBaseClass )\n\t\t.append(\n\t\t\t$( '<div/>' )\n\t\t\t.addClass( this.widgetBaseClass + '-label' )\n\t\t\t.text( this._messageProvider.getMessage( 'label' ) )\n\t\t);\n\n\t\tthis.$value = $( '<div/>' )\n\t\t.addClass( this.widgetBaseClass + '-value' )\n\t\t.appendTo( this.element );\n\n\t\tthis.update( null );\n\t},\n\n\t/**\n\t * @see jQuery.Widget.destroy\n\t */\n\tdestroy: function() {\n\t\tthis.$value.remove();\n\n\t\tthis.element\n\t\t.children( this.widgetBaseClass + '-label' )\n\t\t.removeClass( this.widgetBaseClass );\n\n\t\t$.Widget.prototype.destroy.call( this );\n\t},\n\n\t/**\n\t * Updates the previewed value.\n\t *\n\t * @param {string|null} value\n\t */\n\tupdate: function( value ) {\n\t\t// No need to update the preview when the input value is clear(ed) since the preview\n\t\t// will be hidden anyway.\n\t\tif ( this.options.$input && this.options.$input.val() === '' ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.$value.toggleClass( this.widgetBaseClass + '-novalue', value === null );\n\n\t\tif ( value === null ) {\n\t\t\tthis.$value.text( this._messageProvider.getMessage( 'novalue' ) );\n\t\t} else {\n\t\t\tthis.$value.html( value );\n\t\t}\n\t},\n\n\t/**\n\t * Shows a spinner symbol instead of any preview.\n\t */\n\tshowSpinner: function() {\n\t\tthis.$value.empty().append( $( '<span/>' ).addClass( 'small-spinner' ) );\n\t}\n\n} );\n\n}() );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/lib/jquery.ui/jquery.ui.suggester.js","messages":[{"ruleId":"jsdoc/require-returns","severity":1,"message":"Missing JSDoc @return declaration.","line":239,"column":2,"nodeType":"Block","endLine":244,"endColumn":5},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"key\" type.","line":240,"column":null,"nodeType":"Block","endLine":240,"endColumn":null},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"value\" type.","line":241,"column":null,"nodeType":"Block","endLine":241,"endColumn":null},{"ruleId":"jsdoc/require-returns","severity":1,"message":"Found more than one @return declaration.","line":522,"column":2,"nodeType":"Block","endLine":530,"endColumn":5},{"ruleId":"jsdoc/require-returns-check","severity":1,"message":"Found more than one @return declaration.","line":522,"column":2,"nodeType":"Block","endLine":530,"endColumn":5},{"ruleId":"jsdoc/require-returns","severity":1,"message":"Found more than one @return declaration.","line":640,"column":2,"nodeType":"Block","endLine":652,"endColumn":5},{"ruleId":"jsdoc/require-returns-check","severity":1,"message":"Found more than one @return declaration.","line":640,"column":2,"nodeType":"Block","endLine":652,"endColumn":5},{"ruleId":"jsdoc/require-returns","severity":1,"message":"Found more than one @return declaration.","line":661,"column":2,"nodeType":"Block","endLine":674,"endColumn":5},{"ruleId":"jsdoc/require-returns-check","severity":1,"message":"Found more than one @return declaration.","line":661,"column":2,"nodeType":"Block","endLine":674,"endColumn":5}],"errorCount":0,"warningCount":9,"fixableErrorCount":0,"fixableWarningCount":0,"source":"( function () {\n\t'use strict';\n\n/**\n * Flips a complete position specification to be used by jQuery.ui.position (1.8).\n *\n * @ignore\n *\n * @param {Object} position\n * @return {Object}\n */\nfunction flipPosition( position ) {\n\tfunction flipOrientation( orientation ) {\n\t\tif ( /right/i.test( orientation ) ) {\n\t\t\treturn orientation.replace( /right/i, 'left' );\n\t\t} else {\n\t\t\treturn orientation.replace( /left/i, 'right' );\n\t\t}\n\t}\n\n\tfunction flipHorizontalOffset( offset ) {\n\t\tvar offsets = offset.split( ' ' ),\n\t\t\thOffset = parseInt( offsets[0], 10 );\n\n\t\thOffset = ( hOffset <= 0 ) ? Math.abs( hOffset ) : hOffset * -1;\n\t\treturn hOffset + ' ' + offsets[1];\n\t}\n\n\tposition.my = flipOrientation( position.my );\n\tposition.at = flipOrientation( position.at );\n\n\tif ( position.offset ) {\n\t\tposition.offset = flipHorizontalOffset( position.offset );\n\t}\n\n\treturn position;\n}\n\n/**\n * Enhances an input box by retrieving a list of suggestions that are displayed in a list below the\n * input box.\n * (uses `jQuery.ui.ooMenu`, `jQuery.ui.position`)\n *\n *     @example\n *     // Creates a simple suggester using an array as result set.\n *     $( 'input' ).suggester( { source: ['a', 'b', 'c'] } );\n *\n *     // Creates an auto-completion input element fetching suggestions via AJAX.\n *     $( 'input' ).suggester( {\n *         source: function( term ) {\n *             var deferred = $.Deferred();\n *\n *             $.ajax( {\n *                 url: 'https://commons.wikimedia.org/w/api.php',\n *                 dataType: 'jsonp',\n *                 data: {\n *                 search: term,\n *                 action: 'opensearch',\n *                 namespace: 6\n *             }, timeout: 8000 } )\n *             .done( function( response ) {\n *                 deferred.resolve( response[1], response[0] );\n *             } )\n *             .fail( function( jqXHR, textStatus ) {\n *                 deferred.reject( textStatus );\n *             } );\n *\n *             return deferred.promise();\n *         }\n *     } );\n *\n * @class jQuery.ui.suggester\n * @extends jQuery.Widget\n * @uses jQuery.ui\n * @license GNU GPL v2+\n * @author H. Snater < mediawiki@snater.com >\n *\n * @constructor\n *\n * @param {Object} options\n * @param {string[]|Function} options.source\n *        An array of strings that shall be used to provide suggestions. Alternatively, a function\n *        may be provided\n *        Parameters:\n *\n * - {string} Search term\n *\n * Expected return values:\n *\n * - {Object} jQuery promise\n *\n * Resolved parameters:\n *\n * - {string[]} Suggestions\n *\n * - {string} (optional) Search term corresponding to the suggestions. This allows checking whether\n *   the response belongs to the most current request.\n *\n * Rejected parameters:\n *\n * - {string} Plain text or HTML error message.\n *\n * @param {number} [options.minTermLength=1]\n *        Minimum number of characters to trigger a search with.\n * @param {number} [options.delay=300]\n *        Delay in milliseconds of the request querying for suggestions.\n * @param {jQuery.ui.ooMenu|null} [menu=null]\n *        A pre-initialized menu instance featuring one or more custom list item may be provided.\n *        This should be the preferred way to define custom items.\n * @param {Object} [position=Object]\n *        Object to be evaluated by `jQuery.ui.position` to set the suggestion list's position.\n *        In RTL context, the specified value is flipped automatically.\n *        Default: (position suggestion list's top left corner at input box's bottom left corner)\n * @param {jQuery|null} [confineMinWidthTo]\n *        The suggestion list's width shall not be smaller than the width of the referenced\n *        element. If `undefined`, the minimum width will be the width of the element the suggester\n *        is initialized on. Specifying `null` or `undefined` will prevent applying a minimum\n *        width.\n */\n/**\n * @event open\n * Triggered when the list of suggestions is opened.\n * @param {jQuery.Event} event\n */\n/**\n * @event close\n * Triggered when the list of suggestions is closed.\n * @param {jQuery.Event} event\n */\n/**\n * @event change\n * Triggered when the suggester's value has changed.\n * @param {jQuery.Event} event\n */\n/**\n * @event error\n * Triggered whenever an error occurred while gathering suggestions. This may happen only when using\n * a function as source. The {string} parameter is forwarded from the rejected promise returned by\n * the source function.\n * @param {jQuery.Event} event\n * @param {string} message\n */\n$.widget( 'ui.suggester', {\n\n\t/**\n\t * @see jQuery.Widget.options\n\t * @protected\n\t * @readonly\n\t */\n\toptions: {\n\t\tsource: null,\n\t\tminTermLength: 1,\n\t\tdelay: 300,\n\t\tmenu: null,\n\t\tposition: {\n\t\t\tmy: 'left top',\n\t\t\tat: 'left bottom',\n\t\t\tcollision: 'none'\n\t\t},\n\t\tconfineMinWidthTo: undefined\n\t},\n\n\t/**\n\t * Counter for the number of pending requests.\n\t *\n\t * @property {number}\n\t * @protected\n\t */\n\t_pending: null,\n\n\t/**\n\t * Current search term.\n\t *\n\t * @property {string}\n\t * @protected\n\t */\n\t_term: null,\n\n\t/**\n\t * Caches whether searching is in progress by either storing the ID of the timer used to delay\n\t * the actual search request or by storing a boolean \"true\" while the actual search request is\n\t * in progress.\n\t *\n\t * @property {number|boolean} [_searching=false]\n\t * @protected\n\t */\n\t_searching: false,\n\n\t/**\n\t * @see jQuery.Widget._create\n\t * @protected\n\t */\n\t_create: function() {\n\t\tvar self = this;\n\n\t\tthis._pending = 0;\n\t\tthis._term = this.element.val();\n\n\t\tthis.element\n\t\t.addClass( 'ui-suggester-input' )\n\t\t.on( 'blur.' + this.widgetName, function() {\n\t\t\tif ( !self.options.menu.element.is( ':focus' ) ) {\n\t\t\t\tself._close();\n\t\t\t}\n\t\t} );\n\n\t\tif ( !( this.options.menu instanceof $.ui.ooMenu ) ) {\n\t\t\tvar $menu = $( '<ul/>' ).ooMenu();\n\t\t\tthis.options.menu = $menu.data( 'ooMenu' );\n\t\t}\n\n\t\tthis.options.menu = this._initMenu( this.options.menu );\n\n\t\tthis._attachInputEventHandlers();\n\t\tthis._attachWindowEventHandlers();\n\t},\n\n\t/**\n\t * @see jQuery.Widget.destroy\n\t */\n\tdestroy: function() {\n\t\tthis._clearTimeout();\n\n\t\tvar menu = this.option( 'menu' );\n\t\tmenu.destroy();\n\t\tmenu.element.remove();\n\t\tthis.option( 'menu', null );\n\n\t\t// About to remove the last suggester instance on the page:\n\t\tif ( $( ':' + this.widgetBaseClass ).length === 1 ) {\n\t\t\t$( window ).off( '.' + this.widgetBaseClass );\n\t\t}\n\n\t\tthis.element.removeClass( 'ui-suggester-input ui-suggester-loading ui-suggester-error' );\n\n\t\t$.Widget.prototype.destroy.call( this );\n\t},\n\n\t/**\n\t * @param key\n\t * @param value\n\t * @see jQuery.Widget._setOption\n\t * @protected\n\t */\n\t_setOption: function( key, value ) {\n\t\tif ( key === 'menu' ) {\n\t\t\tthis.options.menu.destroy();\n\t\t\tthis.options.menu.element.remove();\n\t\t}\n\n\t\tvar response = $.Widget.prototype._setOption.apply( this, arguments );\n\n\t\tif ( key === 'menu' && value instanceof $.ui.ooMenu ) {\n\t\t\tthis.options.menu = this._initMenu( value );\n\t\t}\n\n\t\tif ( key === 'disabled' ) {\n\t\t\tif ( value ) {\n\t\t\t\tthis._close();\n\t\t\t}\n\t\t\tthis.element.prop( 'disabled', value );\n\t\t}\n\n\t\treturn response;\n\t},\n\n\t/**\n\t * Renders the menu and attaches the menu's event handlers.\n\t *\n\t * @protected\n\t *\n\t * @param {jQuery.ui.ooMenu} ooMenu\n\t * @return {jQuery.ui.ooMenu}\n\t */\n\t_initMenu: function( ooMenu ) {\n\t\tvar self = this;\n\n\t\tooMenu.element\n\t\t.addClass( 'ui-suggester-list' )\n\t\t.hide()\n\t\t.appendTo( 'body' );\n\n\t\t$( ooMenu )\n\t\t.on( 'selected.suggester', function( event, item ) {\n\t\t\tif ( item instanceof $.ui.ooMenu.Item && !( item instanceof $.ui.ooMenu.CustomItem ) ) {\n\t\t\t\tself._term = item.getValue();\n\t\t\t\tself.element.val( item.getValue() );\n\t\t\t\tself._close();\n\t\t\t\tself._trigger( 'change' );\n\n\t\t\t\tif ( !event.originalEvent || !/^key/.test( event.originalEvent.type ) ) {\n\t\t\t\t\tsetTimeout( function() {\n\t\t\t\t\t\t// Run refocusing out of the execution chain to allow redrawing in IE.\n\t\t\t\t\t\tself.element.focus();\n\t\t\t\t\t}, 0 );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\treturn ooMenu;\n\t},\n\n\t/**\n\t * Attaches input event handlers to the input element.\n\t *\n\t * @protected\n\t */\n\t_attachInputEventHandlers: function() {\n\t\tvar self = this,\n\t\t\tsuppressKeyPress = false;\n\n\t\tthis.element\n\t\t.on( 'click.suggester', function( event ) {\n\t\t\tif ( !self.isSearching() ) {\n\t\t\t\tself._updateMenuVisibility();\n\t\t\t}\n\t\t} )\n\t\t.on( 'keydown.suggester', function( event ) {\n\t\t\tvar isDisabled = self.element.hasClass( 'ui-state-disabled' );\n\n\t\t\tif ( isDisabled || self.element.prop( 'readOnly' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tself.element.removeClass( 'ui-suggester-error' );\n\n\t\t\tsuppressKeyPress = false;\n\n\t\t\tvar keyCode = $.ui.keyCode;\n\n\t\t\tswitch ( event.keyCode ) {\n\t\t\t\tcase keyCode.UP:\n\t\t\t\t\tself._keyMove( 'previous', event );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase keyCode.DOWN:\n\t\t\t\t\tself._keyMove( 'next', event );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase keyCode.ENTER:\n\t\t\t\tcase keyCode.NUMPAD_ENTER:\n\t\t\t\t\tif ( self.options.menu.getActiveItem() ) {\n\t\t\t\t\t\t// Prevent form submission and select currently active item.\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\t\tself.options.menu.select( event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase keyCode.TAB:\n\t\t\t\t\tif ( !self.options.menu.getActiveItem() ) {\n\t\t\t\t\t\tself._close();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tself.options.menu.select( event );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase keyCode.ESCAPE:\n\t\t\t\t\tself.element.val( self._term );\n\t\t\t\t\tif ( self.options.menu.element.is( ':visible' ) ) {\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\tself._close();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tif ( self.element.val() === ''\n\t\t\t\t\t\t&& (\n\t\t\t\t\t\t\tevent.keyCode === keyCode.BACKSPACE\n\t\t\t\t\t\t\t|| event.keyCode === keyCode.DELETE\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tself._triggerSearch();\n\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tself._trigger( 'change' );\n\t\t} )\n\t\t.on( 'keypress.suggester', function( event ) {\n\t\t\tif ( suppressKeyPress ) {\n\t\t\t\tsuppressKeyPress = false;\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t} );\n\t},\n\n\t/**\n\t * Attaches event listeners to the `window` object.\n\t *\n\t * @protected\n\t */\n\t_attachWindowEventHandlers: function() {\n\t\tvar self = this;\n\n\t\t$( window )\n\t\t.off( '.' + this.widgetBaseClass )\n\t\t.on( 'resize.' + this.widgetBaseClass, function() {\n\t\t\t$( ':' + self.widgetBaseClass ).each( function( i, node ) {\n\t\t\t\tvar suggester = $( node ).data( self.widgetName );\n\t\t\t\tsuggester.repositionMenu();\n\t\t\t\tsuggester.options.menu.scale();\n\t\t\t} );\n\t\t} )\n\t\t.on( 'click.' + this.widgetBaseClass, function( event ) {\n\t\t\tvar $target = $( event.target );\n\t\t\t$( ':' + self.widgetBaseClass ).each( function( i, node ) {\n\t\t\t\tvar suggester = $( node ).data( self.widgetName );\n\t\t\t\t// Close suggester if not clicked on suggester or corresponding list:\n\t\t\t\tif ( $target.closest( suggester.element ).length === 0\n\t\t\t\t\t&& $target.closest( suggester.options.menu.element ).length === 0\n\t\t\t\t) {\n\t\t\t\t\tsuggester._close();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_triggerSearch: function() {\n\t\tvar self = this;\n\n\t\tthis._clearTimeout();\n\n\t\tthis._searching = setTimeout( function() {\n\t\t\t// Only search if the value has changed:\n\t\t\tif ( self._term !== self.element.val() ) {\n\t\t\t\tself.search()\n\t\t\t\t.done( function() {\n\t\t\t\t\t// Widget might have been destroyed in the meantime.\n\t\t\t\t\tif ( self.element.data( self.widgetName ) ) {\n\t\t\t\t\t\tself._trigger( 'change' );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t}, this.options.delay );\n\t},\n\n\t/**\n\t * Returns whether searching is in progress.\n\t *\n\t * @return {boolean}\n\t */\n\tisSearching: function() {\n\t\treturn this._searching !== false;\n\t},\n\n\t/**\n\t * Handles moving through the list of suggestions using arrow keys.\n\t *\n\t * @protected\n\t *\n\t * @param {string} direction (either \"previous\" or \"next\")\n\t * @param {jQuery.Event} event\n\t */\n\t_keyMove: function( direction, event ) {\n\t\t// Prevent moving cursor to beginning/end of the text field in some browsers:\n\t\tevent.preventDefault();\n\n\t\tif ( !this.options.menu.element.is( ':visible' ) ) {\n\t\t\tthis.search();\n\t\t\treturn;\n\t\t}\n\n\t\tvar allItems = $.merge( [], this.options.menu.option( 'items' ) );\n\t\t$.merge( allItems, this.options.menu.option( 'customItems' ) );\n\n\t\tif ( allItems.length > 0 ) {\n\t\t\tthis._move( direction, this.options.menu.getActiveItem(), allItems );\n\t\t}\n\t},\n\n\t/**\n\t * Shifts the suggestions menu focus by one item.\n\t *\n\t * @protected\n\t *\n\t * @param {string} direction\n\t * @param {jQuery.ui.ooMenu.Item} activeItem\n\t * @param {jQuery.ui.ooMenu.Item[]} allItems\n\t */\n\t_move: function( direction, activeItem, allItems ) {\n\t\tvar self = this,\n\t\t\tisFirst = activeItem === allItems[0],\n\t\t\tisLast = activeItem === allItems[allItems.length - 1];\n\n\t\tif ( isFirst && direction === 'previous' || isLast && direction === 'next' ) {\n\t\t\tthis._moveOffEdge( direction );\n\t\t} else {\n\t\t\t$( this.options.menu ).one( 'focus.suggester', function( event, item ) {\n\t\t\t\tvar isCustomMenuItem = item instanceof $.ui.ooMenu.CustomItem;\n\n\t\t\t\tif ( item instanceof $.ui.ooMenu.Item && !isCustomMenuItem ) {\n\t\t\t\t\tself.element.val( item.getValue() );\n\t\t\t\t} else if ( isCustomMenuItem ) {\n\t\t\t\t\tself.element.val( self._term );\n\t\t\t\t}\n\t\t\t\tself._trigger( 'change' );\n\t\t\t} );\n\t\t\tthis.options.menu[direction]();\n\t\t}\n\t},\n\n\t/**\n\t * Handler called when the suggestion menu focus is to be shifted off the end of the list.\n\t *\n\t * @protected\n\t *\n\t * @param {string} direction\n\t */\n\t_moveOffEdge: function( direction ) {\n\t\tthis.element.val( this._term );\n\t\tthis.options.menu.deactivate();\n\t},\n\n\t/**\n\t * Performs a search on the current input.\n\t *\n\t * @return {Object} jQuery.Promise\n\t * @return {Function} return.done\n\t * @return {string[]} return.done.suggestions\n\t * @return {Function} return.fail\n\t * @return {string} return.fail.message\n\t */\n\tsearch: function() {\n\t\tvar self = this,\n\t\t\tdeferred = $.Deferred();\n\n\t\tthis._clearTimeout();\n\t\tthis._searching = true;\n\n\t\tthis._term = this.element.val();\n\n\t\tif ( this._term.length < this.options.minTermLength ) {\n\t\t\tthis._close();\n\t\t\treturn deferred.resolve( [], this._term ).promise();\n\t\t}\n\n\t\tthis.element.addClass( 'ui-suggester-loading' );\n\t\tthis._pending++;\n\n\t\treturn this._getSuggestions( this._term )\n\t\t.done( function( suggestions, requestTerm ) {\n\t\t\tself._searching = false;\n\n\t\t\tif ( typeof requestTerm === 'string' && requestTerm !== self._term ) {\n\t\t\t\t// Skip request since it does not correspond to the current search term.\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( self.options.menu ) {\n\t\t\t\t// Suggester (including the menu) might have been destroyed in the meantime.\n\t\t\t\tself._updateMenu( suggestions, requestTerm );\n\t\t\t}\n\t\t} )\n\t\t.fail( function( message ) {\n\t\t\tself.element.addClass( 'ui-suggester-error' );\n\t\t\tself._trigger( 'error', null, [message] );\n\t\t} )\n\t\t.always( function() {\n\t\t\tif ( --self._pending === 0 ) {\n\t\t\t\tself.element.removeClass( 'ui-suggester-loading' );\n\t\t\t}\n\t\t} );\n\t},\n\n\t/**\n\t * Clears the timeout used to delay searching if there is an active timer.\n\t *\n\t * @protected\n\t */\n\t_clearTimeout: function() {\n\t\tif ( typeof this._searching !== 'boolean' ) {\n\t\t\tclearTimeout( this._searching );\n\t\t}\n\t},\n\n\t/**\n\t * Updates the menu.\n\t *\n\t * @protected\n\t *\n\t * @param {string[]} suggestions\n\t * @param {string} requestTerm\n\t */\n\t_updateMenu: function( suggestions, requestTerm ) {\n\t\tthis._updateMenuItems( suggestions, requestTerm );\n\t\tthis._updateMenuVisibility();\n\t},\n\n\t/**\n\t * Updates the suggestion menu with the received suggestions.\n\t *\n\t * @protected\n\t *\n\t * @param {string[]} suggestions\n\t * @param {string} requestTerm\n\t */\n\t_updateMenuItems: function( suggestions, requestTerm ) {\n\t\tvar menuItems = [];\n\n\t\tfor ( var i = 0; i < suggestions.length; i++ ) {\n\t\t\tmenuItems.push( this._createMenuItemFromSuggestion( suggestions[i], requestTerm ) );\n\t\t}\n\n\t\tthis.options.menu.option( 'items', menuItems );\n\t},\n\n\t/**\n\t * Updates the menu's visibility.\n\t *\n\t * @protected\n\t */\n\t_updateMenuVisibility: function() {\n\t\tif ( !this.options.menu.hasVisibleItems( true ) ) {\n\t\t\tthis._close();\n\t\t} else {\n\t\t\tthis._open();\n\t\t}\n\t},\n\n\t/**\n\t * Instantiates a menu item instance from a suggestion.\n\t *\n\t * @protected\n\t *\n\t * @param {string} suggestion\n\t * @param {string} requestTerm\n\t * @return {jQuery.ui.ooMenu.Item}\n\t */\n\t_createMenuItemFromSuggestion: function( suggestion, requestTerm ) {\n\t\treturn new $.ui.ooMenu.Item( suggestion );\n\t},\n\n\t/**\n\t * Retrieves the suggestions for a specific search term.\n\t *\n\t * @protected\n\t *\n\t * @param {string} term\n\t * @return {Object} jQuery.Promise\n\t * @return {Function} return.done\n\t * @return {string[]} return.done.suggestions\n\t * @return {string} return.done.requestTerm\n\t * @return {Function} return.fail\n\t * @return {string} return.fail.message\n\t */\n\t_getSuggestions: function( term ) {\n\t\tif ( typeof this.options.source === 'function' ) {\n\t\t\treturn this.options.source( term );\n\t\t}\n\n\t\treturn this._getSuggestionsFromArray( term, this.options.source );\n\t},\n\n\t/**\n\t * Filters an array using a specific search term.\n\t *\n\t * @protected\n\t *\n\t * @param {string} term\n\t * @param {string[]} source\n\t * @return {Object} jQuery.Promise\n\t * @return {Function} return.done\n\t * @return {string[]} return.done.suggestions\n\t * @return {string} return.done.requestTerm\n\t * @return {Function} return.fail\n\t * @return {string} return.fail.message\n\t */\n\t_getSuggestionsFromArray: function( term, source ) {\n\t\tvar deferred = $.Deferred();\n\n\t\tvar matcher = new RegExp( this._escapeRegex( term ), 'i' );\n\n\t\tdeferred.resolve( $.grep( source, function( item ) {\n\t\t\treturn matcher.test( item );\n\t\t} ), term );\n\n\t\treturn deferred.promise();\n\t},\n\n\t/**\n\t * Escapes a string to be used in a regular expression.\n\t *\n\t * @protected\n\t *\n\t * @param {string} value\n\t * @return {string}\n\t */\n\t_escapeRegex: function( value ) {\n\t\treturn value.replace( /[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&' );\n\t},\n\n\t/**\n\t * Shows the suggester menu.\n\t *\n\t * @protected\n\t */\n\t_open: function() {\n\t\tif ( this.options.menu.element.is( ':visible' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.options.menu.element.show();\n\t\tthis.repositionMenu();\n\n\t\tthis._trigger( 'open' );\n\t},\n\n\t/**\n\t * Hides the suggester menu.\n\t *\n\t * @protected\n\t */\n\t_close: function() {\n\t\tif ( !this.options.menu.element.is( ':visible' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.options.menu.deactivate();\n\t\tthis.options.menu.element.hide();\n\n\t\tthis._trigger( 'close' );\n\t},\n\n\t/**\n\t * Aligns the menu to the input element.\n\t */\n\trepositionMenu: function() {\n\t\tvar dir = this.element.attr( 'dir' )\n\t\t\t|| $( document.documentElement ).css( 'direction' )\n\t\t\t|| 'auto';\n\n\t\tvar position = $.extend( {}, this.options.position ),\n\t\t\t$menu = this.options.menu.element;\n\n\t\tif ( dir === 'rtl' ) {\n\t\t\tposition = flipPosition( position );\n\t\t}\n\n\t\t$menu.position( $.extend( {\n\t\t\tof: this.element\n\t\t}, position ) );\n\n\t\t$menu.zIndex( this.element.zIndex() + 1 );\n\n\t\tif ( this.element.attr( 'lang' ) ) {\n\t\t\t$menu.attr( 'lang', this.element.attr( 'lang' ) );\n\t\t}\n\t\t$menu.attr( 'dir', dir );\n\n\t\tthis.options.menu.scale();\n\n\t\tif ( this.options.confineMinWidthTo !== null ) {\n\t\t\tvar $minWidthConfinement = this.options.confineMinWidthTo || this.element;\n\n\t\t\t$menu.css(\n\t\t\t\t'min-width',\n\t\t\t\t$minWidthConfinement.outerWidth() - ( $menu.outerWidth() - $menu.width() )\n\t\t\t);\n\t\t}\n\t}\n\n} );\n\n}() );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/lib/jquery.ui/jquery.ui.toggler.js","messages":[{"ruleId":"jsdoc/valid-types","severity":1,"message":"Syntax error in namepath: iconClass='ui-icon-triangle-1-'","line":5,"column":null,"nodeType":"Block","endLine":5,"endColumn":null},{"ruleId":"jsdoc/valid-types","severity":1,"message":"Syntax error in namepath: isRtl=false","line":14,"column":null,"nodeType":"Block","endLine":14,"endColumn":null},{"ruleId":"jsdoc/valid-types","severity":1,"message":"Syntax error in namepath: browserSupportsTransform=false","line":22,"column":null,"nodeType":"Block","endLine":22,"endColumn":null},{"ruleId":"mediawiki/class-doc","severity":1,"message":"All possible CSS classes should be documented. See https://w.wiki/PS2 for details.","line":108,"column":22,"nodeType":"CallExpression","endLine":110,"endColumn":47},{"ruleId":"mediawiki/class-doc","severity":1,"message":"All possible CSS classes should be documented. See https://w.wiki/PS2 for details.","line":116,"column":3,"nodeType":"CallExpression","endLine":119,"endColumn":75},{"ruleId":"mediawiki/class-doc","severity":1,"message":"All possible CSS classes should be documented. See https://w.wiki/PS2 for details.","line":121,"column":22,"nodeType":"CallExpression","endLine":123,"endColumn":49},{"ruleId":"mediawiki/class-doc","severity":1,"message":"All possible CSS classes should be documented. See https://w.wiki/PS2 for details.","line":206,"column":3,"nodeType":"CallExpression","endLine":207,"endColumn":45},{"ruleId":"mediawiki/class-doc","severity":1,"message":"All possible CSS classes should be documented. See https://w.wiki/PS2 for details.","line":210,"column":4,"nodeType":"CallExpression","endLine":210,"endColumn":86},{"ruleId":"mediawiki/class-doc","severity":1,"message":"All possible CSS classes should be documented. See https://w.wiki/PS2 for details.","line":212,"column":4,"nodeType":"CallExpression","endLine":213,"endColumn":46}],"errorCount":0,"warningCount":9,"fixableErrorCount":0,"fixableWarningCount":0,"source":"( function () {\n\t'use strict';\n\n/**\n * @property {string} iconClass='ui-icon-triangle-1-'\n * @ignore\n */\nvar iconClass = 'ui-icon-triangle-1-';\n\n/**\n * Whether page is rendered in rtl context. This, however, depends on the css class \"rtl\"\n * being assigned to the body element.\n *\n * @property {boolean} isRtl=false\n * @ignore\n */\nvar isRtl = false;\n\n/**\n * Whether the user client supports CSS3 transformation.\n *\n * @property {boolean} browserSupportsTransform=false\n * @ignore\n */\nvar browserSupportsTransform = false;\n\n$( document ).ready( function() {\n\t// have to wait for document to be loaded for this, otherwise 'rtl' might not yet be there!\n\tisRtl = $( 'body' ).hasClass( 'rtl' );\n\n\t// Check for support of transformation (see https://gist.github.com/1031421)\n\tvar style = new Image().style;\n\tbrowserSupportsTransform = 'transform' in style // general\n\t\t|| 'msTransform' in style\n\t\t|| 'webkitTransform' in style; // Webkit\n} );\n\n/**\n * Toggler widget.\n * The toggler hides a references subject node an toggles its visibility whenever clicking the\n * element the toggler is initialized on. The toggler considers the subject's current \"display\"\n * style, so if it is set to \"none\", it is considered invisible initially.\n *\n * @class jQuery.ui.toggler\n * @extends jQuery.Widget\n * @uses jQuery.animateWithEvent\n * @license GNU GPL v2+\n * @author H. Snater < mediawiki@snater.com >\n * @author Daniel Werner < daniel.a.r.werner@gmail.com >\n *\n * @constructor\n *\n * @param {Object} options\n * @param {jQuery} options.$subject\n *        The node whose visibility shall be toggled.\n * @param {boolean} [options.visible]\n *        The initial state.\n */\n/**\n * @event animation\n * Triggered at the beginning of toggler animations.\n * @param {jQuery.AnimationEvent} event\n * @param {Object} params\n * @param {boolean} params.visible Whether the subject is toggled to be visible.\n */\n$.widget( 'ui.toggler', {\n\n\t/**\n\t * @see jQuery.Widget.options\n\t * @protected\n\t */\n\toptions: {\n\t\t$subject: null,\n\t\tvisible: null\n\t},\n\n\t/**\n\t * The node subject to getting toggled.\n\t *\n\t * @property {jQuery}\n\t * @protected\n\t * @readonly\n\t */\n\t$subject: null,\n\n\t/**\n\t * The toggler's icon.\n\t *\n\t * @property {jQuery}\n\t * @protected\n\t * @readonly\n\t */\n\t$toggleIcon: null,\n\n\t/**\n\t * @see jQuery.Widget._create\n\t * @protected\n\t *\n\t * @throws {Error} if $subject option is not specified.\n\t */\n\t_create: function() {\n\t\tvar self = this;\n\n\t\tif ( !this.options.$subject ) {\n\t\t\tthrow new Error( 'No subject given: Nothing to toggle.' );\n\t\t}\n\n\t\tvar $toggleLabel = $( '<span/>' )\n\t\t.text( this.element.text() )\n\t\t.addClass( this.widgetBaseClass + '-label' );\n\n\t\tvar visible = this.options.visible === null\n\t\t\t? this._isSubjectVisible()\n\t\t\t: this.options.visible;\n\n\t\tthis.element\n\t\t.text( '' )\n\t\t.addClass( this.widgetBaseClass + ' ' + this.widgetBaseClass + '-toggle ui-state-default'\n\t\t\t+ ( visible ? '' : ' ' + this.widgetBaseClass + '-toggle-collapsed' ) );\n\n\t\tthis.$toggleIcon = $( '<span/>' )\n\t\t.addClass( this.widgetBaseClass + '-icon ui-icon ' + iconClass\n\t\t\t+ ( visible ? 's' : ( isRtl ? 'w' : 'e' ) ) );\n\n\t\tthis.element\n\t\t.on( 'click.' + this.widgetName, function( event ) {\n\t\t\tevent.preventDefault();\n\t\t\tself.toggle();\n\t\t} )\n\t\t.on( 'mouseover.' + this.widgetName, function( event ) {\n\t\t\tself.element.addClass( 'ui-state-hover' );\n\t\t} )\n\t\t.on( 'mouseout.' + this.widgetName, function( event ) {\n\t\t\tself.element.removeClass( 'ui-state-hover' );\n\t\t} )\n\t\t.append( this.$toggleIcon )\n\t\t.append( $toggleLabel );\n\t},\n\n\t/**\n\t * Toggle status of toggler to expand/collapse.\n\t */\n\ttoggle: function () {\n\t\tvar self = this;\n\t\tif ( !this.element.hasClass( 'ui-state-disabled' ) ) {\n\t\t\t// Change toggle icon to reflect current state of toggle subject visibility:\n\t\t\tvar visible = this._reflectVisibilityOnToggleIcon( true );\n\n\t\t\tthis.options.$subject.stop().animateWithEvent(\n\t\t\t\t\t'togglerstatetransition',\n\t\t\t\t\t'slideToggle',\n\t\t\t\t\tthis.options,\n\t\t\t\t\tfunction( animationEvent ) {\n\t\t\t\t\t\tself._trigger( 'animation', animationEvent, {\n\t\t\t\t\t\t\tvisible: visible\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t);\n\t\t}\n\t},\n\n\t/**\n\t * Returns status of toggler.\n\t * Is true when toggler is collapsed.\n\t *\n\t * @return {boolean}\n\t */\n\tisCollapsed: function() {\n\t\treturn this.element.hasClass( this.widgetBaseClass + '-toggle-collapsed' );\n\t},\n\n\t/**\n\t * @see jQuery.Widget.destroy\n\t */\n\tdestroy: function() {\n\t\tvar label = this.element.children( this.widgetBaseClass + '-label' ).text();\n\t\tthis.element.empty().text( label );\n\t\tthis.options.$subject.stop();\n\t\t$.Widget.prototype.destroy.call( this );\n\t},\n\n\t/**\n\t * @private\n\t *\n\t * @return {boolean}\n\t */\n\t_isSubjectVisible: function() {\n\t\t// Don't use is( ':visible' ) which would be misleading if element not yet in DOM!\n\t\treturn this.options.$subject.css( 'display' ) !== 'none';\n\t},\n\n\t/**\n\t * Reflects the toggler's subject visibility in the toggler's icon.\n\t *\n\t * @private\n\t *\n\t * @param {boolean} [inverted]\n\t * @return {boolean} Whether the subject is toggled to be visible.\n\t */\n\t_reflectVisibilityOnToggleIcon: function( inverted ) {\n\t\tvar visible = this._isSubjectVisible();\n\t\tif ( inverted ) {\n\t\t\tvisible = !visible;\n\t\t}\n\n\t\tthis.$toggleIcon.removeClass( iconClass + 'e ' + iconClass + 's ' + iconClass + 'w '\n\t\t\t+ this.widgetBaseClass + '-icon3dtrans' );\n\t\t// Add classes displaying rotated icon. If CSS3 transform is available, use it:\n\t\tif ( !browserSupportsTransform || !$.speed().duration ) {\n\t\t\tthis.$toggleIcon.addClass( iconClass + ( visible ? 's' : ( isRtl ? 'w' : 'e' ) ) );\n\t\t} else {\n\t\t\tthis.$toggleIcon.addClass( iconClass + 's '\n\t\t\t\t+ this.widgetBaseClass + '-icon3dtrans' );\n\t\t}\n\n\t\tthis.element[ visible ? 'removeClass' : 'addClass' ](\n\t\t\tthis.widgetBaseClass + '-toggle-collapsed' );\n\n\t\treturn visible;\n\t},\n\n\t/**\n\t * Refreshes the toggler's state.\n\t */\n\trefresh: function() {\n\t\tthis._reflectVisibilityOnToggleIcon();\n\t}\n} );\n\n}() );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/lib/jquery.ui/jquery.ui.unitsuggester.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/lib/jquery.util/jquery.util.adaptlettercase.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/lib/jquery.util/jquery.util.getscrollbarwidth.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/lib/jquery/jquery.AnimationEvent.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/lib/jquery/jquery.PurposedCallbacks.js","messages":[{"ruleId":"jsdoc/require-returns","severity":1,"message":"Missing JSDoc @return declaration.","line":152,"column":3,"nodeType":"Block","endLine":159,"endColumn":6}],"errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"( function () {\n\t'use strict';\n\n\t/**\n\t * An instance of `jQuery.PurposedCallbacks` is a list of `jQuery.Callbacks` instances, one per\n\t * \"purpose\". The purposes are string identifiers for groups of callbacks. Callbacks can be\n\t * registered for a purpose. Callbacks registered for one purpose will be executed together.\n\t *\n\t * This is conceptually similar to `jQuery.Deferred` but more flexible since it allows to define\n\t * define custom purposes other than `done`, `fail` and `progress`.\n\t * Also, there is an equivalent to `jQuery.Deferred.prototype.promise` which is\n\t * `jQuery.PurposedCallbacks.prototype.facade`.\n\t *\n\t *     @example\n\t *     function someAction() {\n\t *         var callbacks = $.PurposedCallbacks( [ 'done', 'fail' ] );\n\t *\n\t *         someAsynchronousAction(\n\t *             function() {\n\t *                 callbacks.fire( 'done' );\n\t *             },\n\t *             function( errorMsg ) {\n\t *                 callbacks.fire( 'fail', errorMsg );\n\t *             }\n\t *         );\n\t *\n\t *         // Only expose object for registering more callbacks, but not for firing them:\n\t *         return callbacks.facade();\n\t *     }\n\t *     someAction()\n\t *     .add( 'done', function() { alert( 'done' ) } );\n\t *     .add( 'fail', function( reason ) { alert( 'error: ' + reason ) } );\n\t *     .add( 'fail', function( reason ) { alert( 'ERROR!' } );\n\t *\n\t * @class jQuery.PurposedCallbacks\n\t * @license GNU GPL v2+\n\t * @author Daniel Werner < daniel.a.r.werner@gmail.com >\n\t *\n\t * @constructor\n\t *\n\t * @param {string[]|string} [predefinedPurposes] Allows to predefine which purposes are allowed.\n\t *        If of type `string`, the parameter is assumed to be the callback options.\n\t * @param {string} [callbackOptions] Same options as for `jQuery.Callbacks`, will be\n\t *        forwarded.\n\t *\n\t * @throws {Error} if purpose is unknown.\n\t */\n\tvar SELF = function PurposedCallbacks( predefinedPurposes, callbackOptions ) {\n\t\tif ( !( this instanceof SELF ) ) {\n\t\t\treturn new SELF( predefinedPurposes, callbackOptions );\n\t\t}\n\n\t\tif ( typeof predefinedPurposes === 'string' ) {\n\t\t\tcallbackOptions = predefinedPurposes;\n\t\t\tpredefinedPurposes = undefined;\n\t\t}\n\n\t\t/**\n\t\t * Cache for .facade() member.\n\t\t *\n\t\t * @property {jQuery.PurposedCallbacks.Facade}\n\t\t * @ignore\n\t\t */\n\t\tvar facade;\n\n\t\t/**\n\t\t * Field names are purposes, each holding a jQuery.Callbacks instance.\n\t\t *\n\t\t * @property {Object}\n\t\t * @ignore\n\t\t */\n\t\tvar callbacksPerPurpose = {};\n\n\t\t/**\n\t\t * Registers a callback for some purpose.\n\t\t *\n\t\t * @param {string} purpose\n\t\t * @param {Function|Function[]} callbacks\n\t\t * @return {*}\n\t\t *\n\t\t * @throws {Error} if purposes are predefined via the constructor and \"purpose\" is not\n\t\t *         one of them.\n\t\t */\n\t\tthis.add = function( purpose, callbacks ) {\n\t\t\tif ( predefinedPurposes && !this.has( purpose ) ) {\n\t\t\t\tthrow new Error( 'Unknown purpose \"' + purpose + '\".' );\n\t\t\t}\n\n\t\t\tif ( !callbacksPerPurpose[ purpose ] ) {\n\t\t\t\tcallbacksPerPurpose[ purpose ] = $.Callbacks( callbackOptions );\n\t\t\t}\n\t\t\tcallbacksPerPurpose[ purpose ].add( callbacks );\n\n\t\t\treturn this;\n\t\t};\n\n\t\t/**\n\t\t * Removes a callback from a purpose.\n\t\t *\n\t\t * @param {string} purpose\n\t\t * @param {Function|Function[]} callbacks\n\t\t * @return {*}\n\t\t */\n\t\tthis.remove = function( purpose, callbacks ) {\n\t\t\tvar callbackForPurpose = callbacksPerPurpose[ purpose ];\n\t\t\tif ( callbackForPurpose ) {\n\t\t\t\t// NOTE: We can't remove( callbacks ) even though it is documented to work this way.\n\t\t\t\t//  This is a bug (behavior not according to jQuery API documentation) which is\n\t\t\t\t//  still present in jQuery 2.0\n\t\t\t\tcallbacks = $.isArray( callbacks ) ? callbacks : [ callbacks ];\n\t\t\t\tcallbackForPurpose.remove.apply( callbackForPurpose, callbacks );\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\t/**\n\t\t * Returns whether a given purpose is known or whether a specific callback has been\n\t\t * registered for a purpose.\n\t\t *\n\t\t * @param {string} purpose\n\t\t * @param {Function} [callback]\n\t\t * @return {boolean}\n\t\t */\n\t\tthis.has = function( purpose, callback ) {\n\t\t\tif ( callback ) {\n\t\t\t\tvar callbacksForPurpose = callbacksPerPurpose[ purpose ];\n\t\t\t\treturn callbacksForPurpose && callbacksForPurpose.has( callback );\n\t\t\t}\n\t\t\treturn $.inArray( purpose, this.purposes() ) > -1;\n\t\t};\n\n\t\t/**\n\t\t * Returns all purposes used for registering callbacks. If purposes got defined via the\n\t\t * constructor, then all those purposes will be returned. If purposes were not defined via\n\t\t * the constructor, then all purposes used to register a callback via `add` will be\n\t\t * returned, even if the callback got removed again and there are no callbacks left for the\n\t\t * queue of that purpose.\n\t\t *\n\t\t * @return {string[]}\n\t\t */\n\t\tthis.purposes = function() {\n\t\t\tif ( predefinedPurposes ) {\n\t\t\t\treturn predefinedPurposes.slice();\n\t\t\t}\n\t\t\tvar usedPurposes = [];\n\t\t\tfor ( var purpose in callbacksPerPurpose ) {\n\t\t\t\tusedPurposes.push( purpose );\n\t\t\t}\n\t\t\treturn usedPurposes;\n\t\t};\n\n\t\t/**\n\t\t * Fires the callbacks of the given purposes or of all purposes with the provided\n\t\t * arguments. Context for the callbacks will be the PurposedCallbacks or the\n\t\t * `PurposedCallbacks.Facade` instance the callback has been added with.\n\t\t *\n\t\t * @param {string|string[]} purposes\n\t\t * @param {*[]} [args]\n\t\t */\n\t\tthis.fire = function( purposes, args ) {\n\t\t\tthis.fireWith( this, purposes, args );\n\t\t\treturn this;\n\t\t};\n\n\t\t/**\n\t\t * Same as fire() but with the callbacks called in a given context.\n\t\t *\n\t\t * @param {*} context\n\t\t * @param {string|string[]} purposes\n\t\t * @param {Array} [args]\n\t\t * @return {*}\n\t\t *\n\t\t * @throws {Error} in case `purposes` were defined in the constructor and a purpose given\n\t\t *         here is not one of them.\n\t\t */\n\t\tthis.fireWith = function( context, purposes, args ) {\n\t\t\tif ( !$.isArray( purposes ) ) {\n\t\t\t\tpurposes = [ purposes ];\n\t\t\t}\n\t\t\targs = args || [];\n\t\t\tvar missingPurposes = [];\n\n\t\t\t$.each( purposes, function( i, purpose ) {\n\t\t\t\tvar callbacksForPurpose = callbacksPerPurpose[ purpose ];\n\t\t\t\tif ( callbacksForPurpose ) {\n\t\t\t\t\tcallbacksForPurpose.fireWith( context, args );\n\t\t\t\t} else {\n\t\t\t\t\tmissingPurposes.push( purpose );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tif ( predefinedPurposes && missingPurposes.length ) {\n\t\t\t\tvar unknownPurposes = $( missingPurposes ).not( predefinedPurposes );\n\t\t\t\tif ( unknownPurposes.length ) {\n\t\t\t\t\tthrow new Error( 'Can not fire callbacks for unknown purposes.' );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\t/**\n\t\t * Returns a facade to the object, only allowing for adding/removing new callbacks but not\n\t\t * allowing to fire them. Similar to `jQuery.Deferred's promise()`.\n\t\t * The object returned here could for example be exposed as return value of a function which\n\t\t * is initiating some asynchronous action. After the asynchronous action is done, the `fire`\n\t\t * function will be called by the function. The code which received the facade by the\n\t\t * function can only add and remove callbacks but not fire them.\n\t\t *\n\t\t * @return {jQuery.PurposedCallbacks.Facade}\n\t\t */\n\t\tthis.facade = function() {\n\t\t\tif ( !facade ) {\n\t\t\t\tfacade = SELF.Facade( this );\n\t\t\t}\n\t\t\treturn facade;\n\t\t};\n\t};\n\n\t/**\n\t * Facade of `jQuery.PurposedCallbacks` which only allows access to the `add`, `remove`, `has`\n\t * and `purposes` members. This is to `jQuery.PurposedCallbacks` what the \"Promise\" is to\n\t * `jQuery.Deferred`.\n\t *\n\t * @class jQuery.PurposedCallbacks.Facade\n\t * @license GNU GPL v2+\n\t * @author Daniel Werner < daniel.a.r.werner@gmail.com >\n\t *\n\t * @constructor\n\t *\n\t * @param {jQuery.PurposedCallbacks} base\n\t * @return {jQuery.PurposedCallbacks.Facade} Can be instantiated without `new`.\n\t */\n\tSELF.Facade = function PurposedCallbacksFacade( base ) {\n\t\tif ( !( this instanceof SELF.Facade ) ) {\n\t\t\treturn new SELF.Facade( base );\n\t\t}\n\t\tvar self = this;\n\n\t\t$.each( [ 'add', 'remove', 'has', 'purposes' ], function( i, field ) {\n\t\t\tself[ field ] = function() {\n\t\t\t\tvar result = base[ field ].apply( base, arguments );\n\t\t\t\treturn result === base ? this : result;\n\t\t\t};\n\t\t} );\n\t};\n\n\tmodule.exports = SELF;\n\n}() );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/lib/jquery/jquery.animateWithEvent.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/lib/jquery/jquery.autocompletestring.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/lib/jquery/jquery.focusAt.js","messages":[{"ruleId":"jsdoc/require-returns","severity":1,"message":"Missing JSDoc @return declaration.","line":73,"column":2,"nodeType":"Block","endLine":92,"endColumn":5}],"errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"jQuery.fn.focusAt = ( function() {\n\t'use strict';\n\n\t/**\n\t * Calculates the position within a string relative to a string's start (0). Can take a position\n\t * relative to the strings start (positive number) or relative to the strings end (negative\n\t * number).\n\t *\n\t * @ignore\n\t *\n\t * @param {number} relativePosition\n\t * @param {number} totalLength\n\t * @return {number}\n\t */\n\tfunction calculateAbsolutePosition( relativePosition, totalLength ) {\n\t\tif ( relativePosition < 0 ) {\n\t\t\trelativePosition = totalLength + relativePosition;\n\t\t\treturn relativePosition < 0 ? 0 : relativePosition;\n\t\t} else {\n\t\t\treturn relativePosition > totalLength ? totalLength : relativePosition;\n\t\t}\n\t}\n\n\t/**\n\t * Helper which will normalize a given position or throw an error if it is an invalid one.\n\t *\n\t * @ignore\n\t *\n\t * @param {number|string} position Either a number specifying the position or one of the strings\n\t *        \"start\" and \"end\".\n\t * @param {jQuery} $forElem\n\t * @return {number}\n\t *\n\t * @throws {Error} if position is not specified properly.\n\t */\n\tfunction normalizePosition( position, $forElem ) {\n\t\tvar textLength = $forElem.val().length;\n\n\t\tif ( typeof position === 'number' ) {\n\t\t\treturn calculateAbsolutePosition( position, textLength );\n\t\t} else if ( position === 'end' ) {\n\t\t\treturn textLength; // behind last character\n\t\t} else if ( position === 'start' ) {\n\t\t\treturn 0;\n\t\t}\n\t\tthrow new Error( 'Focus Position has to be a number or string \"start\" or \"end\"' );\n\t}\n\n\t/**\n\t * Will set the caret to a given position within an input box.\n\t * (see http://stackoverflow.com/questions/512528/set-cursor-position-in-html-textbox)\n\t *\n\t * @ignore\n\t *\n\t * @param {HTMLElement} elem\n\t * @param {number} caretPos\n\t */\n\tfunction setCaretPosition( elem, caretPos ) {\n\t\tvar range;\n\n\t\tif ( elem.createTextRange ) {\n\t\t\trange = elem.createTextRange();\n\t\t\trange.move( 'character', caretPos );\n\t\t\trange.select();\n\t\t} else {\n\t\t\telem.focus();\n\t\t\tif ( elem.selectionStart !== undefined ) {\n\t\t\t\telem.setSelectionRange( caretPos, caretPos );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * `jQuery.focusAt` introduces a `focusAt` function to jQuery instances. This allows to focus an\n\t * element and set the caret to a certain position within the input element.\n\t *\n\t *     @example\n\t *     $( 'input' ).val( 'Foo Bar' ).focusAt( 0 );     // |Foo Bar\n\t *     $( 'input' ).val( 'Foo Bar' ).focusAt( 2 );     // Fo|o Bar\n\t *     $( 'input' ).val( 'Foo Bar' ).focusAt( -1 );    // Foo Ba|r\n\t *     $( 'input' ).val( 'Foo Bar' ).focusAt( 'end' ); // Foo Bar|\n\t *     $( 'input' ).val( 'Foo Bar' ).focusAt( 999 );   // Foo Bar|\n\t *     $( 'input' ).val( 'Foo Bar' ).focusAt( -999 );  // |Foo Bar\n\t *\n\t * @member jQuery.fn\n\t * @method focusAt\n\t * @license GNU GPL v2+\n\t * @author Daniel Werner\n\t *\n\t * @param {number|string} position Either a number specifying the position or one of the strings\n\t *        \"start\" and \"end\".\n\t */\n\tvar focusAt = function focusAt( position ) {\n\t\t// If we have a collection of elements, only consider the first one, just like the native\n\t\t// jQuery.fn.focus does.\n\t\tvar $elem = this.eq( 0 );\n\n\t\t// We normalize the position in any case, so if an invalid position is given even for a\n\t\t// non-input element, there will still an error be thrown for consistence.\n\t\tvar normalizedPosition = normalizePosition( position, $elem );\n\n\t\tif ( $elem.length ) {\n\t\t\tif ( !$elem.is( ':input' ) ) {\n\t\t\t\t$elem.focus(); // simple focus suffices since this is not an input element\n\t\t\t} else {\n\t\t\t\tsetCaretPosition( $elem[0], normalizedPosition );\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t};\n\n\treturn focusAt;\n\n}() );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/lib/jquery/jquery.inputautoexpand.js","messages":[{"ruleId":"jsdoc/require-returns","severity":1,"message":"Missing JSDoc @return declaration.","line":114,"column":1,"nodeType":"Block","endLine":155,"endColumn":4}],"errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"( function () {\n\t'use strict';\n\n/**\n * Rulers used for measuring the input content.\n *\n * @property {jQuery}\n * @ignore\n */\nvar $rulerX, $rulerY;\n\n/**\n * Initializes the rulers used for measuring the input content.\n *\n * @ignore\n */\nfunction initRulers() {\n\tif ( !$rulerX ) {\n\t\t$rulerX = $( '<div/>' )\n\t\t\t.css( {\n\t\t\t\twidth: 'auto',\n\t\t\t\twhiteSpace: 'nowrap',\n\t\t\t\tposition: 'absolute',\n\t\t\t\ttop: '-9999px',\n\t\t\t\tleft: '-9999px',\n\t\t\t\tvisibility: 'hidden',\n\t\t\t\tdisplay: 'none'\n\t\t\t} );\n\t}\n\n\tif ( !$rulerX.closest( 'body' ).length ) {\n\t\t$rulerX.appendTo( 'body' );\n\t}\n\n\tif ( !$rulerY ) {\n\t\t$rulerY = $( '<textarea style=\"min-height: 0!important; height: 0!important;\"/>' )\n\t\t\t.attr( 'tabindex', '-1' )\n\t\t\t.css( {\n\t\t\t\tposition: 'absolute',\n\t\t\t\ttop: '-9999px',\n\t\t\t\tleft: '-9999px',\n\t\t\t\tright: 'auto',\n\t\t\t\tbottom: 'auto'\n\t\t\t} );\n\t}\n\n\tif ( !$rulerY.closest( 'body' ).length ) {\n\t\t$rulerY.appendTo( 'body' );\n\t}\n}\n\n/**\n * Destroys the rulers.\n *\n * @ignore\n */\nfunction destroyRulers() {\n\tif ( $rulerX ) {\n\t\t$rulerX.remove();\n\t\t$rulerX = null;\n\t}\n\tif ( $rulerY ) {\n\t\t$rulerY.remove();\n\t\t$rulerY.remove();\n\t}\n}\n\n/**\n * Copy styles that affect spacing from one element to another.\n *\n * @ignore\n *\n * @param {jQuery} $from\n * @param {jQuery} $to\n */\nfunction copySpaceAffectingStyles( $from, $to ) {\n\tvar stylesToCopy = [\n\t\t'fontFamily',\n\t\t'fontSize',\n\t\t'fontWeight',\n\t\t'fontStyle',\n\t\t'letterSpacing',\n\t\t'lineHeight',\n\t\t'textTransform',\n\t\t'wordSpacing',\n\t\t'textIndent',\n\t\t'overflowY',\n\t\t'wordWrap'\n\t];\n\n\tfor ( var i = 0; i < stylesToCopy.length; i++ ) {\n\t\t$to.css( stylesToCopy[i], $from.css( stylesToCopy[i] ) );\n\t}\n\n\t// styles not being influenced by copying styles\n\t$to.css( {\n\t\toverflow: 'hidden',\n\t\toverflowY: 'hidden'\n\t} );\n}\n\n/**\n * Escapes HTML entities.\n *\n * @ignore\n *\n * @param {string} text\n * @return {string}\n */\nfunction escaped( text ) {\n\treturn $( '<div/>' ).text( text ).html();\n}\n\n/**\n * Makes input or textarea elements automatically expand/contract their size according to their\n * input value while typing. Vertical resizing will of course work for textareas only.\n * The input/textarea element the plugin is initialized on needs to be in the DOM in order to be\n * able to correctly detect the element's native width.\n * Compatibility: IE >= 8\n *\n * Based on:\n *\n * - autoGrowInput plugin by James Padolsey (http://jsbin.com/ahaxe)\n *\n * - Autosize plugin by Jack Moore (licence: MIT) (http://www.jacklmoore.com/autosize)\n *\n * @member jQuery.fn\n * @method inputautoexpand\n * @uses jQuery.AutoExpandInput\n * @license GNU GPL v2+\n * @author H. Snater < mediawiki at snater.com >\n *\n * @param {Object} [options={}]\n * @param {boolean} [options.expandWidth=true]\n *        Whether to horizontally expand/contract the input element.\n * @param {boolean} [options.expandHeight=false]\n *        Whether to vertically expand/contract the input element.\n * @param {number} [options.maxWidth=1000]\n *        Maximum width the input element may stretch.\n * @param {number} [options.minWidth]\n *        Minimum width. If undefined, the space required by the input element's placeholder text\n *        will be determined automatically (taking placeholder into account).\n * @param {number} [options.maxHeight]\n *        Maximum height the input element may stretch. If undefined, the height is not constrained\n *        to a maximum.\n * @param {number} [options.minHeight]\n *        Minimum height. If undefined, the height is not constrained to a minimum.\n * @param {number} [options.comfortZone]\n *        White space behind the input text to prevent resize jitters while typing. If undefined, an\n *        appropriate amount of space will be calculated automatically.\n * @param {boolean} [options.suppressNewLine=false]\n *        Whether to suppress new-line characters.\n * @param {string} [options.eventNamespace='inputautoexpand']\n *        Namespace used for the events the plugin attaches handlers to.\n */\n$.fn.inputautoexpand = function( options ) {\n\tif ( !options ) {\n\t\toptions = {};\n\t}\n\n\t// Inject default options for missing ones:\n\tvar fullOptions = $.extend( {\n\t\texpandWidth: true,\n\t\texpandHeight: false,\n\t\tmaxWidth: 1000,\n\t\tminWidth: undefined,\n\t\tmaxHeight: undefined,\n\t\tminHeight: undefined,\n\t\tcomfortZone: undefined,\n\t\tsuppressNewLine: false,\n\t\teventNamespace: 'inputautoexpand'\n\t}, options );\n\n\t// Expand input fields:\n\tthis.filter( 'input:text, textarea' ).each( function() {\n\t\tvar instance = $.data( this, 'inputautoexpand' );\n\n\t\tif ( instance ) {\n\t\t\t// AutoExpand initialized already, update options only (will also expand):\n\t\t\tif ( options ) {\n\t\t\t\tinstance.options( options );\n\t\t\t}\n\t\t\tinstance.expand();\n\n\t\t} else {\n\t\t\t// Initialize new auto expand:\n\t\t\t$.data( this, 'inputautoexpand', new $.AutoExpandInput( this, fullOptions ) );\n\t\t}\n\t} );\n\n\treturn this;\n};\n\n/**\n * Manages expanding input elements.\n *\n * @class jQuery.AutoExpandInput\n * @uses jQuery.event.special.eachchange\n * @private\n * @license GNU GPL v2+\n * @author H. Snater < mediawiki at snater.com >\n *\n * @constructor\n *\n * @param {HTMLElement} element\n * @param {Object} options\n */\n$.AutoExpandInput = function( element, options ) {\n\tthis.$input = $( element );\n\tthis._options = options;\n\n\tvar self = this;\n\n\tthis._nodeName = element.nodeName;\n\n\tthis.$input.on( 'eachchange', function( event, oldValue ) {\n\t\tif ( self._options.suppressNewLine ) {\n\t\t\tself.$input.val( self.$input.val().replace( /\\r?\\n/g, '' ) );\n\t\t}\n\t\tself.expand();\n\t} );\n\n\tinitRulers();\n\n\tthis.expand();\n\n\t// Do not show any resize handle for manual resizing:\n\tthis.$input.css( 'resize', 'none' );\n\n\t$( window )\n\t.off( '.' + this._options.eventNamespace )\n\t.on( 'resize.' + this._options.eventNamespace, function( event ) {\n\t\t$( 'input:text, textarea' ).each( function() {\n\t\t\tvar instance = $.data( this, 'inputautoexpand' );\n\t\t\tif ( instance ) {\n\t\t\t\tinstance.expand();\n\t\t\t}\n\t\t} );\n\t} );\n};\n\n$.extend( $.AutoExpandInput.prototype, {\n\t/**\n\t * The input element the auto-expand mechanism is initialized on.\n\t *\n\t * @property {jQuery}\n\t * @private\n\t * @readonly\n\t */\n\t$input: null,\n\n\t/**\n\t * Options.\n\t *\n\t * @property {Object}\n\t * @private\n\t */\n\t_options: null,\n\n\t/**\n\t * Caching the previous input to simply abort expanding when it did not change.\n\t *\n\t * @property {string}\n\t * @private\n\t */\n\t_previousVal: null,\n\n\t/**\n\t * The input element's node name.\n\t *\n\t * @property {string}\n\t * @private\n\t */\n\t_nodeName: null,\n\n\t/**\n\t * Sets the input box's width to fit the box's content.\n\t *\n\t * @param {boolean} [force] Whether to evaluate height/width regardless of the element's text\n\t *        having changed.\n\t */\n\texpand: function( force ) {\n\t\tvar newVal = this.$input.val();\n\n\t\tif ( !force && newVal === this._previousVal ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this._options.expandWidth ) {\n\t\t\tthis._expandWidth();\n\t\t}\n\n\t\tif ( this._options.expandHeight && this._nodeName === 'TEXTAREA' ) {\n\t\t\tthis._expandHeight();\n\t\t}\n\n\t\tthis._previousVal = newVal;\n\t},\n\n\t/**\n\t * Expands/Contracts the input element's width.\n\t *\n\t * @private\n\t */\n\t_expandWidth: function() {\n\t\tcopySpaceAffectingStyles( this.$input, $rulerX );\n\n\t\tvar minWidth = this._getMinWidth(),\n\t\t\tmaxWidth = this._options.maxWidth - ( this.$input.outerWidth() - this.$input.width() ),\n\t\t\tcomfortZone = this._getComfortZone();\n\n\t\t// Since the minimum width may have been calculated dynamically using the placeholder,\n\t\t// the minimum width may be greater than the maximum width.\n\t\tif ( minWidth > maxWidth ) {\n\t\t\tminWidth = maxWidth;\n\t\t}\n\n\t\tvar valWidth = this._getWidthFor( this.$input.val() ),\n\t\t\tnewWidth = valWidth + comfortZone;\n\n\t\tif ( newWidth < minWidth ) {\n\t\t\tnewWidth = minWidth;\n\t\t} else if ( newWidth >= maxWidth ) {\n\t\t\tnewWidth = maxWidth;\n\t\t}\n\n\t\tthis.$input.width( newWidth );\n\t},\n\n\t/**\n\t * Expands/Contracts the input element's height.\n\t *\n\t * @private\n\t */\n\t_expandHeight: function() {\n\t\tcopySpaceAffectingStyles( this.$input, $rulerY );\n\n\t\tvar newHeight = this._getHeightFor( this.$input.val() ),\n\t\t\tinput = this.$input.get( 0 ),\n\t\t\tminHeight = this._options.minHeight || 0,// keeps at least one single line\n\t\t\tmaxHeight = this._options.maxHeight;\n\n\t\tif ( maxHeight && newHeight > maxHeight ) {\n\t\t\tinput.style.height = maxHeight + 'px';\n\t\t\tinput.style.overflow = 'scroll';\n\t\t} else {\n\t\t\tif ( minHeight && newHeight < minHeight ) {\n\t\t\t\tinput.style.height = minHeight + 'px';\n\t\t\t} else {\n\t\t\t\tinput.style.height = ( !isNaN( newHeight ) ? newHeight : 0 ) + 'px';\n\t\t\t}\n\t\t\tinput.style.overflow = 'hidden';\n\t\t}\n\t},\n\n\t/**\n\t * Calculates the width which would be required for the input field if the given text was\n\t * inserted. This does not consider the comfort zone given in the options and doesn't check\n\t * for min/max width restraints.\n\t *\n\t * @private\n\t *\n\t * @param {string} text\n\t * @return {number}\n\t */\n\t_getWidthFor: function( text ) {\n\t\t$rulerX.html( escaped( text ) );\n\t\treturn Math.ceil( $rulerX.width() );\n\t},\n\n\t/**\n\t * Returns the minimum width the input element may have assigned.\n\t *\n\t * @private\n\t *\n\t * @return {number}\n\t */\n\t_getMinWidth: function() {\n\t\tif ( this._options.minWidth ) {\n\t\t\treturn this._options.minWidth;\n\t\t}\n\n\t\t// If there is no static minimum width, the placeholder is used to detect the minimum width\n\t\t// Since the placeholder may change, its width is calculated always.\n\t\tif ( !this.$input.attr( 'placeholder' ) ) {\n\t\t\treturn 0;\n\t\t}\n\t\t// Don't need comfort zone in this case, just some sane space:\n\t\treturn this._getWidthFor( this.$input.attr( 'placeholder' ) + '0' );\n\t},\n\n\t/**\n\t * Calculates the height the given text would require to not show any scrollbar within the input\n\t * element.\n\t *\n\t * @private\n\t *\n\t * @param {string} text\n\t * @return {number}\n\t */\n\t_getHeightFor: function( text ) {\n\t\tif ( text === '' ) {\n\t\t\ttext = ' ';\n\t\t}\n\n\t\tvar ruler = $rulerY.get( 0 );\n\t\truler.value = text;\n\n\t\t// Update the width in case the original textarea width has changed:\n\t\tvar width = this._options.maxWidth;\n\t\tif ( !this._options.expandWidth || this.$input.width() > this._options.maxWidth ) {\n\t\t\twidth = Math.ceil( this.$input.width() ) - 1;\n\t\t}\n\n\t\t// Catch miscalculation:\n\t\tif ( width < 0 ) {\n\t\t\twidth = 0;\n\t\t}\n\n\t\truler.style.width = width + 'px';\n\n\t\t// Set a very high value for scrollTop to be sure the mirror is scrolled all the way to the\n\t\t// bottom.\n\t\truler.scrollTop = 9e4;\n\n\t\treturn ruler.scrollTop + $rulerY.outerHeight();\n\t},\n\n\t/**\n\t * Returns the width to add to the input element to prevent jitters when resizing while typing.\n\t *\n\t * @private\n\t *\n\t * @return {number}\n\t */\n\t_getComfortZone: function() {\n\t\treturn ( this._options.comfortZone )\n\t\t\t? this._options.comfortZone\n\t\t\t// IE does not recognize space characters, using 2ch CSS units instead:\n\t\t\t: this._getWidthFor( '00' );\n\t},\n\n\t/**\n\t * Sets the plugin's options or gets the options when no parameter is passed in.\n\t *\n\t * @param {Object} [options]\n\t * @return {*|undefined}\n\t *\n\t * @throws {Error} when trying to set eventNamespace option which should only be set on\n\t *         initialization.\n\t */\n\toptions: function( options ) {\n\t\tif ( !options ) {\n\t\t\treturn this._options;\n\t\t}\n\n\t\tif ( options.eventNamespace ) {\n\t\t\tthrow new Error( 'Cannot alter eventNamespace after initialization.' );\n\t\t}\n\n\t\t$.extend( this._options, options );\n\t},\n\n\t/**\n\t * Destroys the plugin instance.\n\t */\n\tdestroy: function() {\n\t\t$.removeData( this.$input.get( 0 ), 'inputautoexpand' );\n\n\t\tvar hasRemainingInstances = false;\n\n\t\t$( 'input' ).each( function() {\n\t\t\tif ( $.data( this, 'inputautoexpand' ) ) {\n\t\t\t\thasRemainingInstances = true;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} );\n\n\t\tif ( !hasRemainingInstances ) {\n\t\t\t$( 'window' ).off( this._options.eventNamespace );\n\t\t\tdestroyRulers();\n\t\t}\n\t}\n} );\n\n}() );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/lib/util/util.CombiningMessageProvider.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/lib/util/util.ContentLanguages.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/lib/util/util.Extendable.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/lib/util/util.HashMessageProvider.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/lib/util/util.MessageProvider.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/lib/util/util.Notifier.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/lib/util/util.PrefixingMessageProvider.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/lib/util/util.highlightSubstring.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/package-lock.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/package.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/src/ExpertExtender/ExpertExtender.Container.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/src/ExpertExtender/ExpertExtender.LanguageSelector.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/src/ExpertExtender/ExpertExtender.Listrotator.js","messages":[{"ruleId":"mediawiki/class-doc","severity":1,"message":"All possible CSS classes should be documented. See https://w.wiki/PS2 for details.","line":25,"column":18,"nodeType":"CallExpression","endLine":26,"endColumn":26}],"errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"( function( $, ExpertExtender ) {\n\t'use strict';\n\n\t/**\n\t * An `ExpertExtender` module for a `jQuery.ui.listrotator`.\n\t *\n\t * @class jQuery.valueview.ExpertExtender.Listrotator\n\t * @since 0.6\n\t * @license GNU GPL v2+\n\t * @author Adrian Heine <adrian.heine@wikimedia.de>\n\t *\n\t * @constructor\n\t *\n\t * @param {string} className\n\t * @param {Object[]} values\n\t * @param {Function} onValueChange Callback to be triggered when the listrotator's value is\n\t *        changed.\n\t * @param {Function} getUpstreamValue Callback to retrieve the value from a parent component.\n\t * @param {util.MessageProvider} messageProvider\n\t */\n\tExpertExtender.Listrotator = function( className, values, onValueChange, getUpstreamValue, messageProvider ) {\n\t\tthis._onValueChange = onValueChange;\n\t\tthis._getUpstreamValue = getUpstreamValue;\n\n\t\tvar $rotator = $( '<div/>' )\n\t\t\t.addClass( className )\n\t\t\t.listrotator( {\n\t\t\t\tvalues: values,\n\t\t\t\tdeferInit: true,\n\t\t\t\tmessageProvider: messageProvider\n\t\t\t} );\n\t\tthis.rotator = $rotator.data( 'listrotator' );\n\t};\n\n\t$.extend( ExpertExtender.Listrotator.prototype, {\n\t\t/**\n\t\t * @property {Function}\n\t\t * @private\n\t\t */\n\t\t_onValueChange: null,\n\n\t\t/**\n\t\t * @property {Function}\n\t\t * @private\n\t\t */\n\t\t_getUpstreamValue: null,\n\n\t\t/**\n\t\t * @property {jQuery}\n\t\t * @private\n\t\t */\n\t\t_$customItem: null,\n\n\t\t/**\n\t\t * @property {number|null}\n\t\t * @private\n\t\t */\n\t\t_customValueIndex: null,\n\n\t\t/**\n\t\t * @property {jQuery.ui.listrotator}\n\t\t */\n\t\trotator: null,\n\n\t\t/**\n\t\t * Callback for the `init` `ExpertExtender` event.\n\t\t *\n\t\t * @param {jQuery} $extender\n\t\t */\n\t\tinit: function( $extender ) {\n\t\t\tvar self = this,\n\t\t\t\tlistrotatorEvents = 'listrotatorauto listrotatorselected';\n\n\t\t\tthis.rotator.element\n\t\t\t.on( listrotatorEvents, function( event, newValue ) {\n\t\t\t\tif ( newValue !== self._getUpstreamValue() ) {\n\t\t\t\t\tself._onValueChange( newValue );\n\t\t\t\t}\n\t\t\t} )\n\t\t\t.appendTo( $extender );\n\n\t\t\tthis.rotator.initWidths();\n\t\t},\n\n\t\t/**\n\t\t * Callback for the `draw` `ExpertExtender` event.\n\t\t */\n\t\tdraw: function() {\n\t\t\tvar value = this._getUpstreamValue();\n\t\t\tif ( value === undefined || value === null ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this._$customItem ) {\n\t\t\t\tthis.rotator.options.values.splice( this._customValueIndex, 1 );\n\t\t\t\tthis._$customItem.remove();\n\t\t\t\tthis._$customItem = null;\n\t\t\t\tthis._customValueIndex = null;\n\t\t\t}\n\t\t\tif ( value.custom ) {\n\t\t\t\tthis._customValueIndex = this.rotator.options.values.push( value ) - 1;\n\t\t\t\tthis._$customItem = this.rotator._addMenuItem( value );\n\t\t\t\tvalue = value.value;\n\t\t\t}\n\n\t\t\tif ( this.rotator.autoActive() || this._$customItem ) {\n\t\t\t\tthis.rotator.value( value );\n\t\t\t\tthis.rotator._setValue( value );\n\t\t\t\tif ( this._$customItem ) {\n\t\t\t\t\tthis.rotator.$menu.data( 'menu' ).refresh();\n\t\t\t\t\tthis.rotator.activate(); // disables autoActive state\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Callback for the `destroy` `ExpertExtender` event.\n\t\t */\n\t\tdestroy: function() {\n\t\t\tif ( this.rotator ) {\n\t\t\t\tthis.rotator.destroy();\n\t\t\t\tthis.rotator = null;\n\t\t\t}\n\t\t\tthis._getUpstreamValue = null;\n\t\t\tthis._onValueChange = null;\n\t\t},\n\n\t\t/**\n\t\t * Gets the current value set in the rotator.\n\t\t *\n\t\t * @return {string|null} The current value or null, if autoActive\n\t\t */\n\t\tgetValue: function() {\n\t\t\treturn this.rotator.autoActive() ? null : this.rotator.value();\n\t\t}\n\t} );\n\n}( jQuery, jQuery.valueview.ExpertExtender ) );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/src/ExpertExtender/ExpertExtender.Preview.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/src/ExpertExtender/ExpertExtender.UnitSelector.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/src/ExpertExtender/ExpertExtender.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/src/experts/CommonsMediaType.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/src/experts/EmptyValue.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/src/experts/GeoShape.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/src/experts/GlobeCoordinateInput.js","messages":[{"ruleId":"mediawiki/class-doc","severity":1,"message":"All possible CSS classes should be documented. See https://w.wiki/PS2 for details.","line":45,"column":29,"nodeType":"CallExpression","endLine":46,"endColumn":57},{"ruleId":"no-shadow","severity":1,"message":"'precision' is already declared in the upper scope on line 197 column 35.","line":202,"column":37,"nodeType":"Identifier","messageId":"noShadow","endLine":202,"endColumn":46}],"errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"module.exports = ( function( $, vv ) {\n\t'use strict';\n\n\tvar PARENT = vv.experts.StringValue;\n\n\tvar PRECISIONS = [\n\t\t10,\n\t\t1,\n\t\t0.1,\n\t\t0.01,\n\t\t0.001,\n\t\t0.0001,\n\t\t0.00001,\n\t\t0.000001,\n\t\t1 / 60,\n\t\t1 / 3600,\n\t\t1 / 36000,\n\t\t1 / 360000,\n\t\t1 / 3600000\n\t];\n\n\t/**\n\t * `Valueview` expert handling input of `GlobeCoordinate` values.\n\t *\n\t * @class jQuery.valueview.experts.GlobeCoordinateValue\n\t * @extends jQuery.valueview.experts.StringValue\n\t * @since 0.1\n\t * @license GNU GPL v2+\n\t * @author H. Snater < mediawiki@snater.com >\n\t * @author Daniel Werner < daniel.a.r.werner@gmail.com >\n\t */\n\tvv.experts.GlobeCoordinateInput = vv.expert( 'GlobeCoordinateInput', PARENT, function() {\n\t\tPARENT.apply( this, arguments );\n\n\t\tvar self = this;\n\n\t\tthis.preview = new vv.ExpertExtender.Preview(\n\t\t\tfunction() {\n\t\t\t\treturn self.viewState().getFormattedValue();\n\t\t\t},\n\t\t\tthis._messageProvider\n\t\t);\n\n\t\tvar precisionMsgKey = 'valueview-expert-globecoordinateinput-precision';\n\t\tvar $precisionContainer = $( '<div/>' )\n\t\t\t.addClass( this.uiBaseClass + '-precisioncontainer' )\n\t\t\t.append( $( '<div/>' )\n\t\t\t\t.addClass( 'ui-listrotator-caption' )\n\t\t\t\t.text( this._messageProvider.getMessage( precisionMsgKey ) ) );\n\n\t\tthis.precisionRotator = new vv.ExpertExtender.Listrotator(\n\t\t\tthis.uiBaseClass + '-precision',\n\t\t\tthis._getPrecisionValues(),\n\t\t\tfunction( newPrecisionLevel ) {\n\t\t\t\tself._viewNotifier.notify( 'change' );\n\t\t\t},\n\t\t\tfunction() {\n\t\t\t\tvar value = self.viewState().value();\n\t\t\t\tif ( !value ) {\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\n\t\t\t\tvar precision = value.getValue().getPrecision();\n\t\t\t\tif ( !precision ) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcustom: true,\n\t\t\t\t\t\tvalue: null,\n\t\t\t\t\t\tlabel: self._messageProvider.getMessage(\n\t\t\t\t\t\t\t'valueview-expert-globecoordinateinput-nullprecision'\n\t\t\t\t\t\t)\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\treturn self._getPrecisionSetting( precision ) || {\n\t\t\t\t\tcustom: true,\n\t\t\t\t\tvalue: precision,\n\t\t\t\t\tlabel: self._messageProvider.getMessage(\n\t\t\t\t\t\t'valueview-expert-globecoordinateinput-customprecision',\n\t\t\t\t\t\t[ self._getPrecisionLabel( precision ) ]\n\t\t\t\t\t)\n\t\t\t\t};\n\t\t\t},\n\t\t\tthis._messageProvider\n\t\t);\n\n\t\tvar inputExtender = new vv.ExpertExtender(\n\t\t\tthis.$input,\n\t\t\t[\n\t\t\t\tthis.preview,\n\t\t\t\tnew vv.ExpertExtender.Container(\n\t\t\t\t\t$precisionContainer,\n\t\t\t\t\tthis.precisionRotator\n\t\t\t\t)\n\t\t\t]\n\t\t);\n\n\t\tthis.addExtension( inputExtender );\n\t}, {\n\n\t\t/**\n\t\t * @property {jQuery.valueview.ExpertExtender.Preview}\n\t\t */\n\t\tpreview: null,\n\n\t\t/**\n\t\t * @property {jQuery.valueview.ExpertExtender.Listrotator}\n\t\t */\n\t\tprecisionRotator: null,\n\n\t\t/**\n\t\t * @inheritdoc\n\t\t * @protected\n\t\t */\n\t\t_options: {\n\t\t\tmessages: {\n\t\t\t\t'valueview-expert-globecoordinateinput-precision': 'Precision'\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @inheritdoc\n\t\t */\n\t\tvalueCharacteristics: function() {\n\t\t\tvar options = {},\n\t\t\t\tprecision = this.precisionRotator.getValue();\n\n\t\t\tif ( precision !== null ) {\n\t\t\t\toptions.precision = precision;\n\t\t\t}\n\n\t\t\treturn options;\n\t\t},\n\n\t\t/**\n\t\t * @inheritdoc\n\t\t */\n\t\tdestroy: function() {\n\t\t\tif ( this.precisionRotator ) {\n\t\t\t\tthis.precisionRotator.destroy();\n\t\t\t\tthis.precisionRotator = null;\n\t\t\t}\n\t\t\tif ( this.preview ) {\n\t\t\t\tthis.preview.destroy();\n\t\t\t\tthis.preview = null;\n\t\t\t}\n\n\t\t\tPARENT.prototype.destroy.call( this );\n\t\t},\n\n\t\t/**\n\t\t * Rounds a given precision for being able to use it as internal \"constant\".\n\t\t *\n\t\t * @ignore\n\t\t * @private\n\t\t *\n\t\t * @param {number} precision\n\t\t * @return {number}\n\t\t */\n\t\t_roundPrecision: function( precision ) {\n\t\t\treturn parseFloat( precision.toPrecision( 6 ) );\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t *\n\t\t * @param {number} precision\n\t\t * @return {string}\n\t\t */\n\t\t_getPrecisionLabel: function( precision ) {\n\t\t\tvar presets = {\n\t\t\t\t'valueview-expert-globecoordinateinput-precisionlabel-arcminute': 1 / 60,\n\t\t\t\t'valueview-expert-globecoordinateinput-precisionlabel-arcsecond': 1 / 3600,\n\t\t\t\t'valueview-expert-globecoordinateinput-precisionlabel-tenth-of-arcsecond': 1 / 36000,\n\t\t\t\t'valueview-expert-globecoordinateinput-precisionlabel-hundredth-of-arcsecond': 1 / 360000,\n\t\t\t\t'valueview-expert-globecoordinateinput-precisionlabel-thousandth-of-arcsecond': 1 / 3600000,\n\t\t\t\t'valueview-expert-globecoordinateinput-precisionlabel-tenthousandth-of-arcsecond': 1 / 36000000\n\t\t\t};\n\n\t\t\tfor ( var labelMsg in presets ) {\n\t\t\t\tif ( Math.abs( precision - presets[labelMsg] ) < 0.000000000001 ) {\n\t\t\t\t\treturn this._messageProvider.getMessage( labelMsg );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn '±' + this._roundPrecision( precision ) + '°';\n\t\t},\n\n\t\t/**\n\t\t * Returns the original precision level for an unrounded precision.\n\t\t *\n\t\t * @ignore\n\t\t * @private\n\t\t *\n\t\t * @param {number} precision\n\t\t * @return {number|null}\n\t\t */\n\t\t_getPrecisionSetting: function( precision ) {\n\t\t\tvar self = this,\n\t\t\t\tactualPrecision = null,\n\t\t\t\troundedPrecision = this._roundPrecision( precision );\n\n\t\t\t$.each( PRECISIONS, function( i, precision ) {\n\t\t\t\tif ( self._roundPrecision( precision ) === roundedPrecision ) {\n\t\t\t\t\tactualPrecision = roundedPrecision;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\treturn actualPrecision;\n\t\t},\n\n\t\t/**\n\t\t * @ignore\n\t\t * @private\n\t\t *\n\t\t * @return {Object[]}\n\t\t */\n\t\t_getPrecisionValues: function() {\n\t\t\tvar self = this,\n\t\t\t\tprecisionValues = [];\n\t\t\t$.each( PRECISIONS, function( i, precision ) {\n\t\t\t\tprecisionValues.unshift( {\n\t\t\t\t\tvalue: self._roundPrecision( precision ),\n\t\t\t\t\tlabel: self._getPrecisionLabel( precision )\n\t\t\t\t} );\n\t\t\t} );\n\t\t\treturn precisionValues;\n\t\t}\n\t} );\n\n\treturn vv.experts.GlobeCoordinateInput;\n\n}( jQuery, jQuery.valueview ) );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/src/experts/MonolingualText.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/src/experts/QuantityInput.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/src/experts/StringValue.js","messages":[{"ruleId":"mediawiki/class-doc","severity":1,"message":"All possible CSS classes should be documented. See https://w.wiki/PS2 for details.","line":35,"column":4,"nodeType":"CallExpression","endLine":36,"endColumn":60}],"errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"module.exports = ( function( $, vv ) {\n\t'use strict';\n\n\tvar PARENT = vv.Expert;\n\n\t/**\n\t * `Valueview` expert for adding `String` data value support to `valueview` widget.\n\t *\n\t * @class jQuery.valueview.experts.StringValue\n\t * @extends jQuery.valueview.Expert\n\t * @since 0.1\n\t * @license GNU GPL v2+\n\t * @author Daniel Werner < daniel.a.r.werner@gmail.com >\n\t */\n\tvv.experts.StringValue = vv.expert( 'StringValue', PARENT, function() {\n\t\tPARENT.apply( this, arguments );\n\t\tthis.$input = $( '<textarea/>' );\n\t}, {\n\t\t/**\n\t\t * The nodes of the input element. The input element will be used to display the value\n\t\t * during edit mode.\n\t\t *\n\t\t * @property {jQuery}\n\t\t * @protected\n\t\t * @readonly\n\t\t */\n\t\t$input: null,\n\n\t\t/**\n\t\t * @inheritdoc\n\t\t */\n\t\tinit: function() {\n\t\t\tvar notifier = this._viewNotifier;\n\n\t\t\tthis.$input\n\t\t\t.addClass( this.uiBaseClass + '-input valueview-input' )\n\t\t\t.val( this.viewState().getTextValue() )\n\t\t\t.on( 'keydown', function( event ) {\n\t\t\t\t// Prevent Enter key from adding a new line character:\n\t\t\t\tif ( event.keyCode === $.ui.keyCode.ENTER ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t} )\n\t\t\t.on( 'eachchange', function() {\n\t\t\t\tnotifier.notify( 'change' );\n\t\t\t} )\n\t\t\t.appendTo( this.$viewPort );\n\n\t\t\tPARENT.prototype.init.call( this );\n\t\t},\n\n\t\t/**\n\t\t * @inheritdoc\n\t\t */\n\t\tdestroy: function() {\n\t\t\tif ( this.$input ) {\n\t\t\t\tthis.$input.off( 'eachchange' );\n\t\t\t\tthis.$input = null;\n\t\t\t}\n\n\t\t\tPARENT.prototype.destroy.call( this ); // empties viewport\n\t\t},\n\n\t\t/**\n\t\t * @inheritdoc\n\t\t * @return {string}\n\t\t */\n\t\trawValue: function() {\n\t\t\treturn this.$input.val();\n\t\t},\n\n\t\t/**\n\t\t * @inheritdoc\n\t\t */\n\t\tdraw: function() {\n\t\t\t// Resize textarea to fit the value (which might be empty):\n\t\t\tthis._resizeInput();\n\n\t\t\t// disable/enable input box\n\t\t\tthis.$input.prop( 'disabled', this.viewState().isDisabled() );\n\n\t\t\tPARENT.prototype.draw.call( this );\n\n\t\t\treturn $.Deferred().resolve().promise();\n\t\t},\n\n\t\t/**\n\t\t * Will resize the input box to fit its current content.\n\t\t *\n\t\t * @protected\n\t\t */\n\t\t_resizeInput: function() {\n\t\t\tthis.$input.inputautoexpand( {\n\t\t\t\texpandWidth: false, // TODO: make this optional on valueview level\n\t\t\t\texpandHeight: true,\n\t\t\t\tsuppressNewLine: true // TODO: make this optional/leave it to parser options\n\t\t\t} );\n\t\t},\n\n\t\t/**\n\t\t * @inheritdoc\n\t\t */\n\t\tfocus: function() {\n\t\t\t// Move text cursor to the end of the textarea:\n\t\t\tthis.$input.focusAt( 'end' );\n\t\t},\n\n\t\t/**\n\t\t * @inheritdoc\n\t\t */\n\t\tblur: function() {\n\t\t\tthis.$input.blur();\n\t\t}\n\t} );\n\n\treturn vv.experts.StringValue;\n\n}( jQuery, jQuery.valueview ) );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/src/experts/SuggestedStringValue.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/src/experts/TabularData.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/src/experts/TimeInput.js","messages":[{"ruleId":"mediawiki/class-doc","severity":1,"message":"All possible CSS classes should be documented. See https://w.wiki/PS2 for details.","line":68,"column":29,"nodeType":"CallExpression","endLine":69,"endColumn":57},{"ruleId":"mediawiki/class-doc","severity":1,"message":"All possible CSS classes should be documented. See https://w.wiki/PS2 for details.","line":86,"column":28,"nodeType":"CallExpression","endLine":87,"endColumn":56}],"errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"module.exports = ( function( $, vv, TimeValue ) {\n\t'use strict';\n\n\tvar PARENT = vv.experts.StringValue;\n\n\t/**\n\t * @ignore\n\t *\n\t * @param {util.MessageProvider} messageProvider\n\t * @return {Object[]} [{ value: <{number}>, label: <{string}>}, ...]\n\t */\n\tfunction getPrecisionValues( messageProvider ) {\n\t\tvar precisionValues = [],\n\t\t\tdayPrecision = TimeValue.getPrecisionById( 'DAY' );\n\t\t$.each( TimeValue.PRECISIONS, function( precisionValue, precision ) {\n\t\t\tvar label;\n\t\t\tif ( precisionValue <= dayPrecision ) {\n\t\t\t\t// TODO: Remove this check as soon as time values are supported.\n\t\t\t\tlabel = messageProvider.getMessage(\n\t\t\t\t\t'valueview-expert-timeinput-precision-' + precision.id.toLowerCase()\n\t\t\t\t) || precision.text;\n\t\t\t\tprecisionValues.unshift( { value: precisionValue, label: label } );\n\t\t\t}\n\t\t} );\n\t\treturn precisionValues;\n\t}\n\n\t/**\n\t * @ignore\n\t *\n\t * @param {util.MessageProvider} messageProvider\n\t * @return {Object[]} [{ value: <{string}>, label: <{string}>}, ...]\n\t */\n\tfunction getCalendarValues( messageProvider ) {\n\t\tvar calendarValues = [];\n\t\t$.each( TimeValue.CALENDARS, function( key, uri ) {\n\t\t\tvar label = messageProvider.getMessage(\n\t\t\t\t'valueview-expert-timevalue-calendar-' + key.toLowerCase()\n\t\t\t) || key.toLowerCase();\n\t\t\tcalendarValues.push( { value: uri, label: label } );\n\t\t} );\n\t\treturn calendarValues;\n\t}\n\n\t/**\n\t * `Valueview` expert handling input of `Time` values.\n\t *\n\t * @class jQuery.valueview.experts.TimeInput\n\t * @extends jQuery.valueview.experts.StringValue\n\t * @since 0.1\n\t * @license GNU GPL v2+\n\t * @author Daniel Werner < daniel.a.r.werner@gmail.com >\n\t * @author H. Snater < mediawiki@snater.com >\n\t */\n\tvv.experts.TimeInput = vv.expert( 'TimeInput', PARENT, function() {\n\t\tPARENT.apply( this, arguments );\n\n\t\tvar self = this;\n\n\t\tthis.preview = new vv.ExpertExtender.Preview(\n\t\t\tfunction() {\n\t\t\t\treturn self.viewState().getFormattedValue();\n\t\t\t},\n\t\t\tthis._messageProvider\n\t\t);\n\n\t\tvar precisionMsgKey = 'valueview-expert-timeinput-precision';\n\t\tvar $precisionContainer = $( '<div/>' )\n\t\t\t.addClass( this.uiBaseClass + '-precisioncontainer' )\n\t\t\t.append( $( '<div/>' )\n\t\t\t\t.addClass( 'ui-listrotator-caption' )\n\t\t\t\t.text( this._messageProvider.getMessage( precisionMsgKey ) ) );\n\n\t\tthis.precisionRotator = new vv.ExpertExtender.Listrotator(\n\t\t\tthis.uiBaseClass + '-precision',\n\t\t\tgetPrecisionValues( this._messageProvider ),\n\t\t\tthis._onRotatorChange.bind( this ),\n\t\t\tfunction() {\n\t\t\t\tvar value = self.viewState().value();\n\t\t\t\treturn value && value.getOption( 'precision' );\n\t\t\t},\n\t\t\tthis._messageProvider\n\t\t);\n\n\t\tvar calendarMsgKey = 'valueview-expert-timeinput-calendar';\n\t\tvar $calendarContainer = $( '<div/>' )\n\t\t\t.addClass( this.uiBaseClass + '-calendarcontainer' )\n\t\t\t.append( $( '<div/>' )\n\t\t\t\t.addClass( 'ui-listrotator-caption' )\n\t\t\t\t.text( this._messageProvider.getMessage( calendarMsgKey ) ) );\n\n\t\tthis.calendarRotator = new vv.ExpertExtender.Listrotator(\n\t\t\tthis.uiBaseClass + '-calendar',\n\t\t\tgetCalendarValues( this._messageProvider ),\n\t\t\tthis._onRotatorChange.bind( this ),\n\t\t\tfunction() {\n\t\t\t\tvar value = self.viewState().value();\n\t\t\t\treturn value && value.getOption( 'calendarModel' );\n\t\t\t},\n\t\t\tthis._messageProvider\n\t\t);\n\n\t\tvar inputExtender = new vv.ExpertExtender(\n\t\t\tthis.$input,\n\t\t\t[\n\t\t\t\tthis.preview,\n\t\t\t\tnew vv.ExpertExtender.Container(\n\t\t\t\t\t$precisionContainer,\n\t\t\t\t\tthis.precisionRotator\n\t\t\t\t),\n\t\t\t\tnew vv.ExpertExtender.Container(\n\t\t\t\t\t$calendarContainer,\n\t\t\t\t\tthis.calendarRotator\n\t\t\t\t)\n\t\t\t]\n\t\t);\n\n\t\tthis.addExtension( inputExtender );\n\t}, {\n\n\t\t/**\n\t\t * @inheritdoc\n\t\t * @protected\n\t\t */\n\t\t_options: {\n\t\t\tmessages: {\n\t\t\t\t'valueview-expert-timeinput-precision': 'Precision',\n\t\t\t\t'valueview-expert-timeinput-calendar': 'Calendar'\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * The preview widget.\n\t\t *\n\t\t * @property {jQuery.valueview.ExpertExtender.Preview}\n\t\t */\n\t\tpreview: null,\n\n\t\t/**\n\t\t * @property {jQuery.valueview.ExpertExtender.Listrotator}\n\t\t */\n\t\tprecisionRotator: null,\n\n\t\t/**\n\t\t * @property {jQuery.valueview.ExpertExtender.Listrotator}\n\t\t */\n\t\tcalendarRotator: null,\n\n\t\t/**\n\t\t * @protected\n\t\t */\n\t\t_onRotatorChange: function() {\n\t\t\tthis._viewNotifier.notify( 'change' );\n\t\t},\n\n\t\t/**\n\t\t * @inheritdoc\n\t\t */\n\t\tdestroy: function() {\n\t\t\tif ( this.calendarRotator ) {\n\t\t\t\tthis.calendarRotator.destroy();\n\t\t\t\tthis.calendarRotator = null;\n\t\t\t}\n\t\t\tif ( this.precisionRotator ) {\n\t\t\t\tthis.precisionRotator.destroy();\n\t\t\t\tthis.precisionRotator = null;\n\t\t\t}\n\t\t\tif ( this.preview ) {\n\t\t\t\tthis.preview.destroy();\n\t\t\t\tthis.preview = null;\n\t\t\t}\n\n\t\t\tPARENT.prototype.destroy.call( this ); // empties viewport\n\t\t},\n\n\t\t/**\n\t\t * @inheritdoc\n\t\t */\n\t\tvalueCharacteristics: function() {\n\t\t\tvar options = {},\n\t\t\t\tprecision = this.precisionRotator.getValue() || null,\n\t\t\t\tcalendarUri = this.calendarRotator.getValue() || null;\n\n\t\t\tif ( precision !== null ) {\n\t\t\t\toptions.precision = precision;\n\t\t\t}\n\t\t\tif ( calendarUri !== null ) {\n\t\t\t\toptions.calendar = calendarUri;\n\t\t\t}\n\n\t\t\treturn options;\n\t\t}\n\t} );\n\n\treturn vv.experts.TimeInput;\n\n}( jQuery, jQuery.valueview, dataValues.TimeValue ) );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/src/experts/UnDeserializableValue.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/src/experts/UnsupportedValue.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/src/jquery.valueview.Expert.js","messages":[{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'ViewState' is undefined.","line":79,"column":null,"nodeType":"Block","endLine":79,"endColumn":null},{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'ViewState' is undefined.","line":166,"column":null,"nodeType":"Block","endLine":166,"endColumn":null},{"ruleId":"mediawiki/class-doc","severity":1,"message":"All possible CSS classes should be documented. See https://w.wiki/PS2 for details.","line":214,"column":4,"nodeType":"CallExpression","endLine":214,"endColumn":47},{"ruleId":"mediawiki/class-doc","severity":1,"message":"All possible CSS classes should be documented. See https://w.wiki/PS2 for details.","line":241,"column":4,"nodeType":"CallExpression","endLine":241,"endColumn":50},{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'ViewState' is undefined.","line":264,"column":null,"nodeType":"Block","endLine":264,"endColumn":null},{"ruleId":"jsdoc/require-returns","severity":1,"message":"Found more than one @return declaration.","line":280,"column":3,"nodeType":"Block","endLine":286,"endColumn":6},{"ruleId":"jsdoc/require-returns-check","severity":1,"message":"Found more than one @return declaration.","line":280,"column":3,"nodeType":"Block","endLine":286,"endColumn":6}],"errorCount":0,"warningCount":7,"fixableErrorCount":0,"fixableWarningCount":0,"source":"$.valueview = $.valueview || {};\n\n( function( vv ) {\n\t'use strict';\n\n\t/**\n\t * Creates a new `Expert` definition as it is required by `jQuery.valueview.valueview`.\n\t *\n\t * NOTE: Just by defining a new `Expert` here, the `Expert` won't be available in a `valueview`\n\t * widget automatically. The `Expert` has to be registered in a `jQuery.valueview.ExpertStore`\n\t * instance which has to be injected into the `valueview` via its options.\n\t *\n\t * @see jQuery.valueview.Expert\n\t * @see jQuery.valueview.ExpertStore\n\t *\n\t * @member jQuery.valueview\n\t * @method expert\n\t * @static\n\t * @since 0.1\n\t * @license GNU GPL v2+\n\t * @author Daniel Werner < daniel.a.r.werner@gmail.com >\n\t *\n\t * @param {string} name Should be all-lowercase and without any special characters. Will be used\n\t *        in within some DOM class attributes and\n\t * @param {Function} base Constructor of the `Expert` the new `Expert` should be based on.\n\t * @param {Function|Object} constructorOrExpertDefinition Constructor of the new `Expert`.\n\t * @param {Object} [expertDefinition] Definition of the `Expert`.\n\t * @return {jQuery.valueview.Expert} the new `Expert` constructor.\n\t *\n\t * @throws {Error} if the base constructor is not a function.\n\t */\n\tvv.expert = function( name, base, constructorOrExpertDefinition, expertDefinition ) {\n\t\tvar constructor = null;\n\n\t\tif ( expertDefinition ) {\n\t\t\tconstructor = constructorOrExpertDefinition;\n\t\t} else {\n\t\t\texpertDefinition = constructorOrExpertDefinition;\n\t\t}\n\n\t\tif ( !$.isFunction( base ) ) {\n\t\t\tthrow new Error( 'The expert\\'s base must be a constructor function' );\n\t\t}\n\n\t\t// do actual inheritance from base and apply custom definition:\n\t\treturn util.inherit(\n\t\t\t'ValueviewExpert_' + name,\n\t\t\tbase,\n\t\t\tconstructor,\n\t\t\t$.extend( expertDefinition, {\n\t\t\t\tuiBaseClass: 'valueview-expert-' + name\n\t\t\t} )\n\t\t);\n\t};\n\n\t// TODO: think about whether there should be a function to add multiple notifiers for widget\n\t//  developers or whether they should rather listen to the valueview widget while the experts\n\t//  can not be touched. Less performant alternative would be the usage of DOM events.\n\t/**\n\t * Abstract class for strategies used in `jQuery.valueview` for displaying and handling a\n\t * certain type of data value or data values suitable for a certain data type.\n\t * The `Expert` itself is conceptually not dependent on data types. It always works with data\n\t * values but the way it is presenting the edit interface could be optimized for data values\n\t * suitable for a certain data type. This could for example be done by restrictions in the edit\n\t * interface by reflecting a data type's validation rules.\n\t *\n\t * NOTE: Consider using `jQuery.valueview.expert()` to define a new `Expert` instead of\n\t * inheriting from this base directly.\n\t *\n\t * @class jQuery.valueview.Expert\n\t * @abstract\n\t * @since 0.1\n\t * @license GNU GPL v2+\n\t * @author Daniel Werner < daniel.a.r.werner@gmail.com >\n\t *\n\t * @constructor\n\t *\n\t * @param {HTMLElement|jQuery} viewPortNode\n\t * @param {ViewState} relatedViewState\n\t * @param {util.Notifier} [valueViewNotifier=util.Notifier()]\n\t *        Required so the `Expert` can notify the `valueview` about certain events. The\n\t *        following notification keys can be used:\n\t *\n\t * - change: will be sent when raw value displayed by the `Expert` changes. Either by a user\n\t *   action or by calling the `rawValue()` method. First parameter is a reference to the\n\t *   `Expert` itself.\n\t *\n\t * @param {Object} [options={}]\n\t *\n\t * @throws {Error} if `viewPortNode` is not or does not feature a proper DOM node.\n\t * @throws {Error} relatedViewState is not a `ViewState` instance.\n\t * @throws {Error} if `valueViewNotifier` is not an `util.Notifier` instance.\n\t * @throws {Error} if neither `messages` nor `messageProvider` is given.\n\t */\n\tvv.Expert = function( viewPortNode, relatedViewState, valueViewNotifier, options ) {\n\t\tif ( ( typeof relatedViewState.getFormattedValue === 'undefined' ) ) {\n\t\t\tthrow new Error( 'No ViewState object was provided to the valueview expert' );\n\t\t}\n\n\t\tif ( !valueViewNotifier ) {\n\t\t\tvalueViewNotifier = util.Notifier();\n\t\t} else if ( !( valueViewNotifier instanceof util.Notifier ) ) {\n\t\t\tthrow new Error( 'No Notifier object was provided to the valueview expert' );\n\t\t}\n\n\t\tif ( viewPortNode instanceof $\n\t\t\t&& viewPortNode.length === 1\n\t\t) {\n\t\t\tviewPortNode = viewPortNode.get( 0 );\n\t\t}\n\n\t\tif ( !( viewPortNode.nodeType ) ) { // IE8 can't check for instanceof HTMLElement\n\t\t\tthrow new Error( 'No sufficient DOM node provided for the valueview expert' );\n\t\t}\n\n\t\tthis._viewState = relatedViewState;\n\t\tthis._viewNotifier = valueViewNotifier;\n\n\t\tthis.$viewPort = $( viewPortNode );\n\n\t\tthis._options = $.extend( ( !this._options ) ? {} : this._options, options || {} );\n\n\t\tif ( this._options.messages ) {\n\t\t\tthis._messageProvider = new util.HashMessageProvider( this._options.messages );\n\t\t}\n\t\tif ( this._options.messageProvider ) {\n\t\t\tthis._messageProvider = new util.CombiningMessageProvider(\n\t\t\t\tthis._options.messageProvider,\n\t\t\t\tthis._messageProvider\n\t\t\t);\n\t\t}\n\t\tif ( !this._messageProvider ) {\n\t\t\tthrow new Error( 'No message provider and no messages were provided to the valueview expert' );\n\t\t}\n\n\t\tthis._extendable = new util.Extendable();\n\t};\n\n\t/**\n\t * @class jQuery.valueview.Expert\n\t */\n\tvv.Expert.prototype = {\n\t\t/**\n\t\t * A unique UI class for this `Expert` definition. Should be used to prefix classes on DOM\n\t\t * nodes within the `Expert`'s view port. If a new `Expert` definition will be created\n\t\t * using `jQuery.valueview.Expert()`, then this will be set by that function.\n\t\t *\n\t\t * @property {string}\n\t\t * @readonly\n\t\t */\n\t\tuiBaseClass: '',\n\n\t\t/**\n\t\t * The DOM node which has to be updated by the `draw()` function. Displays current state\n\t\t * and/or input elements for user interaction during `valueview`'s edit mode.\n\t\t *\n\t\t * @property {jQuery}\n\t\t * @protected\n\t\t * @readonly\n\t\t */\n\t\t$viewPort: null,\n\n\t\t/**\n\t\t * Object representing the state of the related `valueview`.\n\t\t *\n\t\t * @property {ViewState}\n\t\t * @protected\n\t\t */\n\t\t_viewState: null,\n\n\t\t/**\n\t\t * Object for publishing changes to the outside.\n\t\t *\n\t\t * @property {util.Notifier}\n\t\t * @protected\n\t\t */\n\t\t_viewNotifier: null,\n\n\t\t/**\n\t\t * The `Expert`'s options, received through the constructor.\n\t\t *\n\t\t * @property {Object} [_options={}]\n\t\t * @protected\n\t\t */\n\t\t_options: null,\n\n\t\t/**\n\t\t * Message provider used to fetch messages\n\t\t *\n\t\t * @property {util.MessageProvider}\n\t\t * @protected\n\t\t */\n\t\t_messageProvider: null,\n\n\t\t/**\n\t\t * @property {util.Extendable} [_extendable=new util.Extendable()]\n\t\t * @protected\n\t\t */\n\t\t_extendable: null,\n\n\t\t/**\n\t\t * @param {Object} extension\n\t\t */\n\t\taddExtension: function( extension ) {\n\t\t\tthis._extendable.addExtension( extension );\n\t\t},\n\n\t\t/**\n\t\t * Will be called initially for new `Expert` instances.\n\t\t *\n\t\t * @since 0.5\n\t\t */\n\t\tinit: function() {\n\t\t\tthis.$viewPort.addClass( this.uiBaseClass );\n\t\t\tthis._init(); // for backwards-compatibility\n\t\t\tthis._extendable.callExtensions( 'init' );\n\t\t},\n\n\t\t/**\n\t\t * Custom `Expert` initialization routine.\n\t\t *\n\t\t * @protected\n\t\t */\n\t\t_init: function() {},\n\n\t\t/**\n\t\t * Destroys the `Expert`. All generated viewport output is being deleted and all resources\n\t\t * (private members, events handlers) will be released.\n\t\t *\n\t\t * This will not preserve the plain text of the last represented value as one might expect\n\t\t * when thinking about the common `jQuery.Widget`'s behavior. This is mostly because it is\n\t\t * not the `Expert`'s responsibility to be able to serve a plain text representation of the\n\t\t * value. If the value should be represented as plain text after the `Expert`'s\n\t\t * construction, let the responsible controller use a value formatter for that.\n\t\t */\n\t\tdestroy: function() {\n\t\t\tif ( !this.$viewPort ) {\n\t\t\t\treturn; // destroyed already\n\t\t\t}\n\t\t\tthis._extendable.callExtensions( 'destroy' );\n\t\t\tthis.$viewPort.removeClass( this.uiBaseClass ).empty();\n\t\t\tthis.$viewPort = null;\n\t\t\tthis._viewState = null;\n\t\t\tthis._viewNotifier = null;\n\t\t\tthis._messageProvider = null;\n\t\t\tthis._options = null;\n\t\t},\n\n\t\t/**\n\t\t * Returns an object with characteristics specified for the value. The object can be used\n\t\t * as parser options definition.\n\t\t *\n\t\t * @return {Object}\n\t\t */\n\t\tvalueCharacteristics: function() {\n\t\t\treturn {};\n\t\t},\n\n\t\t/**\n\t\t * Returns an object offering information about the related `valueview`'s current state. The\n\t\t * `Expert` reflects that state, so everything that is true for the related view, is also\n\t\t * true for the `Expert` (e.g. whether it is in edit mode or disabled).\n\t\t *\n\t\t * @return {ViewState}\n\t\t */\n\t\tviewState: function() {\n\t\t\treturn this._viewState;\n\t\t},\n\n\t\t/**\n\t\t * @abstract\n\t\t *\n\t\t * @return {string|dataValues.DataValue|null} Returns either the current raw value as a\n\t\t *  string that needs to be parsed first, or an already parsed DataValue object (e.g. from a\n\t\t *  client-side parser, but that should be avoided), or null if the expert is sure there is\n\t\t *  nothing to parse.\n\t\t */\n\t\trawValue: util.abstractMember,\n\n\t\t/**\n\t\t * Will draw the user interface components for the user to edit the value.\n\t\t *\n\t\t * @return {Object} jQuery.Promise\n\t\t * @return {Function} return.done\n\t\t * @return {Function} return.fail\n\t\t */\n\t\tdraw: function() {\n\t\t\tthis._extendable.callExtensions( 'draw' );\n\t\t},\n\n\t\t/**\n\t\t * Will set the focus if there is some focusable input elements.\n\t\t */\n\t\tfocus: function() {},\n\n\t\t/**\n\t\t * Makes sure that the focus will be removed from any focusable input elements.\n\t\t */\n\t\tblur: function() {}\n\t};\n\n}( $.valueview ) );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/src/jquery.valueview.ExpertStore.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/src/jquery.valueview.ViewState.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/src/jquery.valueview.experts.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/src/jquery.valueview.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/src/jquery.valueview.valueview.js","messages":[{"ruleId":"jsdoc/check-tag-names","severity":1,"message":"Invalid JSDoc tag name \"alternateClassName\".","line":32,"column":null,"nodeType":"Block","endLine":32,"endColumn":null},{"ruleId":"mediawiki/class-doc","severity":1,"message":"All possible CSS classes should be documented. See https://w.wiki/PS2 for details.","line":229,"column":3,"nodeType":"CallExpression","endLine":229,"endColumn":48},{"ruleId":"jsdoc/require-returns","severity":1,"message":"Missing JSDoc @return declaration.","line":243,"column":2,"nodeType":"Block","endLine":245,"endColumn":5},{"ruleId":"mediawiki/class-doc","severity":1,"message":"All possible CSS classes should be documented. See https://w.wiki/PS2 for details.","line":248,"column":3,"nodeType":"CallExpression","endLine":253,"endColumn":4},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"key\" type.","line":263,"column":null,"nodeType":"Block","endLine":263,"endColumn":null},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"value\" type.","line":264,"column":null,"nodeType":"Block","endLine":264,"endColumn":null},{"ruleId":"jsdoc/require-returns","severity":1,"message":"Missing JSDoc @return declaration.","line":388,"column":2,"nodeType":"Block","endLine":391,"endColumn":5},{"ruleId":"jsdoc/require-returns","severity":1,"message":"Found more than one @return declaration.","line":611,"column":2,"nodeType":"Block","endLine":617,"endColumn":5},{"ruleId":"jsdoc/require-returns-check","severity":1,"message":"Found more than one @return declaration.","line":611,"column":2,"nodeType":"Block","endLine":617,"endColumn":5},{"ruleId":"mediawiki/class-doc","severity":1,"message":"All possible CSS classes should be documented. See https://w.wiki/PS2 for details.","line":621,"column":3,"nodeType":"CallExpression","endLine":623,"endColumn":76},{"ruleId":"mediawiki/class-doc","severity":1,"message":"All possible CSS classes should be documented. See https://w.wiki/PS2 for details.","line":621,"column":3,"nodeType":"CallExpression","endLine":622,"endColumn":79},{"ruleId":"jsdoc/require-returns","severity":1,"message":"Found more than one @return declaration.","line":631,"column":2,"nodeType":"Block","endLine":635,"endColumn":5},{"ruleId":"jsdoc/require-returns-check","severity":1,"message":"Found more than one @return declaration.","line":631,"column":2,"nodeType":"Block","endLine":635,"endColumn":5},{"ruleId":"jsdoc/require-returns","severity":1,"message":"Missing JSDoc @return declaration.","line":686,"column":2,"nodeType":"Block","endLine":691,"endColumn":5},{"ruleId":"jsdoc/require-returns","severity":1,"message":"Found more than one @return declaration.","line":740,"column":2,"nodeType":"Block","endLine":753,"endColumn":5},{"ruleId":"jsdoc/require-returns-check","severity":1,"message":"Found more than one @return declaration.","line":740,"column":2,"nodeType":"Block","endLine":753,"endColumn":5},{"ruleId":"jsdoc/require-returns","severity":1,"message":"Found more than one @return declaration.","line":848,"column":2,"nodeType":"Block","endLine":860,"endColumn":5},{"ruleId":"jsdoc/require-returns-check","severity":1,"message":"Found more than one @return declaration.","line":848,"column":2,"nodeType":"Block","endLine":860,"endColumn":5},{"ruleId":"jsdoc/require-returns","severity":1,"message":"Found more than one @return declaration.","line":884,"column":2,"nodeType":"Block","endLine":894,"endColumn":5},{"ruleId":"jsdoc/require-returns-check","severity":1,"message":"Found more than one @return declaration.","line":884,"column":2,"nodeType":"Block","endLine":894,"endColumn":5},{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'ViewState' is undefined.","line":939,"column":null,"nodeType":"Block","endLine":939,"endColumn":null}],"errorCount":0,"warningCount":21,"fixableErrorCount":0,"fixableWarningCount":0,"source":"module.exports = ( function( dv, vf, vp ) {\n'use strict';\n\nvar ViewState = require( './jquery.valueview.ViewState.js' );\n\nvar PARENT = $.Widget;\n\n/**\n * Helper for defining a valueview member function which will just call a valueview's Expert's\n * member function and return the value received from that function. If the valueview does not have\n * an expert currently, nothing will be done.\n *\n * @ignore\n *\n * @param {string} fnName Name of the function in jQuery.valueview.Expert\n * @return {Function}\n */\nfunction expertProxy( fnName ) {\n\treturn function() {\n\t\tif ( this._expert && this.isInEditMode() ) {\n\t\t\treturn this._expert[ fnName ].apply( this._expert, arguments );\n\t\t}\n\t};\n}\n\n/**\n * `valueview` widget which is responsible for displaying and serving input for creating/changing\n * data value objects (`dataValue.DataValue`). Depending on the data value type, the widget will\n * choose a different strategy for handing interaction with a specific instance of that data value.\n *\n * @class jQuery.valueview\n * @alternateClassName jQuery.valueview.valueview\n * @extends jQuery.Widget\n * @since 0.1\n * @license GNU GPL v2+\n * @author Daniel Werner < daniel.a.r.werner@gmail.com >\n * @author H. Snater < mediawiki@snater.com >\n *\n * @constructor\n *\n * @param {Object} options\n * @param {jQuery.valueview.ExpertStore} options.expertStore\n *        Used to determine an `Expert` depending on the data value type or the data type the\n *        `valueview` should handle. The `valueview` will be able to handle all data value types and\n *        data types the given store has `Experts` registered for.\n * @param {valueParsers.ValueParserStore} options.parserStore\n *        Store providing the parsers values may be parsed with.\n * @param {valueFormatters.ValueFormatter} options.plaintextFormatter\n *        A ValueFormatter instance returning plain text\n * @param {valueFormatters.ValueFormatter} options.htmlFormatter\n *        A ValueFormatter instance returning html\n * @param {string} options.language\n *        Language code of the language the `valueview` shall interact with parsers\n * @param {string|null} [options.vocabularyLookupApiUrl=null]\n * @param {string} [options.commonsApiUrl='https://commons.wikimedia.org/w/api.php']\n * @param {string|null} [options.dataTypeId=null]\n *        If set, an expert (`jQuery.valueview.Expert`) and a parser (`valueParsers.ValueParser`)\n *        will be determined from the provided stores according to the specified data type id.\n *        When setting the `valueview`'s value to a data value that is not valid against the data\n *        type referenced by the data type id, a note that the value is not suitable for the\n *        widget's current definition will be displayed.\n *        If the `dataTypeId` option is `null`, expert and parser will be determined\n *        using the `dataValueType` option.\n * @param {string|null} [options.dataValueType=null]\n *        If set while the `dataTypeId` option is `null`, a parser (`valueParsers.ValueParser`)\n *        will be determined from the provided store according to the specified data value type.\n *        When setting the `valueview`'s value to a data value that is not valid against the data\n *        value referenced by the data value type, a note that the value is not suitable for the\n *        widget's current definition will be displayed.\n *        If the `dataValueType` option as well as the `dataTypeId` option is `null`, expert and parser\n *        will be determined using the widget's current value.\n *        Consequently, if the value itself is `null`, the widget will not be able to offer any\n *        input for new values.\n * @param {dataValues.DataValue|null} [options.value=null]\n *        The data value this view should represent initially.\n *        If omitted, an empty view will be served, ready to take some input by the user. The value\n *        can also be overwritten later, by using the `value()` function.\n * @param {boolean} [options.autoStartEditing=true]\n *        Whether or not view should go into edit mode by its own upon initialization if its initial\n *        value is empty.\n * @param {number} [options.parseDelay=300]\n *        Time milliseconds that the parser should wait before parsing. A delay is useful to limit\n *        the number of API request that are outdated when returning because the input has changed\n *        in the meantime.\n * @param {util.MessageProvider|null} [options.messageProvider=null]\n *        Allows to customize the messages used by `ValueView`, `Expert`s and used widgets.\n * @param {util.ContentLanguages|null} [options.contentLanguages=null]\n *        Enables `Expert`s to provide language selection (i. e. the `MonolingualText` `Expert`).\n */\n/**\n * @event change\n * Triggered when the widget's value is updated.\n * @param {jQuery.Event} event\n */\n/**\n * @event parse\n * Triggered before the value gets parsed.\n * @param {jQuery.Event} event\n */\n/**\n * @event afterparse\n * Triggered after the value has been parsed.\n * @param {jQuery.Event} event\n */\n/**\n * @event afterstartediting\n * Triggered after edit mode has been started and rendered.\n * @param {jQuery.Event} event\n */\n/**\n * @event afterstopediting\n * Triggered after edit mode has been stopped and the widget has been redrawn.\n * @param {jQuery.Event} event\n * @param {boolean} dropValue\n */\n/**\n * @event afterdraw\n * Triggered after the widget has been redrawn.\n * @param {jQuery.Event} event\n */\n$.widget( 'valueview.valueview', PARENT, {\n\t/**\n\t * Current, accepted value. Might be \"behind\" the `Expert`'s raw value until the raw value gets\n\t * parsed and the parsed result set as the new accepted value.\n\t *\n\t * @property {dataValues.DataValue|null}\n\t * @private\n\t */\n\t_value: null,\n\n\t/**\n\t * Most current formatted value. Might be \"behind\" the `Expert`'s raw value as well as the\n\t * `valueview`'s parsed `DataValue` since formatting might involve an asynchronous\n\t * request.\n\t *\n\t * @property {string} HTML\n\t * @private\n\t */\n\t_formattedValue: '',\n\n\t/**\n\t * Plain text version of the value to be shown when the user starts editing.\n\t *\n\t * @property {string} Plain text\n\t * @private\n\t */\n\t_textValue: '',\n\n\t/**\n\t * The DOM node containing the actual value representation. This is the `Expert`'s viewport.\n\t *\n\t * @property {jQuery}\n\t * @readonly\n\t */\n\t$value: null,\n\n\t/**\n\t * Value from before edit mode.\n\t *\n\t * @property {dataValues.DataValue|null}\n\t * @private\n\t */\n\t_initialValue: null,\n\n\t/**\n\t * @property {boolean} [_isInEditMode=false]\n\t * @private\n\t */\n\t_isInEditMode: false,\n\n\t/**\n\t * `Expert` object responsible for serving the DOM to edit the current value. This is only\n\t * available when in edit mode, otherwise it is `null`.\n\t * Can also be `null` if the current value has a data value type unknown to the expert store\n\t * given in the `expertStore` option.\n\t *\n\t * @property {jQuery.valueview.Expert|null}\n\t * @private\n\t */\n\t_expert: null,\n\n\t/**\n\t * Timeout id of the currently running `setTimeout` function that delays the parser API request.\n\t *\n\t * @property {number}\n\t * @private\n\t */\n\t_parseTimer: null,\n\n\t/**\n\t * @see jQuery.Widget.options\n\t * @protected\n\t * @readonly\n\t */\n\toptions: {\n\t\texpertStore: null,\n\t\tparserStore: null,\n\t\thtmlFormatter: null,\n\t\tplaintextFormatter: null,\n\t\tdataTypeId: null,\n\t\tdataValueType: null,\n\t\tvalue: null,\n\t\tlanguage: null,\n\t\tvocabularyLookupApiUrl: null,\n\t\tcommonsApiUrl: 'https://commons.wikimedia.org/w/api.php',\n\t\tautoStartEditing: false,\n\t\tparseDelay: 300,\n\t\tmessageProvider: null,\n\t\tcontentLanguages: null\n\t},\n\n\t/**\n\t * @see jQuery.Widget._create\n\t * @protected\n\t *\n\t * @throws {Error} if a required option is not specified properly.\n\t */\n\t_create: function() {\n\t\tif ( !this.options.expertStore\n\t\t\t|| !this.options.parserStore\n\t\t\t|| !this.options.htmlFormatter\n\t\t\t|| !this.options.plaintextFormatter\n\t\t\t|| typeof this.options.language !== 'string'\n\t\t) {\n\t\t\tthrow new Error( 'Required option(s) not defined properly' );\n\t\t}\n\n\t\t// Build widget's basic dom:\n\t\tthis.element.addClass( this.widgetBaseClass );\n\t\tthis.$value = $( '<div/>', {\n\t\t\tclass: this.widgetBaseClass + '-value'\n\t\t} );\n\n\t\t// Set initial value if provided in options:\n\t\tthis._initValue( this.option( 'value' ) || null );\n\n\t\tif ( this.option( 'autoStartEditing' ) && this.isEmpty() ) {\n\t\t\t// If no data value is represented, offer UI to build one.\n\t\t\tthis.startEditing();\n\t\t}\n\t},\n\n\t/**\n\t * @see jQuery.Widget.destroy\n\t */\n\tdestroy: function() {\n\t\t// remove classes we added in this._createWidget() as well as others\n\t\tthis.element.removeClass(\n\t\t\tthis.widgetBaseClass + ' '\n\t\t\t\t+ this.widgetName + ' '\n\t\t\t\t+ this.widgetBaseClass + '-instaticmode '\n\t\t\t\t+ this.widgetBaseClass + '-ineditmode '\n\t\t);\n\n\t\tif ( this._expert ) {\n\t\t\tthis._destroyExpert();\n\t\t}\n\n\t\treturn PARENT.prototype.destroy.call( this );\n\t},\n\n\t/**\n\t * @param key\n\t * @param value\n\t * @see jQuery.Widget._setOption\n\t * @protected\n\t * @throws {Error} when trying to set an option that cannot be set after initialization.\n\t */\n\t_setOption: function( key, value ) {\n\t\tswitch ( key ) {\n\t\t\tcase 'autoStartEditing':\n\t\t\t\t// doesn't make sense to change this after initialization\n\t\t\t\tthrow new Error( 'Can not change jQuery.valueview option \"' + key\n\t\t\t\t\t+ '\" after widget initialization' );\n\t\t}\n\n\t\tPARENT.prototype._setOption.call( this, key, value );\n\n\t\tswitch ( key ) {\n\t\t\tcase 'expertStore':\n\t\t\tcase 'dataTypeId': // TODO: make this work properly and test\n\t\t\tcase 'dataValueType':\n\t\t\t\tthis._updateExpertConstructor();\n\t\t\t\tbreak;\n\t\t\tcase 'value':\n\t\t\t\t// TODO\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t},\n\n\t/**\n\t * When calling this, the view will transform into a form with input fields or advanced widgets\n\t * for editing the related data value.\n\t */\n\tstartEditing: function() {\n\t\tvar self = this;\n\n\t\tif ( this.isInEditMode() ) {\n\t\t\treturn; // return nothing to allow chaining\n\t\t}\n\n\t\tthis._initialValue = this.value();\n\t\tthis._isInEditMode = true;\n\n\t\tthis.element.html( this.$value );\n\n\t\t// XXX: This component shouldn't need to know about this :/\n\t\t// The html initially present (from the static html) does not necessarily\n\t\t// work as expected when moved around. Immediately re-render for\n\t\t// displaying Kartographer maps in entities.\n\t\tif ( this._value && this.options.dataValueType === 'globecoordinate' ) {\n\t\t\tthis._formatValue( this._value )\n\t\t\t.done( function( formattedValue ) {\n\t\t\t\tself._formattedValue = formattedValue;\n\t\t\t\tself.draw();\n\t\t\t} )\n\t\t\t.fail( function( message ) {\n\t\t\t\tif ( message ) {\n\t\t\t\t\tself._renderError( message );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\tthis.draw()\n\t\t.done( function() {\n\t\t\tself._trigger( 'afterstartediting' );\n\t\t} );\n\t},\n\n\t/**\n\t * Will close the view where editing of the related data value is possible and display a static\n\t * version of the value instead. This is similar to the disabled state but will be visually\n\t * different since the input interface will not be visible anymore.\n\t * By default the current value will be adopted if it is valid. If not valid or if the first\n\t * parameter is false, the value from before the edit mode will be restored.\n\t *\n\t * @param {boolean} [dropValue=false] If `true`, the value from before edit mode has been\n\t *        started will be reinstated.\n\t */\n\tstopEditing: function( dropValue ) {\n\t\tif ( !this.isInEditMode() ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdropValue = !!dropValue;\n\n\t\tvar self = this;\n\n\t\tif ( dropValue ) {\n\t\t\t// reinstate initial value from before edit mode\n\t\t\tthis.value( this.initialValue() );\n\t\t}\n\n\t\tthis._initialValue = null;\n\t\tthis._isInEditMode = false;\n\t\tdelete this.__lastValueCharacteristics;\n\t\tif ( this._expert ) {\n\t\t\tthis._destroyExpert();\n\t\t}\n\n\t\tthis.$value.detach();\n\n\t\tthis.draw()\n\t\t.done( function() {\n\t\t\tself._trigger( 'afterstopediting', null, [dropValue] );\n\t\t} );\n\t},\n\n\t/**\n\t * Short-cut for `stopEditing( true )`. Closes the edit view and restores the value from\n\t * before the edit mode has been started.\n\t */\n\tcancelEditing: function() {\n\t\tthis.stopEditing( true );\n\t},\n\n\t/**\n\t * Returns whether the view is in its editable state currently.\n\t *\n\t * @return {boolean}\n\t */\n\tisInEditMode: function() {\n\t\treturn this._isInEditMode;\n\t},\n\n\t/**\n\t * Returns the value from before the edit mode has been started.\n\t * If its not in edit mode, the current value will be returned.\n\t */\n\tinitialValue: function() {\n\t\tif ( !this.isInEditMode() ) {\n\t\t\treturn this.value();\n\t\t}\n\t\treturn this._initialValue;\n\t},\n\n\t// TODO: think about another function which should rather use some kind of \"ValidatedDataValue\",\n\t//       holding a reference to the used data type and the info that it is valid against it.\n\t//       As soon as we have validations we have to consider that the given value is invalid,\n\t//       this would require the following considerations:\n\t//       1) allow setting invalid values (wouldn't be that bad, invalid values should probably\n\t//          be displayed anyhow in some cases where we have old values for a property but the\n\t//          property definition has changed (e.g. allowed range from 0-1,000 changed to 0-100).\n\t//       2) Trigger a validation after the value is set. If invalid, warning in UI\n\t//       Probably we want both, a ValidatedDataValue AND the ability to set an invalid value as\n\t//       described.\n\t//       A ValidatedDataValue could always be returned by another function and be an indicator\n\t//       for whether the value is valid or not.\n\t/**\n\t * Returns the value of the view. If the view is in edit mode, this will return the current\n\t * value the user is typing. There is no guarantee that the returned value is valid.\n\t *\n\t * If the first parameter is given, this will change the value represented to that value. This\n\t * will trigger validation of the value.\n\t *\n\t * If `null` is given or returned, this means that the view is or should be empty.\n\t *\n\t * @param {dataValues.DataValue|null} [value]\n\t * @return {dataValues.DataValue|null|undefined} `null` if no value is set currently\n\t *\n\t * @throws {Error} if value provided is not a `dataValues.DataValue` instance.\n\t */\n\tvalue: function( value ) {\n\t\tif ( value === undefined ) {\n\t\t\treturn this._value;\n\t\t}\n\t\tif ( value !== null && !( value instanceof dv.DataValue ) ) {\n\t\t\tthrow new Error( 'The given value has to be an instance of dataValues.DataValue or '\n\t\t\t\t+ 'null' );\n\t\t}\n\t\tthis._setValue( value );\n\t},\n\n\t/**\n\t * @private\n\t *\n\t * @param {dataValues.DataValue|null} value\n\t * @return {dataValues.DataValue|null|undefined}\n\t */\n\t_initValue: function( value ) {\n\t\tvar formattedValue = this.element.html();\n\t\tif ( !formattedValue ) {\n\t\t\treturn this.value( value );\n\t\t} else {\n\t\t\tthis._value = value;\n\t\t\tthis._formattedValue = formattedValue;\n\t\t\tthis._updateExpertConstructor();\n\t\t\tthis.draw();\n\t\t}\n\t},\n\n\t/**\n\t * Sets the value internally and triggers the validation process on the new value, will also\n\t * make sure that the new value will be displayed.\n\t *\n\t * @param {dataValues.DataValue|null} value\n\t *\n\t * @throws {Error} if value provided is not a `dataValues.DataValue` instance.\n\t */\n\t_setValue: function( value ) {\n\t\t// Check whether given value is actually suitable for the widget:\n\t\tif ( value !== null // null represents empty value\n\t\t\t&& !( value instanceof dv.DataValue )\n\t\t) {\n\t\t\tthrow new Error( 'Instance of dataValues.DataValue required for setting a value' );\n\t\t}\n\n\t\tif ( this._value && value && JSON.stringify( value.toJSON() ) === JSON.stringify( this._value.toJSON() ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._value = value;\n\t\tthis._updateExpertConstructor(); // new value, new expert might be needed\n\n\t\t// TODO: trigger validation. Value will still be set independent from whether value is valid\n\t\t//  to ultimately set a value without triggering validation, some kind of ValidatedDataValue,\n\t\t//  as mentioned in the 'value' function's todo, would be required.\n\n\t\tvar self = this;\n\n\t\tif ( this._value === null ) {\n\t\t\tthis.draw();\n\t\t} else {\n\t\t\t// TODO: Cache the initial formatted value in order to not have to trigger an API\n\t\t\t// request when resetting.\n\t\t\tthis._formatValue( this._value )\n\t\t\t\t.done( function( formattedValue ) {\n\t\t\t\t\tself._formattedValue = formattedValue;\n\t\t\t\t\tself.draw();\n\t\t\t\t} )\n\t\t\t\t.fail( function( message ) {\n\t\t\t\t\tif ( message ) {\n\t\t\t\t\t\tself._renderError( message );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}\n\t},\n\n\t/**\n\t * Returns the most current formatted value featured by this `valueview`.\n\t *\n\t * @return {string}\n\t */\n\tgetFormattedValue: function() {\n\t\treturn this._formattedValue;\n\t},\n\n\t/**\n\t * Returns the current value formatted as plain text.\n\t *\n\t * @since 0.4\n\t *\n\t * @return {string}\n\t */\n\tgetTextValue: function() {\n\t\treturn this._textValue;\n\t},\n\n\t/**\n\t * Whether there is currently any value in the view. Basically, whether `value()` returns\n\t * `null`.\n\t *\n\t * @return {boolean}\n\t */\n\tisEmpty: function() {\n\t\treturn this.value() === null;\n\t},\n\n\t/**\n\t * Returns the `valueview`'s `Expert` object required for handling the desired value type. If\n\t * there is no `Expert` available for handling that value type, then null will be returned.\n\t *\n\t * @return {jQuery.valueview.Expert|null}\n\t */\n\texpert: function() {\n\t\treturn this._expert;\n\t},\n\n\t/**\n\t * Will update the constructor currently used for creating an `Expert`, if one is needed.\n\t *\n\t * @private\n\t *\n\t * @throws {Error} if no `Expert` store being an instance of `jQuery.valueview.ExpertStore` is\n\t *         set in the options.\n\t */\n\t_updateExpertConstructor: function() {\n\t\tif ( !( this.options.expertStore instanceof $.valueview.ExpertStore ) ) {\n\t\t\tthrow new Error( 'No ExpertStore set in valueview\\'s \"expertStore\" option' );\n\t\t}\n\n\t\tvar dataValueType = this._determineDataValueType();\n\n\t\tthis._expertConstructor = $.valueview.experts.EmptyValue;\n\n\t\tif ( dataValueType || this.options.dataTypeId ) {\n\t\t\tthis._expertConstructor = this.options.expertStore.getExpert(\n\t\t\t\tdataValueType,\n\t\t\t\tthis.options.dataTypeId\n\t\t\t) || $.valueview.experts.UnsupportedValue;\n\t\t}\n\t},\n\n\t/**\n\t * Will update the `Expert` responsible for handling the value type of the current value. If\n\t * there is no value set currently (empty value), the expert will be chosen based on the\n\t * `dataTypeId` or `dataValueType` option of the `valueview` widget.\n\t *\n\t * @private\n\t */\n\t_updateExpert: function() {\n\t\tif ( this._expert && this._expertConstructor\n\t\t\t&& this._expert.constructor === this._expertConstructor.prototype.constructor\n\t\t) {\n\t\t\treturn; // fully compatible expert\n\t\t}\n\n\t\t// Previous expert not suitable for the new task!\n\t\t// Destroy old expert, create new one suitable for value:\n\t\tif ( this._expert ) {\n\t\t\tthis._destroyExpert();\n\t\t}\n\n\t\tif ( this._expertConstructor ) {\n\t\t\tthis._expert = new this._expertConstructor(\n\t\t\t\tthis.$value,\n\t\t\t\tthis.viewState(),\n\t\t\t\tthis.viewNotifier(),\n\t\t\t\t{\n\t\t\t\t\tlanguage: this.options.language,\n\t\t\t\t\tvocabularyLookupApiUrl: this.options.vocabularyLookupApiUrl || null,\n\t\t\t\t\tcommonsApiUrl: this.options.commonsApiUrl,\n\t\t\t\t\tcontentLanguages: this.options.contentLanguages,\n\t\t\t\t\tmessageProvider: this.options.messageProvider\n\t\t\t\t}\n\t\t\t);\n\t\t\tthis._expert.init();\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_destroyExpert: function() {\n\t\tthis._expert.destroy();\n\t\tthis._expert = null;\n\t},\n\n\t/**\n\t * Will render the `valueview`'s current state (does consider edit mode, current value, etc.).\n\t *\n\t * @return {Object} jQuery.Promise\n\t * @return {Function} return.done\n\t * @return {Function} return.fail\n\t */\n\tdraw: function() {\n\t\tvar self = this;\n\n\t\tthis.element\n\t\t\t.toggleClass( this.widgetBaseClass + '-instaticmode', !this._isInEditMode )\n\t\t\t.toggleClass( this.widgetBaseClass + '-ineditmode', this._isInEditMode );\n\n\t\treturn this.drawContent()\n\t\t\t.done( function() {\n\t\t\t\tself._trigger( 'afterdraw' );\n\t\t\t} );\n\t},\n\n\t/**\n\t * @return {Object} jQuery.Promise\n\t * @return {Function} return.done\n\t * @return {Function} return.fail\n\t */\n\tdrawContent: function() {\n\t\tvar self = this,\n\t\t\tdeferred = $.Deferred();\n\n\t\tif ( this.isInEditMode() ) {\n\t\t\tthis._updateTextValue().then( function () {\n\t\t\t\tif ( !self.isInEditMode() ) {\n\t\t\t\t\t// edit mode was left while formatting text value\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tself._updateExpert();\n\n\t\t\t\t// TODO: Display message that data value type is unsupported or no expert indicator\n\t\t\t\t//  and no value at the same time:\n\t\t\t\t// if ( !self._expert ) { ... }\n\n\t\t\t\tself._expert.draw()\n\t\t\t\t.done( function() {\n\t\t\t\t\tdeferred.resolve();\n\t\t\t\t} )\n\t\t\t\t.fail( function() {\n\t\t\t\t\tdeferred.reject();\n\t\t\t\t} );\n\t\t\t} );\n\t\t} else {\n\t\t\tthis.drawStaticContent();\n\t\t\tdeferred.resolve();\n\t\t}\n\n\t\treturn deferred.promise();\n\t},\n\n\t/**\n\t * Draws static content.\n\t */\n\tdrawStaticContent: function() {\n\t\tthis.element.html( this.getFormattedValue() );\n\t},\n\n\t/**\n\t * Focuses the widget.\n\t */\n\tfocus: expertProxy( 'focus' ),\n\n\t/**\n\t * Removes focus from the widget.\n\t */\n\tblur: expertProxy( 'blur' ),\n\n\t/**\n\t * Will take the current raw value of the `valueview`'s `Expert` and parse and format it using\n\t * the `valueParserStore`, `plaintextFormatter` and `htmlFormatter` injected via the options.\n\t *\n\t * @private\n\t */\n\t_updateValue: function() {\n\t\tvar self = this;\n\n\t\tthis._value = null;\n\t\tthis._formattedValue = '';\n\t\tthis._textValue = '';\n\n\t\treturn this._parseValue()\n\t\t\t.done( function( parsedValue ) {\n\t\t\t\tself._value = parsedValue;\n\n\t\t\t\tif ( self._value === null ) {\n\t\t\t\t\tself.drawContent();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tself._formatValue( parsedValue )\n\t\t\t\t\t.done( function( formattedValue ) {\n\t\t\t\t\t\tself._formattedValue = formattedValue;\n\t\t\t\t\t\tself.drawContent();\n\t\t\t\t\t} )\n\t\t\t\t\t.fail( function( message ) {\n\t\t\t\t\t\tif ( message ) {\n\t\t\t\t\t\t\tself._renderError( message );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t} )\n\t\t\t.fail( function( message ) {\n\t\t\t\tif ( message ) {\n\t\t\t\t\tself._renderError( message );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\n\t/**\n\t * Renders an error message.\n\t *\n\t * @private\n\t *\n\t * @param {string} message HTML error message.\n\t */\n\t_renderError: function( message ) {\n\t\tif ( this._expert && this._expert.preview ) {\n\t\t\tthis._expert.preview.update( message );\n\t\t}\n\t},\n\n\t/**\n\t * Parses the current raw value.\n\t *\n\t * @private\n\t *\n\t * @return {Object} jQuery.Promise\n\t * @return {Function} return.done\n\t * @return {dataValues.DataValue|null} return.done.value The parse result.\n\t * @return {Function} return.fail\n\t * @return {string|undefined} return.fail.message HTML error message or `undefined` if the\n\t *         result shall be ignored.\n\t *\n\t * @throws {Error} if the parser result is neither a `DataValue` instance nor null.\n\t */\n\t_parseValue: function() {\n\t\tvar self = this,\n\t\t\texpert = this._expert,\n\t\t\trawValue = expert.rawValue(),\n\t\t\tdeferred = $.Deferred();\n\n\t\tthis._trigger( 'parse' );\n\n\t\tif ( rawValue === null || rawValue instanceof dv.DataValue ) {\n\t\t\tthis.__lastUpdateValue = undefined;\n\t\t\tself._trigger( 'afterparse' );\n\t\t\tdeferred.resolve( rawValue );\n\t\t\treturn deferred.promise();\n\t\t}\n\n\t\tif ( this._parseTimer ) {\n\t\t\tclearTimeout( this._parseTimer );\n\t\t}\n\n\t\tvar valueParser = this._instantiateParser( expert.valueCharacteristics() );\n\n\t\tself.__lastUpdateValue = rawValue;\n\t\tthis._parseTimer = setTimeout( function() {\n\t\t\t// TODO: Hacky preview spinner activation. Necessary until we move the responsibility\n\t\t\t//  for previews out of the experts. The preview should be handled in the same place for\n\t\t\t//  all value types, could perhaps move into its own widget, listening to valueview\n\t\t\t//  events.\n\t\t\tif ( expert && expert.preview ) {\n\t\t\t\texpert.preview.showSpinner();\n\t\t\t}\n\n\t\t\tvalueParser.parse( rawValue )\n\t\t\t\t.done( function( parsedValue ) {\n\t\t\t\t\t// Paranoia check against ValueParser interface:\n\t\t\t\t\tif ( parsedValue !== null && !( parsedValue instanceof dv.DataValue ) ) {\n\t\t\t\t\t\tthrow new Error( 'Unexpected value parser result' );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( self.__lastUpdateValue === undefined || self.__lastUpdateValue !== rawValue ) {\n\t\t\t\t\t\t// latest update job is done, this one must be a late response for some weird\n\t\t\t\t\t\t// reason, or the value has since been updated, so should be re-parsed\n\t\t\t\t\t\t// and this result be rejected and ignored.\n\t\t\t\t\t\tdeferred.reject();\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// this is the response for the latest update! by setting this to undefined, we\n\t\t\t\t\t\t// will ignore all responses which might come back late.\n\t\t\t\t\t\t// Another reason for this could be something like \"a\", \"ab\", \"a\", where the\n\t\t\t\t\t\t// first response comes back and the following two can be ignored.\n\t\t\t\t\t\tself.__lastUpdateValue = undefined;\n\t\t\t\t\t}\n\n\t\t\t\t\tdeferred.resolve( parsedValue );\n\t\t\t\t} )\n\t\t\t\t.fail( function( message ) {\n\t\t\t\t\tdeferred.reject( message );\n\t\t\t\t} )\n\t\t\t\t.always( function() {\n\t\t\t\t\tself._trigger( 'afterparse' );\n\t\t\t\t} );\n\t\t}, this.options.parseDelay );\n\n\t\treturn deferred.promise();\n\t},\n\n\t/**\n\t * @private\n\t *\n\t * @param {Object} [additionalParserOptions]\n\t * @return {valueParsers.ValueParser}\n\t *\n\t * @throws {Error} if no parser store being an instance of `valueParsers.ValueParserStore` is\n\t *         set in the options.\n\t */\n\t_instantiateParser: function( additionalParserOptions ) {\n\t\tif ( !( this.options.parserStore instanceof vp.ValueParserStore ) ) {\n\t\t\tthrow new Error( 'No value parser store in valueview\\'s options specified' );\n\t\t}\n\n\t\tvar Parser = this.options.parserStore.getParser(\n\t\t\tthis._determineDataValueType(),\n\t\t\tthis.options.dataTypeId\n\t\t);\n\n\t\tvar parserOptions = $.extend(\n\t\t\t{\n\t\t\t\tlang: this.options.language\n\t\t\t},\n\t\t\tParser.prototype.getOptions(),\n\t\t\tadditionalParserOptions || {}\n\t\t);\n\n\t\treturn new Parser( parserOptions );\n\t},\n\n\t/**\n\t * Formats a specific data value.\n\t *\n\t * @private\n\t *\n\t * @param {dataValues.DataValue} dataValue\n\t * @return {Object} jQuery.Promise\n\t * @return {Function} return.done\n\t * @return {string} return.done.formattedValue\n\t * @return {Function} return.fail\n\t * @return {string|undefined} return.fail.message HTML error message or `undefined` if the\n\t *         result shall be ignored.\n\t */\n\t_formatValue: function( dataValue ) {\n\t\tvar self = this,\n\t\t\tdeferred = $.Deferred();\n\n\t\tthis.options.htmlFormatter.format( dataValue )\n\t\t\t.done( function( formattedValue, formattedDataValue ) {\n\t\t\t\tif ( dataValue === formattedDataValue ) {\n\t\t\t\t\tdeferred.resolve( formattedValue );\n\t\t\t\t} else {\n\t\t\t\t\t// Late response that should be ignored.\n\t\t\t\t\tdeferred.reject();\n\t\t\t\t}\n\t\t\t} )\n\t\t\t.fail( function( message ) {\n\t\t\t\tdeferred.reject( message );\n\t\t\t} )\n\t\t\t.always( function() {\n\t\t\t\tself._trigger( 'afterformat' );\n\t\t\t} );\n\n\t\treturn deferred.promise();\n\t},\n\n\t/**\n\t * @private\n\t *\n\t * @return {Object} jQuery.Promise\n\t * @return {Function} return.done\n\t * @return {string|null} return.done.formatted Formatted `DataValue`.\n\t * @return {dataValues.DataValue|null} return.done.dataValue `DataValue` object that has been\n\t *         formatted.\n\t * @return {Function} return.fail\n\t * @return {string} return.fail.message HTML error message.\n\t */\n\t_updateTextValue: function() {\n\t\tvar self = this,\n\t\t\tdeferred = $.Deferred(),\n\t\t\tdataValue = this._value;\n\n\t\tif ( !dataValue ) {\n\t\t\tdeferred.resolve();\n\t\t\treturn deferred.promise();\n\t\t}\n\n\t\tthis.options.plaintextFormatter.format( dataValue )\n\t\t\t.done( function( formattedValue, formattedDataValue ) {\n\t\t\t\tif ( dataValue === formattedDataValue ) {\n\t\t\t\t\tself._textValue = formattedValue;\n\t\t\t\t\tdeferred.resolve();\n\t\t\t\t} else {\n\t\t\t\t\t// Late response that should be ignored.\n\t\t\t\t\tdeferred.reject();\n\t\t\t\t}\n\t\t\t} )\n\t\t\t.fail( function( message ) {\n\t\t\t\tdeferred.reject( message );\n\t\t\t} );\n\n\t\treturn deferred.promise();\n\t},\n\n\t/**\n\t * @private\n\t *\n\t * @return {string|null}\n\t */\n\t_determineDataValueType: function() {\n\t\tvar value = this.value();\n\t\treturn ( !this.options.dataValueType && value )\n\t\t\t? value.getType()\n\t\t\t: this.options.dataValueType;\n\t},\n\n\t/**\n\t * Returns an object with information about the view. This is a immutable object which can be\n\t * passed if information about the view should be revealed to some function or constructor\n\t * without making the whole view object available.\n\t *\n\t * @return {ViewState}\n\t */\n\tviewState: function() {\n\t\treturn new ViewState( this );\n\t},\n\n\t/**\n\t * Returns an object which allows to notify the view about certain events. This is required in\n\t * the `valueview`'s `Expert` and should only be used with caution if used from other places.\n\t *\n\t * @return {util.Notifier}\n\t */\n\tviewNotifier: function() {\n\t\tvar self = this;\n\n\t\treturn new util.Notifier( {\n\t\t\tchange: function() {\n\t\t\t\tvar i;\n\n\t\t\t\tif ( !self._expert ) {\n\t\t\t\t\t// someone notified about change while there couldn't have been one since there\n\t\t\t\t\t// is no expert which allows for any change currently...\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// explicitly check whether the raw value has actually changed compared to the value\n\t\t\t\t// we have currently. This is not the case when _setValue() sets a new value because\n\t\t\t\t// the expert will get that new value's raw value while we already have the parsed\n\t\t\t\t// version of the value.\n\t\t\t\tvar differentValueCharacteristics = false,\n\t\t\t\t\tnewValueCharacteristics = self._expert.valueCharacteristics(),\n\t\t\t\t\tlastValueCharacteristics = self.__lastValueCharacteristics || {};\n\n\t\t\t\tfor ( i in newValueCharacteristics ) {\n\t\t\t\t\tdifferentValueCharacteristics = differentValueCharacteristics\n\t\t\t\t\t|| newValueCharacteristics[i] !== lastValueCharacteristics[i];\n\t\t\t\t}\n\t\t\t\tfor ( i in lastValueCharacteristics ) {\n\t\t\t\t\tdifferentValueCharacteristics = differentValueCharacteristics\n\t\t\t\t\t|| newValueCharacteristics[i] !== lastValueCharacteristics[i];\n\t\t\t\t}\n\n\t\t\t\tvar changeDetected = differentValueCharacteristics ||\n\t\t\t\t\tself.getTextValue() !== self._expert.rawValue();\n\n\t\t\t\tif ( changeDetected ) {\n\t\t\t\t\tself.__lastValueCharacteristics = newValueCharacteristics;\n\t\t\t\t\tself._updateValue().done( function() {\n\t\t\t\t\t\tself._trigger( 'change' );\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n\n} );\n\n// We have to override this here because $.widget sets it no matter what's in\n// the prototype\n$.valueview.valueview.prototype.widgetBaseClass = 'valueview';\n\n}( dataValues, valueFormatters, valueParsers ) );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/.eslintrc.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/lib/jquery.event/jquery.event.special.eachchange.tests.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/lib/jquery.ui/jquery.ui.commonssuggester.tests.js","messages":[{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"mockSearchResult\" type.","line":8,"column":null,"nodeType":"Block","endLine":8,"endColumn":null},{"ruleId":"no-shadow","severity":1,"message":"'options' is already declared in the upper scope on line 12 column 7.","line":13,"column":20,"nodeType":"Identifier","messageId":"noShadow","endLine":13,"endColumn":27}],"errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/**\n * @license GPL-2.0+\n */\n( function () {\n\t'use strict';\n\n\t/**\n\t * @param mockSearchResult\n\t * @return {jQuery}\n\t */\n\tvar newTestSuggester = function( mockSearchResult ) {\n\t\tvar options = {\n\t\t\tajax: function( options ) {\n\t\t\t\tvar response = { query: { search: mockSearchResult || [] } };\n\n\t\t\t\t// This uses the search results array as a spy, and appends _requestTerm\n\t\t\t\tresponse.query.search._requestTerm = options.data.srsearch;\n\n\t\t\t\treturn $.Deferred().resolve( response ).promise();\n\t\t\t},\n\t\t\tapiUrl: 'can not be empty'\n\t\t};\n\n\t\treturn $( '<input>' )\n\t\t\t.addClass( 'test_suggester' )\n\t\t\t.appendTo( 'body' )\n\t\t\t.commonssuggester( options );\n\t};\n\n\tQUnit.module( 'jquery.ui.commonssuggester', {\n\t\tafterEach: function() {\n\t\t\tvar $suggester = $( '.test_suggester' ),\n\t\t\t\tsuggester = $suggester.data( 'commonssuggester' );\n\t\t\tif ( suggester ) {\n\t\t\t\tsuggester.destroy();\n\t\t\t}\n\t\t\t$suggester.remove();\n\t\t}\n\t} );\n\n\tQUnit.test( 'Create', function( assert ) {\n\t\tvar $suggester = newTestSuggester();\n\n\t\tassert.ok(\n\t\t\t$suggester.data( 'commonssuggester' ) instanceof $.ui.commonssuggester,\n\t\t\t'Instantiated commons suggester.'\n\t\t);\n\t} );\n\n\tQUnit.test( '_grepFileTitleFromTerm', function( assert ) {\n\t\tvar $suggester = newTestSuggester(),\n\t\t\tsuggester = $suggester.data( 'commonssuggester' ),\n\t\t\ttestCases = {\n\t\t\t\t'': '',\n\t\t\t\t'File:A.jpg': 'File:A.jpg',\n\t\t\t\t'%41': 'A',\n\t\t\t\t'A &%26 B.jpg#not-sure-if-URL': 'A && B.jpg#not-sure-if-URL',\n\n\t\t\t\t// Find last title=… parameter\n\t\t\t\t'title=A.jpg&title=B.jpg': 'B.jpg',\n\t\t\t\t'title=A.jpg/title=%42.jpg': 'B.jpg',\n\t\t\t\t'title=File%3AA.jpg&oldid=1#title=/X.jpg': 'File:A.jpg',\n\t\t\t\t'https://commons.wikimedia.org/w/?title=File:%41.jpg&action=edit': 'File:A.jpg',\n\t\t\t\t'https://commons.wikimedia.org/w/index.php?title=File:A.jpg&oldid=1': 'File:A.jpg',\n\t\t\t\t'https://commons.wikimedia.org/w/index.php?title=File%3AA.jpg&diff=1': 'File:A.jpg',\n\n\t\t\t\t// Find last word after a slash\n\t\t\t\t'title=A.jpg/B.jpg': 'B.jpg',\n\t\t\t\t'w/A.jpg': 'A.jpg',\n\t\t\t\t'/w/A.jpg': 'A.jpg',\n\t\t\t\t'A.jpg/B.jpg': 'B.jpg',\n\t\t\t\t'wiki/File:%41.jpg#title=/X.jpg': 'File:A.jpg',\n\t\t\t\t'/wiki/File:A.jpg': 'File:A.jpg',\n\t\t\t\t'//commons.wikimedia.org/wiki/File:A.jpg': 'File:A.jpg',\n\t\t\t\t'https://commons.wikimedia.org/wiki/File:A.jpg': 'File:A.jpg',\n\t\t\t\t'https://commons.wikimedia.org/wiki/File:A.jpg#filehistory': 'File:A.jpg',\n\t\t\t\t'https://commons.wikimedia.org/wiki/File:A.jpg?action=history': 'File:A.jpg',\n\t\t\t\t'https://upload.wikimedia.org/wikipedia/commons/6/66/A.jpg': 'A.jpg',\n\t\t\t\t'/wikipedia/commons/thumb/6/66/A.jpg/100px-A.jpg': '100px-A.jpg',\n\n\t\t\t\t// Minimum is 2 characters\n\t\t\t\t'/w/': '/w/',\n\t\t\t\t'title=A': 'title=A',\n\t\t\t\t'A.jpg/B': 'A.jpg/B',\n\t\t\t\t'A.jpg/B.jpg/C': 'B.jpg',\n\n\t\t\t\t// Do not do anything with invalid URL encoding\n\t\t\t\t'1%': '1%',\n\t\t\t\t'title=1%.jpg': 'title=1%.jpg'\n\t\t\t};\n\n\t\t$.each( testCases, function( input, expected ) {\n\t\t\tvar actual = suggester._grepFileTitleFromTerm( input );\n\n\t\t\tassert.strictEqual( actual, expected );\n\t\t} );\n\t} );\n\n\tQUnit.test( 'search integration', function( assert ) {\n\t\tvar $suggester = newTestSuggester(),\n\t\t\tsuggester = $suggester.data( 'commonssuggester' ),\n\t\t\tinput = 'title=Foo/Bar',\n\t\t\tdone = assert.async();\n\n\t\t$suggester.val( input );\n\t\tsuggester.search().done( function( suggestions, term ) {\n\t\t\tassert.strictEqual( suggestions._requestTerm, 'Bar' );\n\t\t\tassert.strictEqual( term, input );\n\n\t\t\tdone();\n\t\t} );\n\t} );\n\n\tQUnit.test( 'put matching file name on top of result list', function( assert ) {\n\t\tvar $suggester = newTestSuggester( [\n\t\t\t\t{ title: 'File:mockResult_a.jpg' },\n\t\t\t\t{ title: 'File:mockResult_b.jpg' },\n\t\t\t\t{ title: 'File:mockResult_c.jpg' }\n\t\t\t] ),\n\t\t\tsuggester = $suggester.data( 'commonssuggester' ),\n\t\t\tinput = 'mockResult_b.jpg',\n\t\t\tdone = assert.async();\n\n\t\t$suggester.val( input );\n\t\tsuggester.search().done( function( suggestions, term ) {\n\t\t\tassert.strictEqual( suggestions[0].title, 'File:mockResult_b.jpg' );\n\t\t\tassert.strictEqual( suggestions[2].title, 'File:mockResult_c.jpg' );\n\t\t\tdone();\n\t\t} );\n\t} );\n\n}() );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/lib/jquery.ui/jquery.ui.inputextender.tests.js","messages":[{"ruleId":"jsdoc/require-returns","severity":1,"message":"Missing JSDoc @return declaration.","line":12,"column":2,"nodeType":"Block","endLine":18,"endColumn":5},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"assert\" type.","line":47,"column":null,"nodeType":"Block","endLine":47,"endColumn":null}],"errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/**\n * @license GNU GPL v2+\n * @author H. Snater < mediawiki@snater.com >\n * @author Daniel Werner < daniel.a.r.werner@gmail.com >\n */\n\n( function () {\n\t'use strict';\n\n\t// TODO: Tests for hideWhenInputEmptyOption\n\n\t/**\n\t * Factory for creating an input extender widget suitable for testing.\n\t *\n\t * @param {Object} [options] input extender options. If not given, the \"content\" option will be\n\t *        set to some span node with text.\n\t * @param {jQuery} [$input] Subject node for the widget.\n\t */\n\tvar newTestInputextender = function( options, $input ) {\n\t\tif ( $input === undefined && options instanceof $ ) {\n\t\t\t$input = options;\n\t\t\toptions = undefined;\n\t\t}\n\n\t\toptions = options || {\n\t\t\t\tcontent: [ $( '<span/>' ).addClass( 'defaultContent' ).text( 'default content' ) ]\n\t\t\t};\n\n\t\t$input = $input || $( '<input/>' ).appendTo( $( 'body' ) );\n\t\t$input\n\t\t.addClass( 'test_inputextender' )\n\t\t.inputextender( options );\n\n\t\treturn $input.data( 'inputextender' );\n\t};\n\n\t/**\n\t * Convenience function for testing behavior before/after/during showing and hiding extension.\n\t *\n\t * @example\n\t * showAndHideExtensionAgain( assert, newTestInputextender(), {\n\t * afterCallingShowExtension: function( instance ) {},\n\t * whenFullyShown: function() { instance },\n\t * afterCallingHideExtension: function( instance ) {},\n\t * whenFullyHiddenAgain: function( instance ) {}\n\t * } );\n\t * @param assert\n\t * @param {jQuery.ui.inputextender} instance\n\t * @param {Object} [hideControl] jQuery.Promise. If given, then the \"hide\" action will only be\n\t * done after the promise got resolved. If the promise gets rejected, then the hide\n\t * action will never be performed.\n\t * @param {Object} callbacks\n\t * @return {Object} jQuery.Promise Resolved after final hiding is done. Can be rejected in case\n\t * a hideControl has been injected and gets rejected.\n\t */\n\tfunction showAndHideExtensionAgain( assert, instance, hideControl, callbacks ) {\n\t\tvar deferred = $.Deferred();\n\t\tvar done = assert.async( 2 );\n\t\tif ( !hideControl.done ) {\n\t\t\tcallbacks = hideControl;\n\t\t\t// We will do the hideExtension() immediately in this case:\n\t\t\thideControl = $.Deferred().resolve().promise();\n\t\t}\n\n\t\tinstance.showExtension( function() {\n\t\t\t( callbacks.whenFullyShown || $.noop )( instance );\n\n\t\t\thideControl.done( function() {\n\t\t\t\tinstance.hideExtension( function() {\n\t\t\t\t\t( callbacks.whenFullyHiddenAgain || $.noop )( instance );\n\n\t\t\t\t\tdeferred.resolve();\n\t\t\t\t\tdone(); // *2*\n\t\t\t\t} );\n\t\t\t\t( callbacks.afterCallingHideExtension || $.noop )( instance );\n\t\t\t} )\n\t\t\t.fail( function() {\n\t\t\t\tdeferred.reject();\n\t\t\t} )\n\t\t\t.always( done );\n\t\t} );\n\t\t( callbacks.afterCallingShowExtension || $.noop )( instance );\n\n\t\treturn deferred.promise();\n\t}\n\n\tQUnit.module( 'jquery.ui.inputextender', {\n\t\tafterEach: function() {\n\t\t\t$( '.test_inputextender' ).each( function( i, node ) {\n\t\t\t\tvar inputextender = $( node ).data( 'inputextender' );\n\t\t\t\tif ( inputextender ) {\n\t\t\t\t\tinputextender.destroy();\n\t\t\t\t}\n\t\t\t\t$( node ).remove();\n\t\t\t} );\n\t\t}\n\t} );\n\n\tQUnit.test( 'Initialization', function( assert ) {\n\t\tvar extender = newTestInputextender();\n\n\t\tassert.ok(\n\t\t\textender instanceof $.ui.inputextender,\n\t\t\t'Initialized widget.'\n\t\t);\n\n\t\tassert.strictEqual(\n\t\t\textender.extensionIsActive(), false,\n\t\t\t'Extension not active initially.'\n\t\t);\n\t} );\n\n\tQUnit.test( 'Initialization on focused input', function( assert ) {\n\t\tvar $input = $( '<input/>' ).appendTo( $( 'body' ) ).focus();\n\t\tif ( !$input.is( ':focus' ) ) {\n\t\t\tassert.ok( true, 'Could not test since focussing does not work.' );\n\t\t\t// eslint-disable-next-line qunit/no-early-return\n\t\t\treturn;\n\t\t}\n\t\tvar extender = newTestInputextender( $input );\n\t\tvar isOk = extender.extensionIsActive();\n\n\t\tassert.ok( isOk, 'Extension active initially because input has focus.' );\n\t} );\n\n\tQUnit.test( 'Destruction', function( assert ) {\n\t\tvar extender = newTestInputextender(),\n\t\t\twidgetBaseClass = extender.widgetBaseClass;\n\n\t\textender.showExtension(); // Make sure extension is being constructed.\n\t\textender.destroy();\n\n\t\tassert.strictEqual(\n\t\t\t$( '.test_inputextender' ).data( 'inputextender' ), undefined,\n\t\t\t'Destroyed widget.'\n\t\t);\n\n\t\tassert.strictEqual(\n\t\t\t$( '.' + widgetBaseClass + '-extension' ).length,\n\t\t\t0,\n\t\t\t'Removed extension node from DOM.'\n\t\t);\n\t} );\n\n\tQUnit.test( 'showExtension and extensionIsVisible/extensionIsActive', function( assert ) {\n\t\tshowAndHideExtensionAgain( assert, newTestInputextender(), {\n\t\t\tafterCallingShowExtension: function( instance ) {\n\t\t\t\tassert.ok(\n\t\t\t\t\tinstance.extensionIsActive(),\n\t\t\t\t\t'Extension is considered \"active\" immediately after calling \"showExtension\".'\n\t\t\t\t);\n\n\t\t\t\tassert.ok(\n\t\t\t\t\tinstance.extensionIsVisible(),\n\t\t\t\t\t'Extension is visible immediately after calling \"showExtension\".'\n\t\t\t\t);\n\n\t\t\t\tassert.ok(\n\t\t\t\t\tinstance.extension(),\n\t\t\t\t\t'extension() returns extension\\'s DOM at this state.'\n\t\t\t\t);\n\t\t\t},\n\t\t\twhenFullyShown: function( instance ) {\n\t\t\t\tassert.ok(\n\t\t\t\t\ttrue,\n\t\t\t\t\t'showExtension( callback ) has triggered callback.'\n\t\t\t\t);\n\t\t\t},\n\t\t\tafterCallingHideExtension: function( instance ) {},\n\t\t\twhenFullyHiddenAgain: function( instance ) {}\n\t\t} );\n\t} );\n\n\tQUnit.test( 'hideExtension and extensionIsVisible/extensionIsActive', function( assert ) {\n\t\tshowAndHideExtensionAgain( assert, newTestInputextender(), {\n\t\t\tafterCallingShowExtension: function( instance ) {},\n\t\t\twhenFullyShown: function( instance ) {},\n\t\t\tafterCallingHideExtension: function( instance ) {\n\t\t\t\tassert.strictEqual(\n\t\t\t\t\tinstance.extensionIsActive(), false,\n\t\t\t\t\t'Extension is considered \"inactive\" immediately after calling \"hideExtension\".'\n\t\t\t\t);\n\n\t\t\t\tassert.strictEqual(\n\t\t\t\t\tinstance.extensionIsVisible(), false,\n\t\t\t\t\t'Extension is regarded invisible immediately when calling \"hideExtension\".'\n\t\t\t\t);\n\n\t\t\t\tassert.strictEqual(\n\t\t\t\t\tinstance.extension(),\n\t\t\t\t\tnull,\n\t\t\t\t\t'extension() no longer returns extension\\'s DOM at this stage.'\n\t\t\t\t);\n\t\t\t},\n\t\t\twhenFullyHiddenAgain: function( instance ) {\n\t\t\t\tassert.ok(\n\t\t\t\t\ttrue,\n\t\t\t\t\t'hideExtension( callback ) has triggered callback.'\n\t\t\t\t);\n\n\t\t\t\tassert.strictEqual(\n\t\t\t\t\tinstance.extensionIsVisible(), false,\n\t\t\t\t\t'Extension is not visible anymore when callback gets called after \"hide\" is done.'\n\t\t\t\t);\n\n\t\t\t\tassert.strictEqual(\n\t\t\t\t\tinstance.extension(),\n\t\t\t\t\tnull,\n\t\t\t\t\t'extension() does not return extension\\'s DOM in this state.'\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\t} );\n\n\t/**\n\t * @param {QUnit.assert} assert\n\t * @param {jQuery.ui.inputextender[]} inputExtenders\n\t */\n\tfunction assertCurrentlyVisibleExtensions( assert, inputExtenders ) {\n\t\tvar visibleExtenders = $.ui.inputextender.getInstancesWithVisibleExtensions();\n\t\tassert.ok(\n\t\t\t!$( inputExtenders ).not( $( visibleExtenders ) ).length\n\t\t\t\t&& !$( visibleExtenders ).not( $( inputExtenders ) ).length,\n\t\t\t'All inputextender instances expected to be visible are visible.'\n\t\t);\n\t\tassert.strictEqual(\n\t\t\tvisibleExtenders.length,\n\t\t\tinputExtenders.length,\n\t\t\tinputExtenders.length + ' active extensions in total now.'\n\t\t);\n\t}\n\n\t/**\n\t * Will take a list of inactive input extender instances and show their extensions one after\n\t * another. After all of them are extended, the last one who got extended  will be hidden again,\n\t * then, the others.\n\t * After each step, getInstancesWithVisibleExtensions() will be tested for its return value.\n\t *\n\t * @param {QUnit.assert} assert\n\t * @param {jQuery.ui.inputextender[]} inactiveExtenders\n\t * @param {jQuery.ui.inputextender[]} activeExtenders private\n\t * @return {Object} jQuery.Promise\n\t */\n\tfunction testGetInstancesWithVisibleExtensions(\n\t\tassert, inactiveExtenders, activeExtenders\n\t) {\n\t\tactiveExtenders = activeExtenders || [];\n\n\t\t// We will call this function recursively until all inactive extenders are active extenders.\n\t\t// After all extenders are active (no inactive extenders given in inactiveExtenders), the\n\t\t// promise returned by the function will be resolved. This will result in the hiding of the\n\t\t// extender which has been made active before, after that has been done, the one before that\n\t\t// one will be made inactive and so on.\n\t\tvar hideControl = $.Deferred();\n\n\t\tif ( inactiveExtenders.length < 1 ) {\n\t\t\treturn hideControl.resolve().promise();\n\t\t}\n\n\t\tvar remainingInactiveExtenders = inactiveExtenders.slice();\n\t\tvar testSubject = remainingInactiveExtenders.splice( 0, 1 )[0];\n\n\t\treturn showAndHideExtensionAgain( assert, testSubject, hideControl.promise(), {\n\t\t\tafterCallingShowExtension: function( instance ) {\n\t\t\t\tvar nowActiveExtenders = activeExtenders.slice();\n\t\t\t\tnowActiveExtenders.push( instance );\n\n\t\t\t\tassertCurrentlyVisibleExtensions( assert, nowActiveExtenders );\n\n\t\t\t\ttestGetInstancesWithVisibleExtensions(\n\t\t\t\t\tassert, remainingInactiveExtenders, nowActiveExtenders\n\t\t\t\t).done( function() {\n\t\t\t\t\thideControl.resolve();\n\t\t\t\t} );\n\t\t\t},\n\t\t\twhenFullyShown: function( instance ) {},\n\t\t\tafterCallingHideExtension: function( instance ) {},\n\t\t\twhenFullyHiddenAgain: function( instance ) {\n\t\t\t\tassertCurrentlyVisibleExtensions( assert, activeExtenders );\n\t\t\t}\n\t\t} ).done( function() {\n\t\t\thideControl.resolve();\n\t\t} );\n\t}\n\n\tQUnit.test( '$.ui.inputextender.getInstancesWithVisibleExtensions', function( assert ) {\n\t\tvar instances = $.ui.inputextender.getInstancesWithVisibleExtensions();\n\n\t\tassert.ok(\n\t\t\t$.isArray( instances ) && instances.length === 0,\n\t\t\t'Returns empty array initially, before having any instances.'\n\t\t);\n\n\t\t// Build a few instances for the test:\n\t\tvar extenders = [];\n\t\twhile ( extenders.length < 5 ) {\n\t\t\textenders.push( newTestInputextender() );\n\t\t}\n\t\ttestGetInstancesWithVisibleExtensions( assert, extenders );\n\t} );\n\n}() );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/lib/jquery.ui/jquery.ui.listrotator.tests.js","messages":[{"ruleId":"jsdoc/require-returns","severity":1,"message":"Missing JSDoc @return declaration.","line":9,"column":2,"nodeType":"Block","endLine":13,"endColumn":5},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"options\" type.","line":12,"column":null,"nodeType":"Block","endLine":12,"endColumn":null}],"errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/**\n * @license GNU GPL v2+\n * @author H. Snater < mediawiki@snater.com >\n */\n\n( function () {\n\t'use strict';\n\n\t/**\n\t * Factory for creating an listrotator widget suitable for testing.\n\t *\n\t * @param options\n\t */\n\tvar newTestListrotator = function( options ) {\n\t\toptions = $.extend( {\n\t\t\tvalues: [\n\t\t\t\t{ value: 1, label: 'one' },\n\t\t\t\t{ value: 2, label: 'two' },\n\t\t\t\t{ value: 3, label: 'three' }\n\t\t\t],\n\t\t\tmessageProvider: {\n\t\t\t\tgetMessage: function ( msg ) {\n\t\t\t\t\treturn msg;\n\t\t\t\t}\n\t\t\t}\n\t\t}, options || {} );\n\n\t\tvar $div = $( '<div/>' )\n\t\t.addClass( 'test_listrotator' )\n\t\t.appendTo( $( 'body' ) )\n\t\t.listrotator( options );\n\n\t\treturn $div.data( 'listrotator' );\n\t};\n\n\tQUnit.module( 'jquery.ui.listrotator', {\n\t\tafterEach: function() {\n\t\t\t$( '.test_listrotator' ).each( function( i, node ) {\n\t\t\t\tvar $node = $( node ),\n\t\t\t\t\tlistRotator = $node.data( 'listrotator' );\n\t\t\t\tif ( listRotator ) {\n\t\t\t\t\tlistRotator.destroy();\n\t\t\t\t}\n\t\t\t\t$node.remove();\n\t\t\t} );\n\t\t}\n\t} );\n\n\tQUnit.test( 'Initialize and destroy', function( assert ) {\n\t\tvar listrotator = newTestListrotator(),\n\t\t\twidgetBaseClass = listrotator.widgetBaseClass;\n\n\t\tassert.strictEqual(\n\t\t\t$( '.test_listrotator' ).data( 'listrotator' ),\n\t\t\tlistrotator,\n\t\t\t'Initialized widget.'\n\t\t);\n\n\t\tassert.strictEqual(\n\t\t\t$( '.' + widgetBaseClass + '-menu' ).length,\n\t\t\t1,\n\t\t\t'Appended menu element to DOM.'\n\t\t);\n\n\t\tlistrotator.destroy();\n\n\t\tassert.strictEqual(\n\t\t\t$( '.test_listrotator' ).data( 'listrotator' ), undefined,\n\t\t\t'Destroyed widget.'\n\t\t);\n\n\t\tassert.strictEqual(\n\t\t\t$( '.' + widgetBaseClass + '-menu' ).length,\n\t\t\t0,\n\t\t\t'Remove menu element from DOM.'\n\t\t);\n\t} );\n\n\tQUnit.test( 'value()', function( assert ) {\n\t\tvar listrotator = newTestListrotator();\n\n\t\tassert.strictEqual(\n\t\t\tlistrotator.value(),\n\t\t\t1,\n\t\t\t'Listrotator\\'s value is set to first value on initialization.'\n\t\t);\n\n\t\tassert.strictEqual(\n\t\t\tlistrotator.value( 3 ),\n\t\t\t3,\n\t\t\t'Set listrotator\\'s value.'\n\t\t);\n\n\t\tassert.strictEqual(\n\t\t\tlistrotator.value(),\n\t\t\t3,\n\t\t\t'Confirmed listrotator\\'s value.'\n\t\t);\n\t} );\n\n\tQUnit.test( 'autoActive()', function( assert ) {\n\t\tassert.ok(\n\t\t\tnewTestListrotator().autoActive(),\n\t\t\t'Listrotator uses \"auto\" initially'\n\t\t);\n\n\t\t// TODO: Implement autoActive( true ) and check for autoActive() again or simulate click\n\t\t//  which would also result into autoActive() === false.\n\t} );\n\n}() );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/lib/jquery.ui/jquery.ui.ooMenu.tests.js","messages":[{"ruleId":"jsdoc/require-returns","severity":1,"message":"Missing JSDoc @return declaration.","line":8,"column":2,"nodeType":"Block","endLine":13,"endColumn":5},{"ruleId":"no-shadow","severity":1,"message":"'menu' is already declared in the upper scope on line 103 column 4.","line":127,"column":78,"nodeType":"Identifier","messageId":"noShadow","endLine":127,"endColumn":82}],"errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/**\n * @license GNU GPL v2+\n * @author H. Snater < mediawiki@snater.com >\n */\n( function () {\n\t'use strict';\n\n\t/**\n\t * Factory for creating a jQuery.ui.ooMenu widget suitable for testing.\n\t *\n\t * @param {Object} [options]\n\t *        Default: { maxItems: 4 }\n\t */\n\tvar newTestMenu = function( options ) {\n\t\toptions = $.extend( { maxItems: 4 }, options || {} );\n\n\t\treturn $( '<ul/>' )\n\t\t\t.addClass( 'test_ooMenu' )\n\t\t\t.appendTo( 'body' )\n\t\t\t.ooMenu( options );\n\t};\n\n\tvar menuItems = [\n\t\tnew $.ui.ooMenu.Item( 'item 0' ),\n\t\tnew $.ui.ooMenu.Item( 'item 1' ),\n\t\tnew $.ui.ooMenu.Item( 'item 2' ),\n\t\tnew $.ui.ooMenu.Item( 'item 3' ),\n\t\tnew $.ui.ooMenu.Item( 'item 4' ),\n\t\tnew $.ui.ooMenu.Item( 'item 5' )\n\t];\n\n\tvar customMenuItems = [\n\t\tnew $.ui.ooMenu.CustomItem( 'customItem' ),\n\t\tnew $.ui.ooMenu.CustomItem( 'whenFilled', function( menu ) {\n\t\t\treturn menu.hasVisibleItems();\n\t\t} ),\n\t\tnew $.ui.ooMenu.CustomItem( 'whenEmpty', function( menu ) {\n\t\t\treturn !menu.hasVisibleItems();\n\t\t} )\n\t];\n\n\tQUnit.module( 'jquery.ui.ooMenu', {\n\t\tafterEach: function() {\n\t\t\t$( '.test_ooMenu' ).remove();\n\t\t}\n\t} );\n\n\tQUnit.test( 'Create', function( assert ) {\n\t\tvar $menu = newTestMenu(),\n\t\t\tmenu = $menu.data( 'ooMenu' );\n\n\t\tassert.ok(\n\t\t\tmenu instanceof $.ui.ooMenu,\n\t\t\t'Instantiated empty menu widget.'\n\t\t);\n\n\t\tassert.ok(\n\t\t\tmenu.option( 'items' ).length === 0 && $menu.children().length === 0,\n\t\t\t'Verified menu being empty.'\n\t\t);\n\n\t\t$menu = newTestMenu( {\n\t\t\titems: menuItems\n\t\t} );\n\t\tmenu = $menu.data( 'ooMenu' );\n\n\t\tassert.ok(\n\t\t\t$menu.data( 'ooMenu' ) instanceof $.ui.ooMenu,\n\t\t\t'Instantiated menu widget filled with items.'\n\t\t);\n\n\t\tassert.strictEqual(\n\t\t\tmenu.option( 'items' ).length, menuItems.length,\n\t\t\t'Verified items set.'\n\t\t);\n\n\t\tassert.strictEqual(\n\t\t\t$menu.children().length, menuItems.length,\n\t\t\t'Verified DOM structure.'\n\t\t);\n\n\t\t$menu = newTestMenu( {\n\t\t\titems: menuItems,\n\t\t\tcustomItems: customMenuItems\n\t\t} );\n\t\tmenu = $menu.data( 'ooMenu' );\n\n\t\tassert.ok(\n\t\t\t$menu.data( 'ooMenu' ) instanceof $.ui.ooMenu,\n\t\t\t'Instantiated menu widget filled with items and custom items.'\n\t\t);\n\n\t\tassert.ok(\n\t\t\tmenu.option( 'items' ).length === menuItems.length\n\t\t\t\t&& menu.option( 'customItems' ).length === customMenuItems.length\n\t\t\t\t&& $menu.children().length === menuItems.length + customMenuItems.length - 1,\n\t\t\t'Verified menu being filled.'\n\t\t);\n\t} );\n\n\tQUnit.test( 'hasVisibleItems()', function( assert ) {\n\t\tvar $menu = newTestMenu(),\n\t\t\tmenu = $menu.data( 'ooMenu' );\n\n\t\tassert.strictEqual(\n\t\t\tmenu.hasVisibleItems(), false,\n\t\t\t'Empty menu has no visible default items.'\n\t\t);\n\n\t\tassert.strictEqual(\n\t\t\tmenu.hasVisibleItems( true ), false,\n\t\t\t'Empty menu has no visible items at all.'\n\t\t);\n\n\t\tmenu.option( 'customItems', customMenuItems );\n\n\t\tassert.strictEqual(\n\t\t\tmenu.hasVisibleItems(), false,\n\t\t\t'Menu filled with custom items only has no visible default items.'\n\t\t);\n\n\t\tassert.ok(\n\t\t\tmenu.hasVisibleItems( true ),\n\t\t\t'Menu filled with custom items has visible items.'\n\t\t);\n\n\t\tmenu.option( 'customItems', [new $.ui.ooMenu.CustomItem( 'test', function( menu ) {\n\t\t\treturn menu.hasVisibleItems();\n\t\t} ) ] );\n\n\t\tassert.strictEqual(\n\t\t\tmenu.hasVisibleItems( true ), false,\n\t\t\t'Menu filled with an invisible custom item has no visible items at all.'\n\t\t);\n\n\t\tmenu.option( 'items', menuItems );\n\t\tmenu.option( 'customItems', [] );\n\n\t\tassert.ok(\n\t\t\tmenu.hasVisibleItems(),\n\t\t\t'Menu filled with default items has visible default items.'\n\t\t);\n\n\t\tassert.ok(\n\t\t\tmenu.hasVisibleItems( true ),\n\t\t\t'Menu filled with default items has visible items.'\n\t\t);\n\n\t\tmenu.option( 'customItems', customMenuItems );\n\n\t\tassert.ok(\n\t\t\tmenu.hasVisibleItems(),\n\t\t\t'Menu filled with default and custom items has visible default items.'\n\t\t);\n\n\t\tassert.ok(\n\t\t\tmenu.hasVisibleItems( true ),\n\t\t\t'Menu filled with default and custom items has visible items.'\n\t\t);\n\t} );\n\n\tQUnit.test( 'Update items using option()', function( assert ) {\n\t\tvar $menu = newTestMenu(),\n\t\t\tmenu = $menu.data( 'ooMenu' );\n\n\t\tmenu.option( 'items', menuItems );\n\n\t\tassert.strictEqual(\n\t\t\t$menu.children().length,\n\t\t\tmenuItems.length,\n\t\t\t'Updated empty menu with items.'\n\t\t);\n\n\t\tmenu.option( 'items', [\n\t\t\tnew $.ui.ooMenu.Item( 'test' )\n\t\t] );\n\n\t\tassert.strictEqual(\n\t\t\t$menu.children().length,\n\t\t\t1,\n\t\t\t'Updated menu with single item.'\n\t\t);\n\n\t\tmenu.option( 'items', [] );\n\n\t\tassert.strictEqual(\n\t\t\t$menu.children().length,\n\t\t\t0,\n\t\t\t'Removed all items.'\n\t\t);\n\t} );\n\n\tQUnit.test( 'Update items using option() with custom items present', function( assert ) {\n\t\tvar $menu = newTestMenu( { customItems: customMenuItems } ),\n\t\t\tmenu = $menu.data( 'ooMenu' );\n\n\t\tmenu.option( 'items', menuItems );\n\n\t\tassert.strictEqual(\n\t\t\t$menu.children().length,\n\t\t\tmenuItems.length + customMenuItems.length - 1,\n\t\t\t'Updated empty menu with items.'\n\t\t);\n\n\t\tmenu.option( 'items', [\n\t\t\tnew $.ui.ooMenu.Item( 'test' )\n\t\t] );\n\n\t\tassert.strictEqual(\n\t\t\t$menu.children().length,\n\t\t\tcustomMenuItems.length - 1 + 1,\n\t\t\t'Updated menu with single item.'\n\t\t);\n\n\t\tmenu.option( 'items', [] );\n\n\t\tassert.strictEqual(\n\t\t\t$menu.children().length,\n\t\t\tcustomMenuItems.length - 1,\n\t\t\t'Removed all items.'\n\t\t);\n\t} );\n\n\tQUnit.test( 'Update custom items using option()', function( assert ) {\n\t\tvar $menu = newTestMenu(),\n\t\t\tmenu = $menu.data( 'ooMenu' );\n\n\t\tmenu.option( 'customItems', customMenuItems );\n\n\t\tassert.strictEqual(\n\t\t\t$menu.children().length,\n\t\t\tcustomMenuItems.length - 1,\n\t\t\t'Updated empty menu with custom items.'\n\t\t);\n\n\t\tmenu.option( 'customItems', [\n\t\t\tnew $.ui.ooMenu.CustomItem( 'test' )\n\t\t] );\n\n\t\tassert.strictEqual(\n\t\t\t$menu.children().length,\n\t\t\t1,\n\t\t\t'Updated menu with single custom item.'\n\t\t);\n\n\t\tmenu.option( 'customItems', [] );\n\n\t\tassert.strictEqual(\n\t\t\t$menu.children().length,\n\t\t\t0,\n\t\t\t'Removed all custom items.'\n\t\t);\n\t} );\n\n\tQUnit.test( 'Update custom items using option() with items present', function( assert ) {\n\t\tvar $menu = newTestMenu( { customItems: customMenuItems } ),\n\t\t\tmenu = $menu.data( 'ooMenu' );\n\n\t\tmenu.option( 'items', menuItems );\n\n\t\tassert.strictEqual(\n\t\t\t$menu.children().length,\n\t\t\tmenuItems.length + customMenuItems.length - 1,\n\t\t\t'Updated empty menu with items.'\n\t\t);\n\n\t\tmenu.option( 'items', [\n\t\t\tnew $.ui.ooMenu.Item( 'test' )\n\t\t] );\n\n\t\tassert.strictEqual(\n\t\t\t$menu.children().length,\n\t\t\tcustomMenuItems.length - 1 + 1,\n\t\t\t'Updated menu with single item.'\n\t\t);\n\n\t\tmenu.option( 'items', [] );\n\n\t\tassert.strictEqual(\n\t\t\t$menu.children().length,\n\t\t\tcustomMenuItems.length - 1,\n\t\t\t'Removed all items.'\n\t\t);\n\t} );\n\n\tQUnit.test( 'Setting \"maxItems\" option triggering scale()', function( assert ) {\n\t\tvar $menu = newTestMenu( {\n\t\t\t\titems: menuItems,\n\t\t\t\tmaxItems: menuItems.length - 1\n\t\t\t} ),\n\t\t\tmenu = $menu.data( 'ooMenu' );\n\n\t\tvar maxHeight = $menu.outerHeight();\n\n\t\tmenu.option( 'maxItems', 1 );\n\n\t\tassert.ok(\n\t\t\t$menu.outerHeight() < maxHeight,\n\t\t\t'Lowered \"maxItems\" option scaling down menu size.'\n\t\t);\n\n\t\tmenu.option( 'maxItems', menuItems.length - 1 );\n\n\t\tassert.strictEqual(\n\t\t\t$menu.outerHeight(),\n\t\t\tmaxHeight,\n\t\t\t'Reset \"maxItems\" option rescaling the menu size.'\n\t\t);\n\t} );\n\n\tQUnit.test( '\"manipulateLabel\" option', function( assert ) {\n\t\tvar $menu = newTestMenu( {\n\t\t\t\titems: menuItems.slice( 0, 2 ),\n\t\t\t\tmanipulateLabel: function( label ) {\n\t\t\t\t\treturn 'manipulated label';\n\t\t\t\t}\n\t\t\t} );\n\n\t\t$menu.children( '.ui-ooMenu-item' ).each( function() {\n\t\t\tassert.strictEqual(\n\t\t\t\t$( this ).text(),\n\t\t\t\t'manipulated label'\n\t\t\t);\n\t\t} );\n\t} );\n\n\tQUnit.test( 'prev() & getActiveItem()', function( assert ) {\n\t\tvar $menu = newTestMenu(),\n\t\t\tmenu = $menu.data( 'ooMenu' );\n\n\t\t// This should not cause an error:\n\t\tmenu.previous();\n\n\t\tmenu.option( 'items', menuItems );\n\n\t\tmenu.previous();\n\n\t\tassert.strictEqual(\n\t\t\tmenu.getActiveItem(), menuItems[menuItems.length - 1],\n\t\t\t'Moving to last item if no item is active.'\n\t\t);\n\n\t\t// Move to first item:\n\t\tmenu.next();\n\n\t\tmenu.previous();\n\n\t\tassert.strictEqual(\n\t\t\tmenu.getActiveItem(), menuItems[menuItems.length - 1],\n\t\t\t'Moving from first item to last item.'\n\t\t);\n\n\t\tmenu.previous();\n\n\t\tassert.strictEqual(\n\t\t\tmenu.getActiveItem(), menuItems[menuItems.length - 2],\n\t\t\t'Moving to previous item.'\n\t\t);\n\t} );\n\n\tQUnit.test( 'next() & getActiveItem()', function( assert ) {\n\t\tvar $menu = newTestMenu(),\n\t\t\tmenu = $menu.data( 'ooMenu' );\n\n\t\t// This should not cause an error:\n\t\tmenu.next();\n\n\t\tmenu.option( 'items', menuItems );\n\n\t\tmenu.next();\n\n\t\tassert.strictEqual(\n\t\t\tmenu.getActiveItem(), menuItems[0],\n\t\t\t'Moving to first item if no item is active.'\n\t\t);\n\n\t\t// Move to last item:\n\t\tmenu.previous();\n\n\t\tmenu.next();\n\n\t\tassert.strictEqual(\n\t\t\tmenu.getActiveItem(), menuItems[0],\n\t\t\t'Moving from last item to first item.'\n\t\t);\n\n\t\tmenu.next();\n\n\t\tassert.strictEqual(\n\t\t\tmenu.getActiveItem(), menuItems[1],\n\t\t\t'Moving to next item.'\n\t\t);\n\t} );\n\n\tQUnit.test( 'select() on Item instances', function( assert ) {\n\t\tvar $menu = newTestMenu( { items: menuItems } ),\n\t\t\tmenu = $menu.data( 'ooMenu' );\n\n\t\t$( menu )\n\t\t.on( 'selected', function( event, item ) {\n\t\t\tassert.strictEqual(\n\t\t\t\titem, null,\n\t\t\t\t'Event transmits \"null\" if no item is active when selecting.'\n\t\t\t);\n\t\t} );\n\n\t\tmenu.select();\n\n\t\tmenu.previous();\n\n\t\t$( menu )\n\t\t.off( 'selected' )\n\t\t.on( 'selected', function( event, item ) {\n\t\t\tassert.strictEqual(\n\t\t\t\titem, menuItems[menuItems.length - 1],\n\t\t\t\t'Verified selected item.'\n\t\t\t);\n\t\t} );\n\n\t\tmenu.select();\n\t} );\n\n\tQUnit.test( 'select() on CustomInstance instances', function( assert ) {\n\t\tvar check = false;\n\n\t\tvar customItem = new $.ui.ooMenu.CustomItem(\n\t\t\t'label',\n\t\t\tfunction() {\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tfunction() {\n\t\t\t\tcheck = true;\n\t\t\t}\n\t\t);\n\n\t\tvar $menu = newTestMenu( {\n\t\t\tcustomItems: [customItem]\n\t\t} );\n\n\t\tvar menu = $menu.data( 'ooMenu' );\n\n\t\tmenu.previous();\n\n\t\t$( menu )\n\t\t.on( 'selected', function( event, item ) {\n\t\t\tassert.strictEqual(\n\t\t\t\titem, customItem,\n\t\t\t\t'Verified selected item.'\n\t\t\t);\n\n\t\t\tassert.ok(\n\t\t\t\tcheck,\n\t\t\t\t'Issued custom action.'\n\t\t\t);\n\t\t} );\n\n\t\tmenu.select();\n\t} );\n\n\tQUnit.test( 'activate()', function( assert ) {\n\t\tvar $menu = newTestMenu( { items: menuItems } ),\n\t\t\tmenu = $menu.data( 'ooMenu' );\n\n\t\tassert.throws(\n\t\t\tfunction() {\n\t\t\t\tmenu.activate();\n\t\t\t},\n\t\t\t'Throwing error when calling \"activate\" without any parameter.'\n\t\t);\n\n\t\tassert.throws(\n\t\t\tfunction() {\n\t\t\t\tmenu.activate( 'test' );\n\t\t\t},\n\t\t\t'Throwing error when calling \"activate\" with an incorrect parameter.'\n\t\t);\n\n\t\t$( menu ).on( 'focus', function( event, item ) {\n\t\t\tassert.strictEqual(\n\t\t\t\titem,\n\t\t\t\tmenuItems[0],\n\t\t\t\t'Verified activated item.'\n\t\t\t);\n\t\t} );\n\n\t\tmenu.activate( menuItems[0] );\n\n\t\tmenu.deactivate();\n\n\t\tmenu.activate( $menu.children( '.ui-ooMenu-item' ) );\n\t} );\n\n\tQUnit.test( 'deactivate()', function( assert ) {\n\t\tvar $menu = newTestMenu( { items: menuItems } ),\n\t\t\tmenu = $menu.data( 'ooMenu' );\n\n\t\tmenu.previous();\n\n\t\t$( menu ).on( 'blur', function() {\n\t\t\tassert.ok(\n\t\t\t\ttrue,\n\t\t\t\t'Triggering \"blur\" event when deactivating'\n\t\t\t);\n\n\t\t\tassert.strictEqual(\n\t\t\t\tmenu.getActiveItem(),\n\t\t\t\tnull,\n\t\t\t\t'Verified no item being active.'\n\t\t\t);\n\t\t} );\n\n\t\tmenu.deactivate();\n\t} );\n\n\tQUnit.test( 'Triggering \"focus\" event', function( assert ) {\n\t\tvar customItem = new $.ui.ooMenu.CustomItem( 'label' );\n\n\t\tvar $menu = newTestMenu( {\n\t\t\titems: menuItems,\n\t\t\tcustomItems: [customItem]\n\t\t} );\n\n\t\tvar menu = $menu.data( 'ooMenu' );\n\n\t\t$( menu )\n\t\t.on( 'focus', function( event, item ) {\n\t\t\tassert.strictEqual(\n\t\t\t\titem, customItem,\n\t\t\t\t'Activated custom item.'\n\t\t\t);\n\t\t} );\n\n\t\tmenu.previous();\n\n\t\t$( menu )\n\t\t.off( 'focus' )\n\t\t.on( 'focus', function( event, item ) {\n\t\t\tassert.strictEqual(\n\t\t\t\titem, menuItems[0],\n\t\t\t\t'Activated default item.'\n\t\t\t);\n\t\t} );\n\n\t\tmenu.next();\n\t} );\n\n\tQUnit.test( 'Item constructor', function( assert ) {\n\t\tvar item = new $.ui.ooMenu.Item( 'label' );\n\n\t\tassert.ok(\n\t\t\titem instanceof $.ui.ooMenu.Item,\n\t\t\t'Instantiated default item with plain string label.'\n\t\t);\n\n\t\titem = new $.ui.ooMenu.Item( $( '<div>label</div>' ) );\n\n\t\tassert.ok(\n\t\t\titem instanceof $.ui.ooMenu.Item,\n\t\t\t'Instantiated item with jQuery object label.'\n\t\t);\n\t} );\n\n\tQUnit.test( 'CustomItem constructor', function( assert ) {\n\t\tvar testSets = [\n\t\t\t['label'],\n\t\t\t[$( '<div>label</div>' )],\n\t\t\t['label', true],\n\t\t\t['label', false],\n\t\t\t['label', function() { return true; }],\n\t\t\t['label', null, function() { return 'action'; }, 'cssClass', 'someLink']\n\t\t];\n\n\t\tfor ( var i = 0; i < testSets.length; i++ ) {\n\t\t\tvar args = testSets[i].concat( new Array( 5 - testSets[i].length ) ),\n\t\t\t\titem = new $.ui.ooMenu.CustomItem( args[0], args[1], args[2], args[3], args[4] );\n\n\t\t\tassert.ok(\n\t\t\t\titem instanceof $.ui.ooMenu.CustomItem,\n\t\t\t\t'Test set #' + i + ': Instantiated custom item.'\n\t\t\t);\n\n\t\t\tvar expectedVisibility = true;\n\n\t\t\tif ( $.isFunction( testSets[i][1] ) ) {\n\t\t\t\texpectedVisibility = testSets[i][1]();\n\t\t\t} else if ( typeof testSets[i][1] === 'boolean' ) {\n\t\t\t\texpectedVisibility = testSets[i][1];\n\t\t\t}\n\n\t\t\tassert.strictEqual(\n\t\t\t\titem.getVisibility(),\n\t\t\t\texpectedVisibility,\n\t\t\t\t'Test set #' + i + ': Verified getVisibile() return value.'\n\t\t\t);\n\n\t\t\tassert.strictEqual(\n\t\t\t\titem.getAction(),\n\t\t\t\t$.isFunction( testSets[i][2] ) ? testSets[i][2] : null,\n\t\t\t\t'Test set #' + i + ': Verified getAction() return value.'\n\t\t\t);\n\n\t\t\tassert.strictEqual(\n\t\t\t\titem.getCssClass(),\n\t\t\t\ttestSets[i][3] || '',\n\t\t\t\t'Test set #' + i + ': Verified getCssClass() return value.'\n\t\t\t);\n\t\t}\n\t} );\n\n}() );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/lib/jquery.ui/jquery.ui.preview.tests.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/lib/jquery.ui/jquery.ui.suggester.tests.js","messages":[{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'ui' is undefined.","line":34,"column":null,"nodeType":"Block","endLine":34,"endColumn":null}],"errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/**\n * @license GNU GPL v2+\n * @author H. Snater < mediawiki@snater.com >\n */\n( function () {\n\t'use strict';\n\n\tvar defaultSource = [\n\t\t'a',\n\t\t'ab',\n\t\t'abc',\n\t\t'd',\n\t\t'EFG'\n\t];\n\n\t/**\n\t * Factory creating a jQuery.ui.suggester widget suitable for testing.\n\t *\n\t * @param {Object} [options]\n\t * @return {jQuery}\n\t */\n\tvar newTestSuggester = function( options ) {\n\t\toptions = $.extend( {\n\t\t\tsource: defaultSource\n\t\t}, options || {} );\n\n\t\treturn $( '<input/>' )\n\t\t\t.addClass( 'test_suggester' )\n\t\t\t.appendTo( 'body' )\n\t\t\t.suggester( options );\n\t};\n\n\t/**\n\t * @return {ui.ooMenu}\n\t */\n\tvar createCustomMenu = function() {\n\t\tvar $menu = $( '<ul/>' ).ooMenu( {\n\t\t\tcustomItems: [\n\t\t\t\tnew $.ui.ooMenu.CustomItem( 'custom item' )\n\t\t\t]\n\t\t} );\n\t\treturn $menu.data( 'ooMenu' );\n\t};\n\n\tQUnit.module( 'jquery.ui.suggester', {\n\t\tafterEach: function() {\n\t\t\tvar $suggester = $( '.test_suggester' ),\n\t\t\t\tsuggester = $suggester.data( 'suggester' );\n\t\t\tif ( suggester ) {\n\t\t\t\tsuggester.destroy();\n\t\t\t}\n\t\t\t$suggester.remove();\n\t\t}\n\t} );\n\n\tQUnit.test( 'Create', function( assert ) {\n\t\tvar $suggester = newTestSuggester();\n\n\t\tassert.ok(\n\t\t\t$suggester.data( 'suggester' ) instanceof $.ui.suggester,\n\t\t\t'Instantiated suggester.'\n\t\t);\n\t} );\n\n\tQUnit.test( '\"menu\" option', function( assert ) {\n\t\tvar done = assert.async( 2 );\n\t\tvar customMenu = createCustomMenu();\n\n\t\tvar $suggester = newTestSuggester( {\n\t\t\tmenu: customMenu\n\t\t} );\n\n\t\tvar suggester = $suggester.data( 'suggester' );\n\n\t\t$suggester\n\t\t.one( 'suggesteropen', function() {\n\t\t\tassert.strictEqual(\n\t\t\t\tsuggester.options.menu,\n\t\t\t\tcustomMenu\n\t\t\t);\n\n\t\t\tdone();\n\t\t} );\n\n\t\t$suggester.val( 'a' );\n\t\tsuggester.search();\n\n\t\tcustomMenu = createCustomMenu();\n\n\t\tsuggester.option( 'menu', customMenu );\n\n\t\t$suggester\n\t\t.one( 'suggesteropen', function() {\n\t\t\tassert.strictEqual(\n\t\t\t\tsuggester.options.menu,\n\t\t\t\tcustomMenu\n\t\t\t);\n\n\t\t\tdone();\n\t\t} );\n\n\t\tsuggester.search();\n\t} );\n\n\tQUnit.test( 'search() gathering suggestions from an array', function( assert ) {\n\t\tvar $suggester = newTestSuggester(),\n\t\t\tsuggester = $suggester.data( 'suggester' );\n\n\t\t$suggester.val( 'a' );\n\n\t\treturn suggester.search().then( function( suggestions ) {\n\t\t\tassert.strictEqual(\n\t\t\t\tsuggestions.length,\n\t\t\t\t3,\n\t\t\t\t'Gathered suggestions from array.'\n\t\t\t);\n\t\t} );\n\t} );\n\n\tQUnit.test( 'search() gathering suggestions from a function', function( assert ) {\n\t\tvar $suggester = newTestSuggester( {\n\t\t\t\tsource: function( term ) {\n\t\t\t\t\tvar deferred = new $.Deferred();\n\t\t\t\t\treturn deferred.resolve( [\n\t\t\t\t\t\t'suggestion 1',\n\t\t\t\t\t\t'suggestion 2'\n\t\t\t\t\t] ).promise();\n\t\t\t\t}\n\t\t\t} ),\n\t\t\tsuggester = $suggester.data( 'suggester' );\n\n\t\t$suggester.val( 'a' );\n\n\t\treturn suggester.search().then( function( suggestions ) {\n\t\t\tassert.strictEqual(\n\t\t\t\tsuggestions.length,\n\t\t\t\t2,\n\t\t\t\t'Gathered suggestions from function.'\n\t\t\t);\n\t\t} );\n\t} );\n\n\tQUnit.test( 'isSearching() - triggering search() programmatically', function( assert ) {\n\t\tvar $suggester = newTestSuggester( {\n\t\t\t\tsource: function( term ) {\n\t\t\t\t\tvar deferred = new $.Deferred();\n\n\t\t\t\t\tsetTimeout( function() {\n\t\t\t\t\t\tdeferred.resolve( [\n\t\t\t\t\t\t\t'suggestion 1',\n\t\t\t\t\t\t\t'suggestion 2'\n\t\t\t\t\t\t] );\n\t\t\t\t\t}, 100 );\n\n\t\t\t\t\treturn deferred.promise();\n\t\t\t\t}\n\t\t\t} ),\n\t\t\tsuggester = $suggester.data( 'suggester' );\n\n\t\tassert.strictEqual(\n\t\t\tsuggester.isSearching(), false,\n\t\t\t'Returning FALSE when not having triggered a search.'\n\t\t);\n\n\t\t$suggester.val( 'a' );\n\n\t\tvar promise = suggester.search();\n\n\t\tassert.ok(\n\t\t\tsuggester.isSearching(),\n\t\t\t'Returning TRUE while search is in progress.'\n\t\t);\n\n\t\treturn promise.then( function( suggestions ) {\n\t\t\tassert.strictEqual(\n\t\t\t\tsuggester.isSearching(), false,\n\t\t\t\t'Returning FALSE after search has finished.'\n\t\t\t);\n\t\t} );\n\t} );\n\n\tQUnit.test( 'isSearching() - triggering with \"key\" event', function( assert ) {\n\t\tvar $suggester = newTestSuggester( {\n\t\t\t\tsource: function( term ) {\n\t\t\t\t\tvar deferred = new $.Deferred();\n\n\t\t\t\t\tsetTimeout( function() {\n\t\t\t\t\t\tdeferred.resolve( [\n\t\t\t\t\t\t\t'suggestion 1',\n\t\t\t\t\t\t\t'suggestion 2'\n\t\t\t\t\t\t] );\n\t\t\t\t\t}, 10 );\n\n\t\t\t\t\treturn deferred.promise();\n\t\t\t\t}\n\t\t\t} ),\n\t\t\tsuggester = $suggester.data( 'suggester' ),\n\t\t\tdone = assert.async();\n\n\t\tassert.strictEqual(\n\t\t\tsuggester.isSearching(), false,\n\t\t\t'Returning FALSE when not having triggered a search.'\n\t\t);\n\n\t\t$suggester.val( 'a' );\n\n\t\t// First \"change\" event is triggered directly on \"key\" event.\n\t\t$suggester.one( 'suggesterchange', function() {\n\t\t\t// Second \"change\" event is triggered after gathering the suggestions.\n\t\t\t$suggester.one( 'suggesterchange', function() {\n\t\t\t\tassert.strictEqual(\n\t\t\t\t\tsuggester.isSearching(), false,\n\t\t\t\t\t'Returning FALSE after search has finished.'\n\t\t\t\t);\n\n\t\t\t\tdone();\n\t\t\t} );\n\t\t} );\n\n\t\t$suggester.trigger( 'keydown' );\n\n\t\tassert.ok(\n\t\t\tsuggester.isSearching(),\n\t\t\t'Returning TRUE while search is in progress.'\n\t\t);\n\t} );\n\n\tQUnit.test( 'Error', function( assert ) {\n\t\tvar $suggester = newTestSuggester( {\n\t\t\t\tsource: function( term ) {\n\t\t\t\t\tvar deferred = new $.Deferred();\n\t\t\t\t\treturn deferred.reject( 'error string' ).promise();\n\t\t\t\t}\n\t\t\t} ),\n\t\t\tsuggester = $suggester.data( 'suggester' ),\n\t\t\tdone = assert.async();\n\n\t\t$suggester.on( 'suggestererror', function( event, errorString ) {\n\t\t\tassert.strictEqual(\n\t\t\t\terrorString,\n\t\t\t\t'error string',\n\t\t\t\t'Validated expected error string.'\n\t\t\t);\n\t\t} );\n\n\t\t$suggester.val( 'a' );\n\n\t\tsuggester.search()\n\t\t.done( function( suggestions ) {\n\t\t\tassert.ok(\n\t\t\t\tfalse,\n\t\t\t\t'Searching was successful although it should have failed.'\n\t\t\t);\n\t\t} )\n\t\t.fail( function() {\n\t\t\tassert.ok(\n\t\t\t\ttrue,\n\t\t\t\t'Searching failed as expected.'\n\t\t\t);\n\t\t} )\n\t\t.always( function () {\n\t\t\tdone();\n\t\t} );\n\t} );\n\n}() );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/lib/jquery.ui/jquery.ui.toggler.tests.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/lib/jquery.util/jquery.util.adaptlettercase.tests.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/lib/jquery.util/jquery.util.getscrollbarwidth.tests.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/lib/jquery/jquery.AnimationEvent.tests.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/lib/jquery/jquery.PurposedCallbacks.tests.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/lib/jquery/jquery.animateWithEvent.tests.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/lib/jquery/jquery.autocompletestring.tests.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/lib/jquery/jquery.focusAt.tests.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/lib/jquery/jquery.inputautoexpand.tests.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/lib/util/util.HashMessageProvider.tests.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/lib/util/util.Notifier.tests.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/lib/util/util.highlightSubstring.tests.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/sinon-qunit.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/src/ExpertExtender/ExpertExtender.Container.tests.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/src/ExpertExtender/ExpertExtender.LanguageSelector.tests.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/src/ExpertExtender/ExpertExtender.Listrotator.tests.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/src/ExpertExtender/ExpertExtender.Preview.tests.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/src/ExpertExtender/ExpertExtender.UnitSelector.tests.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/src/ExpertExtender/ExpertExtender.tests.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/src/ExpertExtender/testExpertExtenderExtension.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/src/experts/GlobeCoordinateInput.tests.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/src/experts/MonolingualText.tests.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/src/experts/QuantityInput.tests.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/src/experts/StringValue.tests.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/src/experts/TimeInput.tests.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/src/experts/UnDeserializableValueTests.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/src/jquery.valueview.ExpertStore.tests.js","messages":[{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'DataTypeMock' is undefined.","line":28,"column":null,"nodeType":"Block","endLine":28,"endColumn":null}],"errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/**\n * @license GNU GPL v2+\n * @author Daniel Werner < daniel.a.r.werner@gmail.com >\n * @author H. Snater < mediawiki@snater.com >\n */\n\n( function( $, dv, QUnit ) {\n\t'use strict';\n\n\tvar vv = $.valueview;\n\n\tvar DataTypeMock = function( dataTypeId, DataValue ) {\n\t\tthis._dataTypeId = dataTypeId;\n\t\tthis._dataValueType = DataValue.TYPE;\n\t};\n\t$.extend( DataTypeMock.prototype, {\n\t\tgetId: function() {\n\t\t\treturn this._dataTypeId;\n\t\t},\n\t\tgetDataValueType: function() {\n\t\t\treturn this._dataValueType;\n\t\t}\n\t} );\n\n\t/**\n\t * Returns a descriptive string to be used as id when registering an expert in an ExpertStore.\n\t *\n\t * @param {DataTypeMock|Function} purpose\n\t * @return {string}\n\t */\n\tfunction getTypeInfo( purpose ) {\n\t\tif ( purpose instanceof DataTypeMock ) {\n\t\t\treturn 'DataType with data value type \"' + purpose.getDataValueType() + '\"';\n\t\t}\n\t\treturn 'constructor for DataValue of type \"' + purpose.TYPE + '\"';\n\t}\n\n\t/**\n\t * Creates a new valueview expert constructor.\n\t *\n\t * @param {string} mockExpertId Used in the constructor name for simple identification if some\n\t *        assertion goes wrong.\n\t * @return {jQuery.valueview.Expert}\n\t */\n\tfunction newMockExpertConstructor( mockExpertId ) {\n\t\treturn vv.expert(\n\t\t\t'mockexpert' + mockExpertId, // name\n\t\t\tvv.tests.MockExpert, // base\n\t\t\t{} // definition\n\t\t);\n\t}\n\n\tvar StringValue = dv.StringValue,\n\t\tUnknownValue = dv.UnknownValue,\n\t\tstringType = new DataTypeMock( 'somestringtype', StringValue ),\n\t\tnumberType = new DataTypeMock( 'somenumbertype', dv.NumberValue ),\n\t\tMockExpertForStringValue = newMockExpertConstructor( 'ForStringValue' ),\n\t\tMockExpertForStringDataType = newMockExpertConstructor( 'ForStringDataType' ),\n\t\tMockExpertForUnsupportedValue = newMockExpertConstructor( 'ForUnsupportedValue' );\n\n\tQUnit.module( 'jquery.valueview.ExpertStore' );\n\n\tQUnit.test( 'Constructor', function( assert ) {\n\t\tvar expertStore = new vv.ExpertStore();\n\n\t\tassert.ok(\n\t\t\texpertStore instanceof vv.ExpertStore,\n\t\t\t'Instantiated ExpertStore.'\n\t\t);\n\t} );\n\n\tQUnit.test( 'registerDataTypeExpert(): Error handling', function( assert ) {\n\t\tvar expertStore = new vv.ExpertStore();\n\n\t\tassert.throws(\n\t\t\tfunction() {\n\t\t\t\texpertStore.registerDataTypeExpert( 'invalid', stringType.getId() );\n\t\t\t},\n\t\t\t'Failed trying to register an invalid expert constructor.'\n\t\t);\n\n\t\texpertStore.registerDataTypeExpert( MockExpertForStringDataType, stringType.getId() );\n\n\t\tassert.throws(\n\t\t\tfunction() {\n\t\t\t\texpertStore.getExpert( stringType );\n\t\t\t},\n\t\t\t'Failed trying to get an expert with an invalid purpose.'\n\t\t);\n\t} );\n\n\tQUnit.test( 'registerDataValueExpert(): Error handling', function( assert ) {\n\t\tvar expertStore = new vv.ExpertStore();\n\n\t\tassert.throws(\n\t\t\tfunction() {\n\t\t\t\texpertStore.registerDataValueExpert( 'invalid', StringValue.TYPE );\n\t\t\t},\n\t\t\t'Failed trying to register an invalid expert constructor.'\n\t\t);\n\n\t\texpertStore.registerDataValueExpert( MockExpertForStringValue, StringValue.TYPE );\n\n\t\tassert.throws(\n\t\t\tfunction() {\n\t\t\t\texpertStore.getExpert( StringValue );\n\t\t\t},\n\t\t\t'Failed trying to get an expert with an invalid purpose.'\n\t\t);\n\t} );\n\n\tQUnit.test( 'Return default expert constructor on getExpert()', function( assert ) {\n\t\tvar expertStore = new vv.ExpertStore( MockExpertForUnsupportedValue );\n\n\t\tassert.strictEqual(\n\t\t\texpertStore.getExpert( StringValue.TYPE ),\n\t\t\tMockExpertForUnsupportedValue,\n\t\t\t'Returning default expert if no expert is registered for a specific data value.'\n\t\t);\n\n\t\tassert.strictEqual(\n\t\t\texpertStore.getExpert( stringType.getDataValueType(), stringType.getId() ),\n\t\t\tMockExpertForUnsupportedValue,\n\t\t\t'Returning default if no expert is registered for a specific data type.'\n\t\t);\n\n\t\texpertStore.registerDataValueExpert( MockExpertForStringValue, StringValue.TYPE );\n\n\t\tassert.strictEqual(\n\t\t\texpertStore.getExpert( StringValue.TYPE ),\n\t\t\tMockExpertForStringValue,\n\t\t\t'Returning specific expert if an expert is registered for a specific data value.'\n\t\t);\n\n\t\tassert.strictEqual(\n\t\t\texpertStore.getExpert( UnknownValue.TYPE ),\n\t\t\tMockExpertForUnsupportedValue,\n\t\t\t'Still returning default expert if no expert is registered for a specific data value.'\n\t\t);\n\n\t\tassert.strictEqual(\n\t\t\texpertStore.getExpert( numberType.getDataValueType(), numberType.getId() ),\n\t\t\tMockExpertForUnsupportedValue,\n\t\t\t'Still returning default expert if no expert is registered for a specific data type.'\n\t\t);\n\t} );\n\n\t// Tests for registration of experts:\n\n\t/**\n\t * Array of test definitions as provider for \"expertStoreRegistrationTest\".\n\t *\n\t * @property {Object[]}\n\t */\n\tvar expertStoreRegistrationTestCases = [\n\t\t{\n\t\t\ttitle: 'Empty store',\n\t\t\tregister: [],\n\t\t\texpect: [\n\t\t\t\t[ StringValue, null ],\n\t\t\t\t[ stringType, null ]\n\t\t\t]\n\t\t}, {\n\t\t\ttitle: 'Store with expert for string DataValue which is also suitable for string '\n\t\t\t\t+ 'DataType',\n\t\t\tregister: [\n\t\t\t\t[ StringValue, MockExpertForStringValue ]\n\t\t\t],\n\t\t\texpect: [\n\t\t\t\t[ StringValue, MockExpertForStringValue ],\n\t\t\t\t[ stringType, MockExpertForStringValue ], // data type uses value type\n\t\t\t\t[ UnknownValue, null ],\n\t\t\t\t[ numberType, null ]\n\t\t\t]\n\t\t}, {\n\t\t\ttitle: 'Store for string DataType. String value can\\'t use this potentially more '\n\t\t\t\t+ 'specialized expert',\n\t\t\tregister: [\n\t\t\t\t[ stringType, MockExpertForStringDataType ]\n\t\t\t],\n\t\t\texpect: [\n\t\t\t\t[ StringValue, null ],\n\t\t\t\t[ stringType, MockExpertForStringDataType ]\n\t\t\t]\n\t\t}, {\n\t\t\ttitle: 'Store with two experts: For DataValue and for DataType using that DataValue '\n\t\t\t\t+ 'type',\n\t\t\tregister: [\n\t\t\t\t[ StringValue, MockExpertForStringValue ],\n\t\t\t\t[ stringType, MockExpertForStringDataType ]\n\t\t\t],\n\t\t\texpect: [\n\t\t\t\t[ StringValue, MockExpertForStringValue ],\n\t\t\t\t[ stringType, MockExpertForStringDataType ],\n\t\t\t\t[ UnknownValue, null ]\n\t\t\t]\n\t\t}, {\n\t\t\ttitle: 'Store with two experts for two different DataValue types',\n\t\t\tregister: [\n\t\t\t\t[ StringValue, MockExpertForStringValue ],\n\t\t\t\t[ UnknownValue, MockExpertForUnsupportedValue ]\n\t\t\t],\n\t\t\texpect: [\n\t\t\t\t[ StringValue, MockExpertForStringValue ],\n\t\t\t\t[ UnknownValue, MockExpertForUnsupportedValue ],\n\t\t\t\t[ numberType, null ]\n\t\t\t]\n\t\t}\n\t];\n\n\t/**\n\t * Test for registration of experts to ExpertStore and expected conditions afterwards.\n\t *\n\t * @param {QUnit.assert} assert\n\t * @param {Array[]} toRegister Array containing arrays each telling an ExpertStore what\n\t *        experts to register. The inner array has to consist out of two objects, an Expert\n\t *        constructor and a DataValue constructor or a DataTypeMock object.\n\t * @param {Array[]} toExpect Array containing arrays each one stating one expected condition\n\t *        of the ExpertStore after registration of what is given in the first\n\t *        parameter. Each inner array should contain a DataTypeMock object or a DataValue\n\t *        constructor and an Expert constructor which is expected to be registered for it.\n\t */\n\tfunction expertStoreRegistrationTest( assert, toRegister, toExpect ) {\n\t\tvar expertStore = new vv.ExpertStore();\n\n\t\t// Register experts as per definition:\n\t\t$.each( toRegister, function( i, registerPair ) {\n\t\t\tvar purpose = registerPair[0],\n\t\t\t\tExpert = registerPair[1];\n\n\t\t\tif ( purpose instanceof DataTypeMock ) {\n\t\t\t\texpertStore.registerDataTypeExpert( Expert, purpose.getId() );\n\t\t\t} else {\n\t\t\t\texpertStore.registerDataValueExpert( Expert, purpose.TYPE );\n\t\t\t}\n\n\t\t\tassert.ok(\n\t\t\t\ttrue,\n\t\t\t\t'Registered expert for ' + getTypeInfo( purpose )\n\t\t\t);\n\t\t} );\n\n\t\t// Check for expected conditions:\n\t\t$.each( toExpect, function( i, expectPair ) {\n\t\t\tvar purpose = expectPair[0],\n\t\t\t\tExpert = expectPair[1],\n\t\t\t\tRetrievedExpert;\n\n\t\t\tif ( purpose instanceof DataTypeMock ) {\n\t\t\t\tRetrievedExpert = expertStore.getExpert(\n\t\t\t\t\tpurpose.getDataValueType(), purpose.getId()\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tRetrievedExpert = expertStore.getExpert( purpose.TYPE );\n\t\t\t}\n\n\t\t\tassert.strictEqual(\n\t\t\t\tRetrievedExpert,\n\t\t\t\tExpert,\n\t\t\t\t'Requesting expert for ' + getTypeInfo( purpose ) +\n\t\t\t\t\t( Expert !== null ? ' returns expected expert' : ' returns null' )\n\t\t\t);\n\t\t} );\n\t}\n\n\texpertStoreRegistrationTestCases.forEach( function ( params ) {\n\t\tQUnit.test(\n\t\t\t'registerDataTypeExpert()/registerDataValueExpert() & getExpert()',\n\t\t\tfunction( assert ) {\n\t\t\t\texpertStoreRegistrationTest( assert, params.register, params.expect );\n\t\t\t}\n\t\t);\n\t} );\n\n}( jQuery, dataValues, QUnit ) );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/src/jquery.valueview.tests.MockExpert.js","messages":[{"ruleId":"jsdoc/require-returns","severity":1,"message":"Missing JSDoc @return declaration.","line":45,"column":3,"nodeType":"Block","endLine":47,"endColumn":6}],"errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/**\n * @license GNU GPL v2+\n * @author Daniel Werner < daniel.a.r.werner@gmail.com >\n */\njQuery.valueview.tests = jQuery.valueview.tests || {};\n\n( function( $, vv ) {\n\t'use strict';\n\n\tvar PARENT = vv.Expert;\n\n\t/**\n\t * Valueview expert for tests. Simply overwrites all abstract functions with some mock\n\t * functions. A raw value can be set, all values are accepted.\n\t *\n\t * @since 0.1\n\t *\n\t * @constructor\n\t * @extends jQuery.valueview.Expert\n\t */\n\tvv.tests.MockExpert = vv.expert( 'Mock', PARENT, {\n\t\t/**\n\t\t * Current value.\n\t\t *\n\t\t * @property {*}\n\t\t */\n\t\tvalue: null,\n\n\t\t/**\n\t\t * @see jQuery.valueview.Expert.destroy\n\t\t */\n\t\tdestroy: function() {\n\t\t\tthis._value = null;\n\t\t\tPARENT.prototype.destroy.call( this );\n\t\t},\n\n\t\t/**\n\t\t * @see jQuery.valueview.Expert.rawValue\n\t\t * @return {null}\n\t\t */\n\t\trawValue: function() {\n\t\t\treturn this._value;\n\t\t},\n\n\t\t/**\n\t\t * @see jQuery.valueview.Expert.draw\n\t\t */\n\t\tdraw: function() {\n\t\t\tthis.$viewPort.empty();\n\t\t\treturn $.Deferred().resolve().promise();\n\t\t}\n\t} );\n\n}( jQuery, jQuery.valueview ) );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/src/jquery.valueview.tests.MockViewState.js","messages":[{"ruleId":"jsdoc/require-returns","severity":1,"message":"Missing JSDoc @return declaration.","line":29,"column":3,"nodeType":"Block","endLine":31,"endColumn":6},{"ruleId":"jsdoc/require-returns","severity":1,"message":"Missing JSDoc @return declaration.","line":36,"column":3,"nodeType":"Block","endLine":38,"endColumn":6},{"ruleId":"jsdoc/require-returns","severity":1,"message":"Missing JSDoc @return declaration.","line":43,"column":3,"nodeType":"Block","endLine":45,"endColumn":6},{"ruleId":"jsdoc/require-returns","severity":1,"message":"Missing JSDoc @return declaration.","line":50,"column":3,"nodeType":"Block","endLine":52,"endColumn":6},{"ruleId":"jsdoc/require-returns","severity":1,"message":"Missing JSDoc @return declaration.","line":57,"column":3,"nodeType":"Block","endLine":59,"endColumn":6},{"ruleId":"jsdoc/require-returns","severity":1,"message":"Missing JSDoc @return declaration.","line":64,"column":3,"nodeType":"Block","endLine":67,"endColumn":6},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"key\" type.","line":65,"column":null,"nodeType":"Block","endLine":65,"endColumn":null}],"errorCount":0,"warningCount":7,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/**\n * @license GNU GPL v2+\n * @author Daniel Werner < daniel.a.r.werner@gmail.com >\n */\njQuery.valueview.tests = jQuery.valueview.tests || {};\n\njQuery.valueview.tests.MockViewState = ( function( $, util ) {\n\t'use strict';\n\n\t/**\n\t * Mock ViewState for usage in tests. Allows to inject the state as a plain object.\n\t *\n\t * @constructor\n\t * @extends ViewState\n\t * @since 0.1\n\t *\n\t * @param {Object} [definition={}] A plain object with the fields \"isInEditMode\", \"isDisabled\",\n\t *        \"value\" and \"options\". This will just keep a reference to the object, so changing the\n\t *        object from the outside will also update the ViewState's functions return values.\n\t *\n\t * @throws {Error} if definition is not a plain object.\n\t */\n\treturn util.inherit( 'ValueviewMockViewState', function ( definition ) {\n\t\tif ( definition !== undefined && !$.isPlainObject( definition ) ) {\n\t\t\tthrow new Error( 'Given definition needs to be a plain object' );\n\t\t}\n\t\tthis._view = definition || {};\n\t}, {\n\t\t/**\n\t\t * @see ViewState.isInEditMode\n\t\t */\n\t\tisInEditMode: function() {\n\t\t\treturn !!this._view.isInEditMode;\n\t\t},\n\n\t\t/**\n\t\t * @see ViewState.isDisabled\n\t\t */\n\t\tisDisabled: function() {\n\t\t\treturn !!this._view.isDisabled;\n\t\t},\n\n\t\t/**\n\t\t * @see ViewState.value\n\t\t */\n\t\tvalue: function() {\n\t\t\treturn this._view.value;\n\t\t},\n\n\t\t/**\n\t\t * @see ViewState.getFormattedValue\n\t\t */\n\t\tgetFormattedValue: function() {\n\t\t\treturn this._view.getFormattedValue || '';\n\t\t},\n\n\t\t/**\n\t\t * @see ViewState.getTextValue\n\t\t */\n\t\tgetTextValue: function() {\n\t\t\treturn this._view.getTextValue || '';\n\t\t},\n\n\t\t/**\n\t\t * @param key\n\t\t * @see ViewState.option\n\t\t */\n\t\toption: function( key ) {\n\t\t\treturn ( this._view.options || {} )[ key ];\n\t\t}\n\t} );\n\n}( jQuery, util ) );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/src/jquery.valueview.tests.MockViewState.tests.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/src/jquery.valueview.tests.testExpert.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/src/jquery.valueview.valueview.tests.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]}]

$ npm ci
npm WARN prepare removing existing node_modules/ before installation

> core-js@3.9.1 postinstall /src/repo/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"

Thank you for using core-js ( https://github.com/zloirock/core-js ) for polyfilling JavaScript standard library!

The project needs your help! Please consider supporting of core-js on Open Collective or Patreon: 
> https://opencollective.com/core-js 
> https://www.patreon.com/zloirock 

Also, the author of core-js ( https://github.com/zloirock ) is looking for a good job -)


> fsevents@1.2.13 install /src/repo/node_modules/fsevents
> node install.js


Skipping 'fsevents' build as platform linux is not supported

> sinon@4.5.0 postinstall /src/repo/node_modules/sinon
> node scripts/support-sinon.js

Have some ❤️ for Sinon? You can support the project via Open Collective:
 > https://opencollective.com/sinon/donate

added 901 packages in 17.275s

$ npm test

> wikibase-data-values-value-view@1.0.0 test /src/repo
> grunt test

Running "eslint:all" (eslint) task

/src/repo/lib/jquery/jquery.PurposedCallbacks.js
  152:3  warning  Missing JSDoc @return declaration  jsdoc/require-returns

/src/repo/lib/jquery/jquery.focusAt.js
  73:2  warning  Missing JSDoc @return declaration  jsdoc/require-returns

/src/repo/lib/jquery/jquery.inputautoexpand.js
  114:1  warning  Missing JSDoc @return declaration  jsdoc/require-returns

/src/repo/lib/jquery.event/jquery.event.special.eachchange.js
   22:2   warning  Missing JSDoc @return declaration                                        jsdoc/require-returns
  200:48  warning  'eventData' is already declared in the upper scope on line 192 column 9  no-shadow

/src/repo/lib/jquery.ui/jquery.ui.inputextender.js
  174:3  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  552:3  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc

/src/repo/lib/jquery.ui/jquery.ui.listrotator.js
  124:3   warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  130:24  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  177:3   warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  228:10  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  242:12  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  278:16  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  371:75  warning  'newValue' is already declared in the upper scope on line 363 column 23            no-shadow

/src/repo/lib/jquery.ui/jquery.ui.ooMenu.js
   88:0  warning  Missing JSDoc @param "key" type                                                    jsdoc/require-param-type
   89:0  warning  Missing JSDoc @param "value" type                                                  jsdoc/require-param-type
  187:5  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  384:0  warning  Missing JSDoc @param "event" type                                                  jsdoc/require-param-type
  541:0  warning  Missing JSDoc @param "menu" type                                                   jsdoc/require-param-type

/src/repo/lib/jquery.ui/jquery.ui.preview.js
   69:3   warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
   72:4   warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
   77:17  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
   90:3   warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  109:3   warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc

/src/repo/lib/jquery.ui/jquery.ui.suggester.js
  239:2  warning  Missing JSDoc @return declaration        jsdoc/require-returns
  240:0  warning  Missing JSDoc @param "key" type          jsdoc/require-param-type
  241:0  warning  Missing JSDoc @param "value" type        jsdoc/require-param-type
  522:2  warning  Found more than one @return declaration  jsdoc/require-returns
  522:2  warning  Found more than one @return declaration  jsdoc/require-returns-check
  640:2  warning  Found more than one @return declaration  jsdoc/require-returns
  640:2  warning  Found more than one @return declaration  jsdoc/require-returns-check
  661:2  warning  Found more than one @return declaration  jsdoc/require-returns
  661:2  warning  Found more than one @return declaration  jsdoc/require-returns-check

/src/repo/lib/jquery.ui/jquery.ui.toggler.js
    5:0   warning  Syntax error in namepath: iconClass='ui-icon-triangle-1-'                          jsdoc/valid-types
   14:0   warning  Syntax error in namepath: isRtl=false                                              jsdoc/valid-types
   22:0   warning  Syntax error in namepath: browserSupportsTransform=false                           jsdoc/valid-types
  108:22  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  116:3   warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  121:22  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  206:3   warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  210:4   warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  212:4   warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc

/src/repo/src/ExpertExtender/ExpertExtender.Listrotator.js
  25:18  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc

/src/repo/src/experts/GlobeCoordinateInput.js
   45:29  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  202:37  warning  'precision' is already declared in the upper scope on line 197 column 35           no-shadow

/src/repo/src/experts/StringValue.js
  35:4  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc

/src/repo/src/experts/TimeInput.js
  68:29  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  86:28  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc

/src/repo/src/jquery.valueview.Expert.js
   79:0  warning  The type 'ViewState' is undefined                                                  jsdoc/no-undefined-types
  166:0  warning  The type 'ViewState' is undefined                                                  jsdoc/no-undefined-types
  214:4  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  241:4  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  264:0  warning  The type 'ViewState' is undefined                                                  jsdoc/no-undefined-types
  280:3  warning  Found more than one @return declaration                                            jsdoc/require-returns
  280:3  warning  Found more than one @return declaration                                            jsdoc/require-returns-check

/src/repo/src/jquery.valueview.valueview.js
   32:0  warning  Invalid JSDoc tag name "alternateClassName"                                        jsdoc/check-tag-names
  229:3  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  243:2  warning  Missing JSDoc @return declaration                                                  jsdoc/require-returns
  248:3  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  263:0  warning  Missing JSDoc @param "key" type                                                    jsdoc/require-param-type
  264:0  warning  Missing JSDoc @param "value" type                                                  jsdoc/require-param-type
  388:2  warning  Missing JSDoc @return declaration                                                  jsdoc/require-returns
  611:2  warning  Found more than one @return declaration                                            jsdoc/require-returns
  611:2  warning  Found more than one @return declaration                                            jsdoc/require-returns-check
  621:3  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  621:3  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc
  631:2  warning  Found more than one @return declaration                                            jsdoc/require-returns
  631:2  warning  Found more than one @return declaration                                            jsdoc/require-returns-check
  686:2  warning  Missing JSDoc @return declaration                                                  jsdoc/require-returns
  740:2  warning  Found more than one @return declaration                                            jsdoc/require-returns
  740:2  warning  Found more than one @return declaration                                            jsdoc/require-returns-check
  848:2  warning  Found more than one @return declaration                                            jsdoc/require-returns
  848:2  warning  Found more than one @return declaration                                            jsdoc/require-returns-check
  884:2  warning  Found more than one @return declaration                                            jsdoc/require-returns
  884:2  warning  Found more than one @return declaration                                            jsdoc/require-returns-check
  939:0  warning  The type 'ViewState' is undefined                                                  jsdoc/no-undefined-types

/src/repo/tests/lib/jquery.ui/jquery.ui.commonssuggester.tests.js
   8:0   warning  Missing JSDoc @param "mockSearchResult" type                          jsdoc/require-param-type
  13:20  warning  'options' is already declared in the upper scope on line 12 column 7  no-shadow

/src/repo/tests/lib/jquery.ui/jquery.ui.inputextender.tests.js
  12:2  warning  Missing JSDoc @return declaration   jsdoc/require-returns
  47:0  warning  Missing JSDoc @param "assert" type  jsdoc/require-param-type

/src/repo/tests/lib/jquery.ui/jquery.ui.listrotator.tests.js
   9:2  warning  Missing JSDoc @return declaration    jsdoc/require-returns
  12:0  warning  Missing JSDoc @param "options" type  jsdoc/require-param-type

/src/repo/tests/lib/jquery.ui/jquery.ui.ooMenu.tests.js
    8:2   warning  Missing JSDoc @return declaration                                   jsdoc/require-returns
  127:78  warning  'menu' is already declared in the upper scope on line 103 column 4  no-shadow

/src/repo/tests/lib/jquery.ui/jquery.ui.suggester.tests.js
  34:0  warning  The type 'ui' is undefined  jsdoc/no-undefined-types

/src/repo/tests/src/jquery.valueview.ExpertStore.tests.js
  28:0  warning  The type 'DataTypeMock' is undefined  jsdoc/no-undefined-types

/src/repo/tests/src/jquery.valueview.tests.MockExpert.js
  45:3  warning  Missing JSDoc @return declaration  jsdoc/require-returns

/src/repo/tests/src/jquery.valueview.tests.MockViewState.js
  29:3  warning  Missing JSDoc @return declaration  jsdoc/require-returns
  36:3  warning  Missing JSDoc @return declaration  jsdoc/require-returns
  43:3  warning  Missing JSDoc @return declaration  jsdoc/require-returns
  50:3  warning  Missing JSDoc @return declaration  jsdoc/require-returns
  57:3  warning  Missing JSDoc @return declaration  jsdoc/require-returns
  64:3  warning  Missing JSDoc @return declaration  jsdoc/require-returns
  65:0  warning  Missing JSDoc @param "key" type    jsdoc/require-param-type

✖ 94 problems (0 errors, 94 warnings)


Running "jsonlint:all" (jsonlint) task
>> 89 files lint free.

Running "banana:all" (banana) task
>> 1 message directory checked.

Running "karma:all" (karma) task
04 03 2021 11:58:06.860:DEBUG [config]: No config file specified.
04 03 2021 11:58:06.868:DEBUG [config]: autoWatch set to false, because of singleRun
04 03 2021 11:58:06.873:DEBUG [karma-server]: Final config Config {
  LOG_DISABLE: 'OFF',
  LOG_ERROR: 'ERROR',
  LOG_WARN: 'WARN',
  LOG_INFO: 'INFO',
  LOG_DEBUG: 'DEBUG',
  frameworks: [ 'qunit' ],
  protocol: 'http:',
  port: 9876,
  listenAddress: '0.0.0.0',
  hostname: 'localhost',
  httpsServerConfig: {},
  basePath: '/src/repo',
  files:
   [ Pattern {
       pattern: '/src/repo/node_modules/jquery/dist/jquery.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 0, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern: '/src/repo/node_modules/jquery-ui/ui/jquery.ui.core.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 0, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern: '/src/repo/node_modules/jquery-ui/ui/jquery.ui.widget.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 0, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern: '/src/repo/node_modules/jquery-ui/ui/jquery.ui.position.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 0, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern: '/src/repo/node_modules/jquery-ui/ui/jquery.ui.menu.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 0, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern: '/src/repo/node_modules/jquery-client/jquery.client.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 0, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern:
        '/src/repo/node_modules/jquery-migrate/dist/jquery-migrate.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 0, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern: '/src/repo/node_modules/sinon/pkg/sinon.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 0, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern:
        '/src/repo/node_modules/wikibase-data-values/lib/util/util.inherit.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 0, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern: '/src/repo/lib/jquery/jquery.PurposedCallbacks.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 0, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern: '/src/repo/lib/jquery/*.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 1, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern: '/src/repo/lib/jquery.event/*.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 1, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern: '/src/repo/lib/jquery.util/*.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 1, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern: '/src/repo/lib/util/*.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 1, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern: '/src/repo/lib/jquery.ui/jquery.ui.ooMenu.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 0, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern: '/src/repo/lib/jquery.ui/jquery.ui.suggester.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 0, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern: '/src/repo/lib/jquery.ui/*.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 1, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern:
        '/src/repo/node_modules/wikibase-data-values/lib/globeCoordinate/globeCoordinate.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 0, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern:
        '/src/repo/node_modules/wikibase-data-values/src/dataValues.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 0, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern:
        '/src/repo/node_modules/wikibase-data-values/src/DataValue.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 0, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern:
        '/src/repo/node_modules/wikibase-data-values/src/valueFormatters/valueFormatters.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 0, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern:
        '/src/repo/node_modules/wikibase-data-values/src/valueFormatters/formatters/ValueFormatter.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 0, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern:
        '/src/repo/node_modules/wikibase-data-values/src/valueFormatters/formatters/*.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 1, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern:
        '/src/repo/node_modules/wikibase-data-values/src/valueParsers/valueParsers.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 0, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern:
        '/src/repo/node_modules/wikibase-data-values/src/valueParsers/ValueParserStore.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 0, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern:
        '/src/repo/node_modules/wikibase-data-values/src/valueParsers/parsers/ValueParser.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 0, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern:
        '/src/repo/node_modules/wikibase-data-values/src/valueParsers/parsers/*.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 1, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern:
        '/src/repo/node_modules/wikibase-data-values/src/values/*.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 1, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern: '/src/repo/src/jquery.valueview.valueview.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 0, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern: '/src/repo/src/*.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 1, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern: '/src/repo/src/ExpertExtender/ExpertExtender.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 0, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern: '/src/repo/src/ExpertExtender/*.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 1, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern: '/src/repo/src/experts/StringValue.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 0, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern: '/src/repo/src/experts/*.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 1, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern: '/src/repo/tests/sinon-qunit.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 0, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern: '/src/repo/tests/lib/jquery/*.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 1, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern: '/src/repo/tests/lib/jquery.event/*.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 1, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern: '/src/repo/tests/lib/jquery.ui/*.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 1, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern: '/src/repo/tests/lib/jquery.util/*.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 1, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern: '/src/repo/tests/lib/util/*.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 1, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern: '/src/repo/tests/src/jquery.valueview.tests.MockExpert.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 0, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern: '/src/repo/tests/src/*.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 1, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern: '/src/repo/tests/src/experts/*.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 1, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern:
        '/src/repo/tests/src/ExpertExtender/testExpertExtenderExtension.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 0, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined },
     Pattern {
       pattern: '/src/repo/tests/src/ExpertExtender/*.js',
       served: true,
       included: true,
       watched: true,
       nocache: false,
       weight: [ 1, 0, 1, 0, 0, 0 ],
       type: undefined,
       isBinary: undefined } ],
  browserConsoleLogOptions: { level: 'debug', format: '%b %T: %m', terminal: true },
  customContextFile: null,
  customDebugFile: null,
  customClientContextFile: null,
  exclude: [],
  logLevel: 'DEBUG',
  colors: true,
  autoWatch: false,
  autoWatchBatchDelay: 250,
  restartOnFileChange: false,
  usePolling: true,
  reporters: [ 'progress' ],
  singleRun: true,
  browsers: [ 'ChromeCustom', 'FirefoxHeadless' ],
  captureTimeout: 60000,
  pingTimeout: 5000,
  proxies: {},
  proxyValidateSSL: true,
  preprocessors:
   [Object: null prototype] {
     '/src/repo/src/**/*.js': [ 'webpack' ],
     '/src/repo/lib/**/*.js': [ 'webpack' ],
     '/src/repo/tests/**/*.tests.js': [ 'webpack' ] },
  preprocessor_priority: {},
  urlRoot: '/',
  upstreamProxy: undefined,
  reportSlowerThan: 0,
  loggers:
   [ { type: 'console',
       layout: { type: 'pattern', pattern: '%[%d{DATE}:%p [%c]: %]%m' } } ],
  transports: [ 'polling', 'websocket' ],
  forceJSONP: false,
  plugins:
   [ 'karma-*',
     [Object: null prototype] { 'launcher:ChromeCustom': [ 'factory', [Function] ] } ],
  client:
   { args: [],
     useIframe: true,
     runInParent: false,
     captureConsole: true,
     clearContext: true },
  defaultClient:
   { args: [],
     useIframe: true,
     runInParent: false,
     captureConsole: true,
     clearContext: true },
  browserDisconnectTimeout: 2000,
  browserDisconnectTolerance: 0,
  browserNoActivityTimeout: 30000,
  processKillTimeout: 2000,
  concurrency: Infinity,
  failOnEmptyTestSuite: true,
  retryLimit: 2,
  detached: false,
  crossOriginAttribute: true,
  browserSocketTimeout: 20000,
  background: false,
  webpack: { mode: 'development' },
  customLaunchers:
   { ChromeCustom: { base: 'ChromeHeadless', flags: [ '--no-sandbox' ] } } }
04 03 2021 11:58:06.874:DEBUG [plugin]: Loading karma-* from /src/repo/node_modules
04 03 2021 11:58:06.875:DEBUG [plugin]: Loading plugin /src/repo/node_modules/karma-chrome-launcher.
04 03 2021 11:58:06.887:DEBUG [plugin]: Loading plugin /src/repo/node_modules/karma-firefox-launcher.
04 03 2021 11:58:06.892:DEBUG [plugin]: Loading plugin /src/repo/node_modules/karma-qunit.
04 03 2021 11:58:06.893:DEBUG [plugin]: Loading plugin /src/repo/node_modules/karma-webpack.
04 03 2021 11:58:07.222:DEBUG [plugin]: Loading inlined plugin (defining launcher:ChromeCustom).
04 03 2021 11:58:07.432:DEBUG [web-server]: Instantiating middleware
ℹ 「wdm」: Hash: 3879665b411e2fff46cc
Version: webpack 4.46.0
Time: 155ms
Built at: 03/04/2021 11:58:07 AM
ℹ 「wdm」: Compiled successfully.
ℹ 「wdm」: Compiling...
ℹ 「wdm」: Hash: f0f2c127ee2701ed1274
Version: webpack 4.46.0
Time: 651ms
Built at: 03/04/2021 11:58:08 AM
                                                            Asset      Size                                                          Chunks             Chunk Names
              lib/jquery.event/jquery.event.special.eachchange.js  10.7 KiB                lib/jquery.event/jquery.event.special.eachchange  [emitted]  lib/jquery.event/jquery.event.special.eachchange
                      lib/jquery.ui/jquery.ui.commonssuggester.js  9.64 KiB                        lib/jquery.ui/jquery.ui.commonssuggester  [emitted]  lib/jquery.ui/jquery.ui.commonssuggester
                         lib/jquery.ui/jquery.ui.inputextender.js  21.9 KiB                           lib/jquery.ui/jquery.ui.inputextender  [emitted]  lib/jquery.ui/jquery.ui.inputextender
                     lib/jquery.ui/jquery.ui.languagesuggester.js  7.39 KiB                       lib/jquery.ui/jquery.ui.languagesuggester  [emitted]  lib/jquery.ui/jquery.ui.languagesuggester
                           lib/jquery.ui/jquery.ui.listrotator.js  16.1 KiB                             lib/jquery.ui/jquery.ui.listrotator  [emitted]  lib/jquery.ui/jquery.ui.listrotator
                                lib/jquery.ui/jquery.ui.ooMenu.js  18.4 KiB                                  lib/jquery.ui/jquery.ui.ooMenu  [emitted]  lib/jquery.ui/jquery.ui.ooMenu
                               lib/jquery.ui/jquery.ui.preview.js  7.11 KiB                                 lib/jquery.ui/jquery.ui.preview  [emitted]  lib/jquery.ui/jquery.ui.preview
                             lib/jquery.ui/jquery.ui.suggester.js  24.2 KiB                               lib/jquery.ui/jquery.ui.suggester  [emitted]  lib/jquery.ui/jquery.ui.suggester
                               lib/jquery.ui/jquery.ui.toggler.js  10.1 KiB                                 lib/jquery.ui/jquery.ui.toggler  [emitted]  lib/jquery.ui/jquery.ui.toggler
                         lib/jquery.ui/jquery.ui.unitsuggester.js  11.4 KiB                           lib/jquery.ui/jquery.ui.unitsuggester  [emitted]  lib/jquery.ui/jquery.ui.unitsuggester
                   lib/jquery.util/jquery.util.adaptlettercase.js   5.5 KiB                     lib/jquery.util/jquery.util.adaptlettercase  [emitted]  lib/jquery.util/jquery.util.adaptlettercase
                 lib/jquery.util/jquery.util.getscrollbarwidth.js  5.07 KiB                   lib/jquery.util/jquery.util.getscrollbarwidth  [emitted]  lib/jquery.util/jquery.util.getscrollbarwidth
                              lib/jquery/jquery.AnimationEvent.js    20 KiB                                lib/jquery/jquery.AnimationEvent  [emitted]  lib/jquery/jquery.AnimationEvent
                           lib/jquery/jquery.PurposedCallbacks.js  12.5 KiB                             lib/jquery/jquery.PurposedCallbacks  [emitted]  lib/jquery/jquery.PurposedCallbacks
                            lib/jquery/jquery.animateWithEvent.js  24.7 KiB                              lib/jquery/jquery.animateWithEvent  [emitted]  lib/jquery/jquery.animateWithEvent
                          lib/jquery/jquery.autocompletestring.js  6.35 KiB                            lib/jquery/jquery.autocompletestring  [emitted]  lib/jquery/jquery.autocompletestring
                                     lib/jquery/jquery.focusAt.js  7.64 KiB                                       lib/jquery/jquery.focusAt  [emitted]  lib/jquery/jquery.focusAt
                             lib/jquery/jquery.inputautoexpand.js  16.3 KiB                               lib/jquery/jquery.inputautoexpand  [emitted]  lib/jquery/jquery.inputautoexpand
                        lib/util/util.CombiningMessageProvider.js  5.26 KiB                          lib/util/util.CombiningMessageProvider  [emitted]  lib/util/util.CombiningMessageProvider
                                lib/util/util.ContentLanguages.js  5.01 KiB                                  lib/util/util.ContentLanguages  [emitted]  lib/util/util.ContentLanguages
                                      lib/util/util.Extendable.js  5.18 KiB                                        lib/util/util.Extendable  [emitted]  lib/util/util.Extendable
                             lib/util/util.HashMessageProvider.js  4.94 KiB                               lib/util/util.HashMessageProvider  [emitted]  lib/util/util.HashMessageProvider
                                 lib/util/util.MessageProvider.js  4.51 KiB                                   lib/util/util.MessageProvider  [emitted]  lib/util/util.MessageProvider
                                        lib/util/util.Notifier.js  7.58 KiB                                          lib/util/util.Notifier  [emitted]  lib/util/util.Notifier
                        lib/util/util.PrefixingMessageProvider.js   5.2 KiB                          lib/util/util.PrefixingMessageProvider  [emitted]  lib/util/util.PrefixingMessageProvider
                              lib/util/util.highlightSubstring.js  6.83 KiB                                lib/util/util.highlightSubstring  [emitted]  lib/util/util.highlightSubstring
                   src/ExpertExtender/ExpertExtender.Container.js  5.92 KiB                     src/ExpertExtender/ExpertExtender.Container  [emitted]  src/ExpertExtender/ExpertExtender.Container
            src/ExpertExtender/ExpertExtender.LanguageSelector.js  8.12 KiB              src/ExpertExtender/ExpertExtender.LanguageSelector  [emitted]  src/ExpertExtender/ExpertExtender.LanguageSelector
                 src/ExpertExtender/ExpertExtender.Listrotator.js  7.67 KiB                   src/ExpertExtender/ExpertExtender.Listrotator  [emitted]  src/ExpertExtender/ExpertExtender.Listrotator
                     src/ExpertExtender/ExpertExtender.Preview.js   6.2 KiB                       src/ExpertExtender/ExpertExtender.Preview  [emitted]  src/ExpertExtender/ExpertExtender.Preview
                src/ExpertExtender/ExpertExtender.UnitSelector.js  15.2 KiB                  src/ExpertExtender/ExpertExtender.UnitSelector  [emitted]  src/ExpertExtender/ExpertExtender.UnitSelector
                             src/ExpertExtender/ExpertExtender.js  6.44 KiB                               src/ExpertExtender/ExpertExtender  [emitted]  src/ExpertExtender/ExpertExtender
                                  src/experts/CommonsMediaType.js  5.67 KiB                                    src/experts/CommonsMediaType  [emitted]  src/experts/CommonsMediaType
                                        src/experts/EmptyValue.js  4.98 KiB                                          src/experts/EmptyValue  [emitted]  src/experts/EmptyValue
                                          src/experts/GeoShape.js  5.61 KiB                                            src/experts/GeoShape  [emitted]  src/experts/GeoShape
                              src/experts/GlobeCoordinateInput.js    10 KiB                                src/experts/GlobeCoordinateInput  [emitted]  src/experts/GlobeCoordinateInput
                                   src/experts/MonolingualText.js  10.1 KiB                                     src/experts/MonolingualText  [emitted]  src/experts/MonolingualText
                                     src/experts/QuantityInput.js  17.4 KiB                                       src/experts/QuantityInput  [emitted]  src/experts/QuantityInput
                                       src/experts/StringValue.js   6.7 KiB                                         src/experts/StringValue  [emitted]  src/experts/StringValue
                              src/experts/SuggestedStringValue.js  5.68 KiB                                src/experts/SuggestedStringValue  [emitted]  src/experts/SuggestedStringValue
                                       src/experts/TabularData.js  5.64 KiB                                         src/experts/TabularData  [emitted]  src/experts/TabularData
                                         src/experts/TimeInput.js  9.37 KiB                                           src/experts/TimeInput  [emitted]  src/experts/TimeInput
                             src/experts/UnDeserializableValue.js  5.25 KiB                               src/experts/UnDeserializableValue  [emitted]  src/experts/UnDeserializableValue
                                  src/experts/UnsupportedValue.js  6.56 KiB                                    src/experts/UnsupportedValue  [emitted]  src/experts/UnsupportedValue
                                   src/jquery.valueview.Expert.js    14 KiB                                     src/jquery.valueview.Expert  [emitted]  src/jquery.valueview.Expert
                              src/jquery.valueview.ExpertStore.js  8.12 KiB                                src/jquery.valueview.ExpertStore  [emitted]  src/jquery.valueview.ExpertStore
                                src/jquery.valueview.ViewState.js   6.6 KiB                                  src/jquery.valueview.ViewState  [emitted]  src/jquery.valueview.ViewState
                                  src/jquery.valueview.experts.js  4.23 KiB                                    src/jquery.valueview.experts  [emitted]  src/jquery.valueview.experts
                                          src/jquery.valueview.js  39.8 KiB                                            src/jquery.valueview  [emitted]  src/jquery.valueview
                                src/jquery.valueview.valueview.js  38.6 KiB                                  src/jquery.valueview.valueview  [emitted]  src/jquery.valueview.valueview
  tests/lib/jquery.event/jquery.event.special.eachchange.tests.js  10.2 KiB    tests/lib/jquery.event/jquery.event.special.eachchange.tests  [emitted]  tests/lib/jquery.event/jquery.event.special.eachchange.tests
          tests/lib/jquery.ui/jquery.ui.commonssuggester.tests.js  8.36 KiB            tests/lib/jquery.ui/jquery.ui.commonssuggester.tests  [emitted]  tests/lib/jquery.ui/jquery.ui.commonssuggester.tests
             tests/lib/jquery.ui/jquery.ui.inputextender.tests.js  14.3 KiB               tests/lib/jquery.ui/jquery.ui.inputextender.tests  [emitted]  tests/lib/jquery.ui/jquery.ui.inputextender.tests
               tests/lib/jquery.ui/jquery.ui.listrotator.tests.js  6.61 KiB                 tests/lib/jquery.ui/jquery.ui.listrotator.tests  [emitted]  tests/lib/jquery.ui/jquery.ui.listrotator.tests
                    tests/lib/jquery.ui/jquery.ui.ooMenu.tests.js  18.7 KiB                      tests/lib/jquery.ui/jquery.ui.ooMenu.tests  [emitted]  tests/lib/jquery.ui/jquery.ui.ooMenu.tests
                   tests/lib/jquery.ui/jquery.ui.preview.tests.js  6.29 KiB                     tests/lib/jquery.ui/jquery.ui.preview.tests  [emitted]  tests/lib/jquery.ui/jquery.ui.preview.tests
                 tests/lib/jquery.ui/jquery.ui.suggester.tests.js  10.3 KiB                   tests/lib/jquery.ui/jquery.ui.suggester.tests  [emitted]  tests/lib/jquery.ui/jquery.ui.suggester.tests
                   tests/lib/jquery.ui/jquery.ui.toggler.tests.js  5.83 KiB                     tests/lib/jquery.ui/jquery.ui.toggler.tests  [emitted]  tests/lib/jquery.ui/jquery.ui.toggler.tests
       tests/lib/jquery.util/jquery.util.adaptlettercase.tests.js  5.38 KiB         tests/lib/jquery.util/jquery.util.adaptlettercase.tests  [emitted]  tests/lib/jquery.util/jquery.util.adaptlettercase.tests
     tests/lib/jquery.util/jquery.util.getscrollbarwidth.tests.js  4.41 KiB       tests/lib/jquery.util/jquery.util.getscrollbarwidth.tests  [emitted]  tests/lib/jquery.util/jquery.util.getscrollbarwidth.tests
                  tests/lib/jquery/jquery.AnimationEvent.tests.js  25.7 KiB                    tests/lib/jquery/jquery.AnimationEvent.tests  [emitted]  tests/lib/jquery/jquery.AnimationEvent.tests
               tests/lib/jquery/jquery.PurposedCallbacks.tests.js  20.9 KiB                 tests/lib/jquery/jquery.PurposedCallbacks.tests  [emitted]  tests/lib/jquery/jquery.PurposedCallbacks.tests
                tests/lib/jquery/jquery.animateWithEvent.tests.js  8.67 KiB                  tests/lib/jquery/jquery.animateWithEvent.tests  [emitted]  tests/lib/jquery/jquery.animateWithEvent.tests
              tests/lib/jquery/jquery.autocompletestring.tests.js  5.85 KiB                tests/lib/jquery/jquery.autocompletestring.tests  [emitted]  tests/lib/jquery/jquery.autocompletestring.tests
                         tests/lib/jquery/jquery.focusAt.tests.js  8.54 KiB                           tests/lib/jquery/jquery.focusAt.tests  [emitted]  tests/lib/jquery/jquery.focusAt.tests
                 tests/lib/jquery/jquery.inputautoexpand.tests.js  13.5 KiB                   tests/lib/jquery/jquery.inputautoexpand.tests  [emitted]  tests/lib/jquery/jquery.inputautoexpand.tests
                 tests/lib/util/util.HashMessageProvider.tests.js  4.77 KiB                   tests/lib/util/util.HashMessageProvider.tests  [emitted]  tests/lib/util/util.HashMessageProvider.tests
                            tests/lib/util/util.Notifier.tests.js  6.01 KiB                              tests/lib/util/util.Notifier.tests  [emitted]  tests/lib/util/util.Notifier.tests
                  tests/lib/util/util.highlightSubstring.tests.js  7.26 KiB                    tests/lib/util/util.highlightSubstring.tests  [emitted]  tests/lib/util/util.highlightSubstring.tests
       tests/src/ExpertExtender/ExpertExtender.Container.tests.js  4.98 KiB         tests/src/ExpertExtender/ExpertExtender.Container.tests  [emitted]  tests/src/ExpertExtender/ExpertExtender.Container.tests
tests/src/ExpertExtender/ExpertExtender.LanguageSelector.tests.js  14.4 KiB  tests/src/ExpertExtender/ExpertExtender.LanguageSelector.tests  [emitted]  tests/src/ExpertExtender/ExpertExtender.LanguageSelector.tests
     tests/src/ExpertExtender/ExpertExtender.Listrotator.tests.js  6.25 KiB       tests/src/ExpertExtender/ExpertExtender.Listrotator.tests  [emitted]  tests/src/ExpertExtender/ExpertExtender.Listrotator.tests
         tests/src/ExpertExtender/ExpertExtender.Preview.tests.js  4.63 KiB           tests/src/ExpertExtender/ExpertExtender.Preview.tests  [emitted]  tests/src/ExpertExtender/ExpertExtender.Preview.tests
    tests/src/ExpertExtender/ExpertExtender.UnitSelector.tests.js  17.8 KiB      tests/src/ExpertExtender/ExpertExtender.UnitSelector.tests  [emitted]  tests/src/ExpertExtender/ExpertExtender.UnitSelector.tests
                 tests/src/ExpertExtender/ExpertExtender.tests.js   6.1 KiB                   tests/src/ExpertExtender/ExpertExtender.tests  [emitted]  tests/src/ExpertExtender/ExpertExtender.tests
                  tests/src/experts/GlobeCoordinateInput.tests.js  5.07 KiB                    tests/src/experts/GlobeCoordinateInput.tests  [emitted]  tests/src/experts/GlobeCoordinateInput.tests
                       tests/src/experts/MonolingualText.tests.js  4.39 KiB                         tests/src/experts/MonolingualText.tests  [emitted]  tests/src/experts/MonolingualText.tests
                         tests/src/experts/QuantityInput.tests.js  4.87 KiB                           tests/src/experts/QuantityInput.tests  [emitted]  tests/src/experts/QuantityInput.tests
                           tests/src/experts/StringValue.tests.js   4.3 KiB                             tests/src/experts/StringValue.tests  [emitted]  tests/src/experts/StringValue.tests
                             tests/src/experts/TimeInput.tests.js  4.29 KiB                               tests/src/experts/TimeInput.tests  [emitted]  tests/src/experts/TimeInput.tests
                  tests/src/jquery.valueview.ExpertStore.tests.js  12.9 KiB                    tests/src/jquery.valueview.ExpertStore.tests  [emitted]  tests/src/jquery.valueview.ExpertStore.tests
          tests/src/jquery.valueview.tests.MockViewState.tests.js  10.8 KiB            tests/src/jquery.valueview.tests.MockViewState.tests  [emitted]  tests/src/jquery.valueview.tests.MockViewState.tests
                    tests/src/jquery.valueview.valueview.tests.js  8.78 KiB                      tests/src/jquery.valueview.valueview.tests  [emitted]  tests/src/jquery.valueview.valueview.tests
Entrypoint lib/jquery/jquery.PurposedCallbacks = lib/jquery/jquery.PurposedCallbacks.js
Entrypoint lib/jquery/jquery.animateWithEvent = lib/jquery/jquery.animateWithEvent.js
Entrypoint lib/jquery/jquery.AnimationEvent = lib/jquery/jquery.AnimationEvent.js
Entrypoint lib/jquery/jquery.autocompletestring = lib/jquery/jquery.autocompletestring.js
Entrypoint lib/jquery/jquery.focusAt = lib/jquery/jquery.focusAt.js
Entrypoint lib/jquery.event/jquery.event.special.eachchange = lib/jquery.event/jquery.event.special.eachchange.js
Entrypoint lib/jquery.util/jquery.util.adaptlettercase = lib/jquery.util/jquery.util.adaptlettercase.js
Entrypoint lib/jquery.util/jquery.util.getscrollbarwidth = lib/jquery.util/jquery.util.getscrollbarwidth.js
Entrypoint lib/util/util.CombiningMessageProvider = lib/util/util.CombiningMessageProvider.js
Entrypoint lib/util/util.ContentLanguages = lib/util/util.ContentLanguages.js
Entrypoint lib/util/util.Extendable = lib/util/util.Extendable.js
Entrypoint lib/util/util.HashMessageProvider = lib/util/util.HashMessageProvider.js
Entrypoint lib/util/util.highlightSubstring = lib/util/util.highlightSubstring.js
Entrypoint lib/util/util.MessageProvider = lib/util/util.MessageProvider.js
Entrypoint lib/util/util.Notifier = lib/util/util.Notifier.js
Entrypoint lib/util/util.PrefixingMessageProvider = lib/util/util.PrefixingMessageProvider.js
Entrypoint lib/jquery.ui/jquery.ui.commonssuggester = lib/jquery.ui/jquery.ui.commonssuggester.js
Entrypoint lib/jquery.ui/jquery.ui.languagesuggester = lib/jquery.ui/jquery.ui.languagesuggester.js
Entrypoint lib/jquery.ui/jquery.ui.preview = lib/jquery.ui/jquery.ui.preview.js
Entrypoint lib/jquery.ui/jquery.ui.toggler = lib/jquery.ui/jquery.ui.toggler.js
Entrypoint lib/jquery.ui/jquery.ui.unitsuggester = lib/jquery.ui/jquery.ui.unitsuggester.js
Entrypoint src/jquery.valueview.experts = src/jquery.valueview.experts.js
Entrypoint src/jquery.valueview.ExpertStore = src/jquery.valueview.ExpertStore.js
Entrypoint src/jquery.valueview = src/jquery.valueview.js
Entrypoint src/jquery.valueview.ViewState = src/jquery.valueview.ViewState.js
Entrypoint src/ExpertExtender/ExpertExtender = src/ExpertExtender/ExpertExtender.js
Entrypoint src/ExpertExtender/ExpertExtender.Container = src/ExpertExtender/ExpertExtender.Container.js
Entrypoint src/ExpertExtender/ExpertExtender.LanguageSelector = src/ExpertExtender/ExpertExtender.LanguageSelector.js
Entrypoint src/ExpertExtender/ExpertExtender.Listrotator = src/ExpertExtender/ExpertExtender.Listrotator.js
Entrypoint src/ExpertExtender/ExpertExtender.Preview = src/ExpertExtender/ExpertExtender.Preview.js
Entrypoint src/ExpertExtender/ExpertExtender.UnitSelector = src/ExpertExtender/ExpertExtender.UnitSelector.js
Entrypoint src/experts/StringValue = src/experts/StringValue.js
Entrypoint src/experts/CommonsMediaType = src/experts/CommonsMediaType.js
Entrypoint src/experts/EmptyValue = src/experts/EmptyValue.js
Entrypoint src/experts/GeoShape = src/experts/GeoShape.js
Entrypoint src/experts/GlobeCoordinateInput = src/experts/GlobeCoordinateInput.js
Entrypoint src/experts/MonolingualText = src/experts/MonolingualText.js
Entrypoint src/experts/QuantityInput = src/experts/QuantityInput.js
Entrypoint src/experts/SuggestedStringValue = src/experts/SuggestedStringValue.js
Entrypoint src/experts/TabularData = src/experts/TabularData.js
Entrypoint src/experts/TimeInput = src/experts/TimeInput.js
Entrypoint src/experts/UnDeserializableValue = src/experts/UnDeserializableValue.js
Entrypoint src/experts/UnsupportedValue = src/experts/UnsupportedValue.js
Entrypoint tests/lib/jquery/jquery.animateWithEvent.tests = tests/lib/jquery/jquery.animateWithEvent.tests.js
Entrypoint tests/lib/jquery/jquery.AnimationEvent.tests = tests/lib/jquery/jquery.AnimationEvent.tests.js
Entrypoint tests/lib/jquery/jquery.autocompletestring.tests = tests/lib/jquery/jquery.autocompletestring.tests.js
Entrypoint tests/lib/jquery/jquery.focusAt.tests = tests/lib/jquery/jquery.focusAt.tests.js
Entrypoint tests/lib/jquery/jquery.PurposedCallbacks.tests = tests/lib/jquery/jquery.PurposedCallbacks.tests.js
Entrypoint tests/lib/jquery.event/jquery.event.special.eachchange.tests = tests/lib/jquery.event/jquery.event.special.eachchange.tests.js
Entrypoint tests/lib/jquery.ui/jquery.ui.commonssuggester.tests = tests/lib/jquery.ui/jquery.ui.commonssuggester.tests.js
Entrypoint tests/lib/jquery.ui/jquery.ui.listrotator.tests = tests/lib/jquery.ui/jquery.ui.listrotator.tests.js
Entrypoint tests/lib/jquery.ui/jquery.ui.preview.tests = tests/lib/jquery.ui/jquery.ui.preview.tests.js
Entrypoint tests/lib/jquery.ui/jquery.ui.suggester.tests = tests/lib/jquery.ui/jquery.ui.suggester.tests.js
Entrypoint tests/lib/jquery.ui/jquery.ui.toggler.tests = tests/lib/jquery.ui/jquery.ui.toggler.tests.js
Entrypoint tests/lib/jquery.util/jquery.util.getscrollbarwidth.tests = tests/lib/jquery.util/jquery.util.getscrollbarwidth.tests.js
Entrypoint tests/lib/jquery.util/jquery.util.adaptlettercase.tests = tests/lib/jquery.util/jquery.util.adaptlettercase.tests.js
Entrypoint tests/lib/util/util.HashMessageProvider.tests = tests/lib/util/util.HashMessageProvider.tests.js
Entrypoint tests/lib/util/util.highlightSubstring.tests = tests/lib/util/util.highlightSubstring.tests.js
Entrypoint tests/lib/util/util.Notifier.tests = tests/lib/util/util.Notifier.tests.js
Entrypoint tests/src/jquery.valueview.tests.MockViewState.tests = tests/src/jquery.valueview.tests.MockViewState.tests.js
Entrypoint tests/src/jquery.valueview.valueview.tests = tests/src/jquery.valueview.valueview.tests.js
Entrypoint tests/src/experts/GlobeCoordinateInput.tests = tests/src/experts/GlobeCoordinateInput.tests.js
Entrypoint tests/src/experts/MonolingualText.tests = tests/src/experts/MonolingualText.tests.js
Entrypoint tests/src/experts/QuantityInput.tests = tests/src/experts/QuantityInput.tests.js
Entrypoint tests/src/experts/StringValue.tests = tests/src/experts/StringValue.tests.js
Entrypoint tests/src/experts/TimeInput.tests = tests/src/experts/TimeInput.tests.js
Entrypoint tests/src/ExpertExtender/ExpertExtender.Container.tests = tests/src/ExpertExtender/ExpertExtender.Container.tests.js
Entrypoint tests/src/ExpertExtender/ExpertExtender.LanguageSelector.tests = tests/src/ExpertExtender/ExpertExtender.LanguageSelector.tests.js
Entrypoint tests/src/ExpertExtender/ExpertExtender.Listrotator.tests = tests/src/ExpertExtender/ExpertExtender.Listrotator.tests.js
Entrypoint tests/src/ExpertExtender/ExpertExtender.Preview.tests = tests/src/ExpertExtender/ExpertExtender.Preview.tests.js
Entrypoint tests/src/ExpertExtender/ExpertExtender.tests = tests/src/ExpertExtender/ExpertExtender.tests.js
Entrypoint tests/src/ExpertExtender/ExpertExtender.UnitSelector.tests = tests/src/ExpertExtender/ExpertExtender.UnitSelector.tests.js
Entrypoint lib/jquery/jquery.inputautoexpand = lib/jquery/jquery.inputautoexpand.js
Entrypoint lib/jquery.ui/jquery.ui.ooMenu = lib/jquery.ui/jquery.ui.ooMenu.js
Entrypoint lib/jquery.ui/jquery.ui.listrotator = lib/jquery.ui/jquery.ui.listrotator.js
Entrypoint src/jquery.valueview.Expert = src/jquery.valueview.Expert.js
Entrypoint tests/lib/jquery/jquery.inputautoexpand.tests = tests/lib/jquery/jquery.inputautoexpand.tests.js
Entrypoint tests/lib/jquery.ui/jquery.ui.inputextender.tests = tests/lib/jquery.ui/jquery.ui.inputextender.tests.js
Entrypoint tests/lib/jquery.ui/jquery.ui.ooMenu.tests = tests/lib/jquery.ui/jquery.ui.ooMenu.tests.js
Entrypoint tests/src/jquery.valueview.ExpertStore.tests = tests/src/jquery.valueview.ExpertStore.tests.js
Entrypoint lib/jquery.ui/jquery.ui.suggester = lib/jquery.ui/jquery.ui.suggester.js
Entrypoint lib/jquery.ui/jquery.ui.inputextender = lib/jquery.ui/jquery.ui.inputextender.js
Entrypoint src/jquery.valueview.valueview = src/jquery.valueview.valueview.js
[./lib/jquery.event/jquery.event.special.eachchange.js] 6.01 KiB {lib/jquery.event/jquery.event.special.eachchange} [built]
[./lib/jquery.ui/jquery.ui.commonssuggester.js] 4.93 KiB {lib/jquery.ui/jquery.ui.commonssuggester} [built]
[./lib/jquery.ui/jquery.ui.inputextender.js] 16.3 KiB {lib/jquery.ui/jquery.ui.inputextender} [built]
[./lib/jquery.ui/jquery.ui.languagesuggester.js] 3.1 KiB {lib/jquery.ui/jquery.ui.languagesuggester} [built]
[./lib/jquery.ui/jquery.ui.listrotator.js] 11 KiB {lib/jquery.ui/jquery.ui.listrotator} [built]
[./lib/jquery.ui/jquery.ui.ooMenu.js] 13.2 KiB {lib/jquery.ui/jquery.ui.ooMenu} [built]
[./lib/jquery.ui/jquery.ui.preview.js] 2.93 KiB {lib/jquery.ui/jquery.ui.preview} [built]
[./lib/jquery.ui/jquery.ui.suggester.js] 18.4 KiB {lib/jquery.ui/jquery.ui.suggester} [built]
[./lib/jquery.ui/jquery.ui.toggler.js] 5.7 KiB {lib/jquery.ui/jquery.ui.toggler} [built]
[./lib/jquery.ui/jquery.ui.unitsuggester.js] 6.6 KiB {lib/jquery.ui/jquery.ui.unitsuggester} {src/ExpertExtender/ExpertExtender.UnitSelector} {src/experts/QuantityInput} {tests/src/ExpertExtender/ExpertExtender.UnitSelector.tests} [built]
[./lib/jquery.util/jquery.util.adaptlettercase.js] 1.42 KiB {lib/jquery.util/jquery.util.adaptlettercase} [built]
[./lib/jquery.util/jquery.util.getscrollbarwidth.js] 1010 bytes {lib/jquery.util/jquery.util.getscrollbarwidth} [built]
[./lib/jquery/jquery.AnimationEvent.js] 6.58 KiB {lib/jquery/jquery.AnimationEvent} {lib/jquery/jquery.animateWithEvent} {tests/lib/jquery/jquery.AnimationEvent.tests} [built]
[./lib/jquery/jquery.PurposedCallbacks.js] 7.8 KiB {lib/jquery/jquery.PurposedCallbacks} {lib/jquery/jquery.animateWithEvent} {lib/jquery/jquery.AnimationEvent} {tests/lib/jquery/jquery.AnimationEvent.tests} {tests/lib/jquery/jquery.PurposedCallbacks.tests} [built]
[./lib/jquery/jquery.animateWithEvent.js] 4.04 KiB {lib/jquery/jquery.animateWithEvent} [built]
    + 68 hidden modules
ℹ 「wdm」: Compiled successfully.
04 03 2021 11:58:08.794:INFO [karma-server]: Karma v6.1.0 server started at http://localhost:9876/
04 03 2021 11:58:08.794:INFO [launcher]: Launching browsers ChromeCustom, FirefoxHeadless with concurrency unlimited
04 03 2021 11:58:08.804:INFO [launcher]: Starting browser ChromeHeadless
04 03 2021 11:58:08.805:DEBUG [launcher]: null -> BEING_CAPTURED
04 03 2021 11:58:08.805:DEBUG [temp-dir]: Creating temp dir at /tmp/karma-98770296
04 03 2021 11:58:08.806:DEBUG [launcher]: /usr/bin/chromium --user-data-dir=/tmp/karma-98770296 --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-background-timer-throttling --disable-renderer-backgrounding --disable-device-discovery-notifications --no-sandbox http://localhost:9876/?id=98770296 --headless --disable-gpu --remote-debugging-port=9222
04 03 2021 11:58:08.829:INFO [launcher]: Starting browser FirefoxHeadless
04 03 2021 11:58:08.829:DEBUG [launcher]: null -> BEING_CAPTURED
04 03 2021 11:58:08.830:DEBUG [temp-dir]: Creating temp dir at /tmp/karma-20283538
04 03 2021 11:58:08.832:DEBUG [launcher]: firefox http://localhost:9876/?id=20283538 -profile /tmp/karma-20283538 -no-remote -wait-for-browser -headless --start-debugger-server 6000
04 03 2021 11:58:09.552:DEBUG [web-server]: serving: /src/repo/node_modules/karma/static/client.html
04 03 2021 11:58:09.597:DEBUG [web-server]: serving: /src/repo/node_modules/karma/static/karma.js
04 03 2021 11:58:09.737:DEBUG [karma-server]: A browser has connected on socket Vz09BndZ63kyUrS8AAAB
04 03 2021 11:58:09.740:DEBUG [web-server]: upgrade /socket.io/?EIO=4&transport=websocket&sid=xfI4322WWNSedz_NAAAA
04 03 2021 11:58:09.774:DEBUG [Chrome Headless 87.0.4280.88 (Linux x86_64)]: undefined -> CONNECTED
04 03 2021 11:58:09.775:INFO [Chrome Headless 87.0.4280.88 (Linux x86_64)]: Connected on socket Vz09BndZ63kyUrS8AAAB with id 98770296
04 03 2021 11:58:09.778:DEBUG [launcher]: BEING_CAPTURED -> CAPTURED
04 03 2021 11:58:09.778:DEBUG [launcher]: ChromeHeadless (id 98770296) captured in 0.983 secs
04 03 2021 11:58:09.780:DEBUG [Chrome Headless 87.0.4280.88 (Linux x86_64)]: CONNECTED -> CONFIGURING
04 03 2021 11:58:09.798:DEBUG [middleware:karma]: custom files null null null
04 03 2021 11:58:09.799:DEBUG [middleware:karma]: Serving static request /context.html
04 03 2021 11:58:09.800:DEBUG [web-server]: serving: /src/repo/node_modules/karma/static/context.html
04 03 2021 11:58:09.832:DEBUG [web-server]: serving: /src/repo/node_modules/karma/static/context.js
04 03 2021 11:58:09.957:DEBUG [middleware:source-files]: Requesting /base/node_modules/qunitjs/qunit/qunit.js?fca9a0ac0c00fe782af607f1058a7bf250e4eb89
04 03 2021 11:58:09.958:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/qunitjs/qunit/qunit.js
04 03 2021 11:58:09.958:DEBUG [web-server]: serving (cached): /src/repo/node_modules/qunitjs/qunit/qunit.js
04 03 2021 11:58:09.960:DEBUG [middleware:source-files]: Requesting /base/node_modules/karma-qunit/lib/adapter.js?0932caacc3ac2a0121166f2adaa7d4da20d06400
04 03 2021 11:58:09.960:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/karma-qunit/lib/adapter.js
04 03 2021 11:58:09.960:DEBUG [web-server]: serving (cached): /src/repo/node_modules/karma-qunit/lib/adapter.js
04 03 2021 11:58:09.961:DEBUG [middleware:source-files]: Requesting /base/node_modules/jquery/dist/jquery.js?ad16c4a132ad2a03b4951185fed46d55397b5e88
04 03 2021 11:58:09.961:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/jquery/dist/jquery.js
04 03 2021 11:58:09.962:DEBUG [web-server]: serving (cached): /src/repo/node_modules/jquery/dist/jquery.js
04 03 2021 11:58:09.963:DEBUG [middleware:source-files]: Requesting /base/node_modules/jquery-ui/ui/jquery.ui.core.js?b1ff9a882edfaf9d3b02e63f78e7e947f69cbc90
04 03 2021 11:58:09.963:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/jquery-ui/ui/jquery.ui.core.js
04 03 2021 11:58:09.964:DEBUG [web-server]: serving (cached): /src/repo/node_modules/jquery-ui/ui/jquery.ui.core.js
04 03 2021 11:58:09.964:DEBUG [middleware:source-files]: Requesting /base/node_modules/jquery-ui/ui/jquery.ui.widget.js?78317046ff2f5e91616f404abbcda2f9c94e98f7
04 03 2021 11:58:09.964:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/jquery-ui/ui/jquery.ui.widget.js
04 03 2021 11:58:09.965:DEBUG [web-server]: serving (cached): /src/repo/node_modules/jquery-ui/ui/jquery.ui.widget.js
04 03 2021 11:58:09.966:DEBUG [middleware:source-files]: Requesting /base/node_modules/jquery-ui/ui/jquery.ui.position.js?ca5cf471c210fdf066c5ac5fe82d0bc8004e8574
04 03 2021 11:58:09.966:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/jquery-ui/ui/jquery.ui.position.js
04 03 2021 11:58:09.967:DEBUG [web-server]: serving (cached): /src/repo/node_modules/jquery-ui/ui/jquery.ui.position.js
04 03 2021 11:58:09.970:DEBUG [middleware:source-files]: Requesting /base/node_modules/jquery-ui/ui/jquery.ui.menu.js?499d87bf7b09c70529ad71234355d646f2bd8850
04 03 2021 11:58:09.970:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/jquery-ui/ui/jquery.ui.menu.js
04 03 2021 11:58:09.970:DEBUG [web-server]: serving (cached): /src/repo/node_modules/jquery-ui/ui/jquery.ui.menu.js
04 03 2021 11:58:09.979:DEBUG [middleware:source-files]: Requesting /base/node_modules/jquery-client/jquery.client.js?36a99f18033c422e724c2315fc9f3124b40f38b2
04 03 2021 11:58:09.979:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/jquery-client/jquery.client.js
04 03 2021 11:58:09.980:DEBUG [web-server]: serving (cached): /src/repo/node_modules/jquery-client/jquery.client.js
04 03 2021 11:58:09.983:DEBUG [middleware:source-files]: Requesting /base/node_modules/jquery-migrate/dist/jquery-migrate.js?f998ae177866e8c41bb877755065c81e819b1166
04 03 2021 11:58:09.983:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/jquery-migrate/dist/jquery-migrate.js
04 03 2021 11:58:09.983:DEBUG [web-server]: serving (cached): /src/repo/node_modules/jquery-migrate/dist/jquery-migrate.js
04 03 2021 11:58:09.985:DEBUG [middleware:source-files]: Requesting /base/node_modules/sinon/pkg/sinon.js?51ef4aa3de92c43bc4721758a1e445182048177d
04 03 2021 11:58:09.985:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/sinon/pkg/sinon.js
04 03 2021 11:58:09.986:DEBUG [web-server]: serving (cached): /src/repo/node_modules/sinon/pkg/sinon.js
04 03 2021 11:58:10.000:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/lib/util/util.inherit.js?f2c19ca2f0c60ba383d98673bd8c35e4f9035e39
04 03 2021 11:58:10.004:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/lib/util/util.inherit.js
04 03 2021 11:58:10.005:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/lib/util/util.inherit.js
04 03 2021 11:58:10.006:DEBUG [middleware:source-files]: Requesting /base/lib/jquery/jquery.PurposedCallbacks.js?4ae81774ff4b061cbce81326db6314e8aae79270
04 03 2021 11:58:10.006:DEBUG [middleware:source-files]: Fetching /src/repo/lib/jquery/jquery.PurposedCallbacks.js
04 03 2021 11:58:10.007:DEBUG [web-server]: serving (cached): /src/repo/lib/jquery/jquery.PurposedCallbacks.js
04 03 2021 11:58:10.009:DEBUG [middleware:source-files]: Requesting /base/lib/jquery/jquery.autocompletestring.js?9aebaa47dcf7285f98ffe9f64c01e7d7c91e6e27
04 03 2021 11:58:10.009:DEBUG [middleware:source-files]: Fetching /src/repo/lib/jquery/jquery.autocompletestring.js
04 03 2021 11:58:10.010:DEBUG [web-server]: serving (cached): /src/repo/lib/jquery/jquery.autocompletestring.js
04 03 2021 11:58:10.012:DEBUG [middleware:source-files]: Requesting /base/lib/jquery/jquery.AnimationEvent.js?b55c5a3ff9ed03b8ea939d2d6f1db74578ab51b6
04 03 2021 11:58:10.012:DEBUG [middleware:source-files]: Fetching /src/repo/lib/jquery/jquery.AnimationEvent.js
04 03 2021 11:58:10.013:DEBUG [web-server]: serving (cached): /src/repo/lib/jquery/jquery.AnimationEvent.js
04 03 2021 11:58:10.014:DEBUG [middleware:source-files]: Requesting /base/lib/jquery/jquery.animateWithEvent.js?a96276ad3e858776addab252faa6e272d485a4ff
04 03 2021 11:58:10.014:DEBUG [middleware:source-files]: Fetching /src/repo/lib/jquery/jquery.animateWithEvent.js
04 03 2021 11:58:10.015:DEBUG [web-server]: serving (cached): /src/repo/lib/jquery/jquery.animateWithEvent.js
04 03 2021 11:58:10.016:DEBUG [middleware:source-files]: Requesting /base/lib/jquery.event/jquery.event.special.eachchange.js?1637c0a55ca835e3fb7411b558dc91b7ca2abfa3
04 03 2021 11:58:10.017:DEBUG [middleware:source-files]: Fetching /src/repo/lib/jquery.event/jquery.event.special.eachchange.js
04 03 2021 11:58:10.017:DEBUG [web-server]: serving (cached): /src/repo/lib/jquery.event/jquery.event.special.eachchange.js
04 03 2021 11:58:10.018:DEBUG [middleware:source-files]: Requesting /base/lib/jquery.util/jquery.util.adaptlettercase.js?96b0030c5bae1b84edce32f25f9de8ee402952dd
04 03 2021 11:58:10.019:DEBUG [middleware:source-files]: Fetching /src/repo/lib/jquery.util/jquery.util.adaptlettercase.js
04 03 2021 11:58:10.019:DEBUG [web-server]: serving (cached): /src/repo/lib/jquery.util/jquery.util.adaptlettercase.js
04 03 2021 11:58:10.020:DEBUG [middleware:source-files]: Requesting /base/lib/jquery/jquery.focusAt.js?f05d9b51f55608f8ab4e93d18e46ed93d28e7ca5
04 03 2021 11:58:10.021:DEBUG [middleware:source-files]: Fetching /src/repo/lib/jquery/jquery.focusAt.js
04 03 2021 11:58:10.021:DEBUG [web-server]: serving (cached): /src/repo/lib/jquery/jquery.focusAt.js
04 03 2021 11:58:10.022:DEBUG [middleware:source-files]: Requesting /base/lib/jquery/jquery.inputautoexpand.js?a004331bd14ec311ff0526a60b6d23f0cdd3cf29
04 03 2021 11:58:10.022:DEBUG [middleware:source-files]: Fetching /src/repo/lib/jquery/jquery.inputautoexpand.js
04 03 2021 11:58:10.023:DEBUG [web-server]: serving (cached): /src/repo/lib/jquery/jquery.inputautoexpand.js
04 03 2021 11:58:10.024:DEBUG [middleware:source-files]: Requesting /base/lib/util/util.CombiningMessageProvider.js?5c5c638a678a1f6dfc9f95635e729acbbca36cdf
04 03 2021 11:58:10.025:DEBUG [middleware:source-files]: Fetching /src/repo/lib/util/util.CombiningMessageProvider.js
04 03 2021 11:58:10.025:DEBUG [web-server]: serving (cached): /src/repo/lib/util/util.CombiningMessageProvider.js
04 03 2021 11:58:10.026:DEBUG [middleware:source-files]: Requesting /base/lib/jquery.util/jquery.util.getscrollbarwidth.js?47b5e777ec5863550097ca2a8418f7e3549f3f76
04 03 2021 11:58:10.026:DEBUG [middleware:source-files]: Fetching /src/repo/lib/jquery.util/jquery.util.getscrollbarwidth.js
04 03 2021 11:58:10.027:DEBUG [web-server]: serving (cached): /src/repo/lib/jquery.util/jquery.util.getscrollbarwidth.js
04 03 2021 11:58:10.028:DEBUG [middleware:source-files]: Requesting /base/lib/util/util.ContentLanguages.js?c3872d2903bd59ac81d63eff45405fc22f5c3bcc
04 03 2021 11:58:10.028:DEBUG [middleware:source-files]: Fetching /src/repo/lib/util/util.ContentLanguages.js
04 03 2021 11:58:10.028:DEBUG [web-server]: serving (cached): /src/repo/lib/util/util.ContentLanguages.js
04 03 2021 11:58:10.032:DEBUG [middleware:source-files]: Requesting /base/lib/util/util.Extendable.js?40081d4ecf13219d0439f4c4a57df5d6ff96f5ca
04 03 2021 11:58:10.032:DEBUG [middleware:source-files]: Fetching /src/repo/lib/util/util.Extendable.js
04 03 2021 11:58:10.033:DEBUG [web-server]: serving (cached): /src/repo/lib/util/util.Extendable.js
04 03 2021 11:58:10.034:DEBUG [middleware:source-files]: Requesting /base/lib/util/util.HashMessageProvider.js?90019a9002e37cd4efe6638457ac471bb7861293
04 03 2021 11:58:10.035:DEBUG [middleware:source-files]: Fetching /src/repo/lib/util/util.HashMessageProvider.js
04 03 2021 11:58:10.035:DEBUG [web-server]: serving (cached): /src/repo/lib/util/util.HashMessageProvider.js
04 03 2021 11:58:10.036:DEBUG [middleware:source-files]: Requesting /base/lib/util/util.MessageProvider.js?8c17b2ff00e3c31d29acf4ab4568fcc36cf05b4c
04 03 2021 11:58:10.036:DEBUG [middleware:source-files]: Fetching /src/repo/lib/util/util.MessageProvider.js
04 03 2021 11:58:10.037:DEBUG [web-server]: serving (cached): /src/repo/lib/util/util.MessageProvider.js
04 03 2021 11:58:10.041:DEBUG [middleware:source-files]: Requesting /base/lib/util/util.Notifier.js?389546b8d6ab42893b246ce86cea8e37f5b43350
04 03 2021 11:58:10.041:DEBUG [middleware:source-files]: Fetching /src/repo/lib/util/util.Notifier.js
04 03 2021 11:58:10.041:DEBUG [web-server]: serving (cached): /src/repo/lib/util/util.Notifier.js
04 03 2021 11:58:10.043:DEBUG [middleware:source-files]: Requesting /base/lib/util/util.PrefixingMessageProvider.js?e642f8991b062af8106298c45e2da579bb0abadf
04 03 2021 11:58:10.044:DEBUG [middleware:source-files]: Fetching /src/repo/lib/util/util.PrefixingMessageProvider.js
04 03 2021 11:58:10.044:DEBUG [web-server]: serving (cached): /src/repo/lib/util/util.PrefixingMessageProvider.js
04 03 2021 11:58:10.047:DEBUG [middleware:source-files]: Requesting /base/lib/util/util.highlightSubstring.js?e7d2f2287b0244f99224f99836d9135027ac6a19
04 03 2021 11:58:10.047:DEBUG [middleware:source-files]: Fetching /src/repo/lib/util/util.highlightSubstring.js
04 03 2021 11:58:10.047:DEBUG [web-server]: serving (cached): /src/repo/lib/util/util.highlightSubstring.js
04 03 2021 11:58:10.048:DEBUG [middleware:source-files]: Requesting /base/lib/jquery.ui/jquery.ui.ooMenu.js?8471aabf359d3012eeb3fd56c42d45eee2d1f84a
04 03 2021 11:58:10.048:DEBUG [middleware:source-files]: Fetching /src/repo/lib/jquery.ui/jquery.ui.ooMenu.js
04 03 2021 11:58:10.049:DEBUG [web-server]: serving (cached): /src/repo/lib/jquery.ui/jquery.ui.ooMenu.js
04 03 2021 11:58:10.049:DEBUG [middleware:source-files]: Requesting /base/lib/jquery.ui/jquery.ui.suggester.js?258df444bf69437f26b29425672a034abeebd5c6
04 03 2021 11:58:10.050:DEBUG [middleware:source-files]: Fetching /src/repo/lib/jquery.ui/jquery.ui.suggester.js
04 03 2021 11:58:10.050:DEBUG [web-server]: serving (cached): /src/repo/lib/jquery.ui/jquery.ui.suggester.js
04 03 2021 11:58:10.060:DEBUG [middleware:source-files]: Requesting /base/lib/jquery.ui/jquery.ui.commonssuggester.js?a331f6804079c6429f394a0eb6a173d6ab26a261
04 03 2021 11:58:10.060:DEBUG [middleware:source-files]: Fetching /src/repo/lib/jquery.ui/jquery.ui.commonssuggester.js
04 03 2021 11:58:10.060:DEBUG [web-server]: serving (cached): /src/repo/lib/jquery.ui/jquery.ui.commonssuggester.js
04 03 2021 11:58:10.061:DEBUG [middleware:source-files]: Requesting /base/lib/jquery.ui/jquery.ui.inputextender.js?8b2114866f8486912cdaa685946a574410323291
04 03 2021 11:58:10.062:DEBUG [middleware:source-files]: Fetching /src/repo/lib/jquery.ui/jquery.ui.inputextender.js
04 03 2021 11:58:10.062:DEBUG [web-server]: serving (cached): /src/repo/lib/jquery.ui/jquery.ui.inputextender.js
04 03 2021 11:58:10.064:DEBUG [middleware:source-files]: Requesting /base/lib/jquery.ui/jquery.ui.languagesuggester.js?90488789a128d36cc23cc3dda84fa1a9226ee671
04 03 2021 11:58:10.065:DEBUG [middleware:source-files]: Fetching /src/repo/lib/jquery.ui/jquery.ui.languagesuggester.js
04 03 2021 11:58:10.065:DEBUG [web-server]: serving (cached): /src/repo/lib/jquery.ui/jquery.ui.languagesuggester.js
04 03 2021 11:58:10.067:DEBUG [middleware:source-files]: Requesting /base/lib/jquery.ui/jquery.ui.listrotator.js?53a7382679cf427f4aa4bde39e4135d86b9253fc
04 03 2021 11:58:10.067:DEBUG [middleware:source-files]: Fetching /src/repo/lib/jquery.ui/jquery.ui.listrotator.js
04 03 2021 11:58:10.067:DEBUG [web-server]: serving (cached): /src/repo/lib/jquery.ui/jquery.ui.listrotator.js
04 03 2021 11:58:10.068:DEBUG [middleware:source-files]: Requesting /base/lib/jquery.ui/jquery.ui.preview.js?a8372a41a26f50578f90587f9b390f55f091774f
04 03 2021 11:58:10.068:DEBUG [middleware:source-files]: Fetching /src/repo/lib/jquery.ui/jquery.ui.preview.js
04 03 2021 11:58:10.069:DEBUG [web-server]: serving (cached): /src/repo/lib/jquery.ui/jquery.ui.preview.js
04 03 2021 11:58:10.077:DEBUG [middleware:source-files]: Requesting /base/lib/jquery.ui/jquery.ui.toggler.js?6e04e454a7fcc94eed26fe10bea8a4036d718152
04 03 2021 11:58:10.077:DEBUG [middleware:source-files]: Fetching /src/repo/lib/jquery.ui/jquery.ui.toggler.js
04 03 2021 11:58:10.078:DEBUG [web-server]: serving (cached): /src/repo/lib/jquery.ui/jquery.ui.toggler.js
04 03 2021 11:58:10.080:DEBUG [middleware:source-files]: Requesting /base/lib/jquery.ui/jquery.ui.unitsuggester.js?74b76393741ca1486db3291459651ed7be6740e6
04 03 2021 11:58:10.080:DEBUG [middleware:source-files]: Fetching /src/repo/lib/jquery.ui/jquery.ui.unitsuggester.js
04 03 2021 11:58:10.081:DEBUG [web-server]: serving (cached): /src/repo/lib/jquery.ui/jquery.ui.unitsuggester.js
04 03 2021 11:58:10.083:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/lib/globeCoordinate/globeCoordinate.js?0ebe4f48aa04cd4c81156933e88ca28cc9415ad0
04 03 2021 11:58:10.083:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/lib/globeCoordinate/globeCoordinate.js
04 03 2021 11:58:10.084:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/lib/globeCoordinate/globeCoordinate.js
04 03 2021 11:58:10.086:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/dataValues.js?6fcca5e5dd4e82e8cff457966d66a29fc663b342
04 03 2021 11:58:10.086:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/dataValues.js
04 03 2021 11:58:10.087:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/dataValues.js
04 03 2021 11:58:10.088:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/valueFormatters/formatters/NullFormatter.js?3ac98026bac7d774e792d020cf8e011162fb93f5
04 03 2021 11:58:10.088:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/valueFormatters/formatters/NullFormatter.js
04 03 2021 11:58:10.089:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/valueFormatters/formatters/NullFormatter.js
04 03 2021 11:58:10.089:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/DataValue.js?7f32bbbe4ef2cf9561f3b7dcc99b3e240f67df79
04 03 2021 11:58:10.089:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/DataValue.js
04 03 2021 11:58:10.090:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/DataValue.js
04 03 2021 11:58:10.090:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/valueFormatters/valueFormatters.js?aed20c008cef61010f604ebaa9cce8d72f576abe
04 03 2021 11:58:10.091:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/valueFormatters/valueFormatters.js
04 03 2021 11:58:10.091:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/valueFormatters/valueFormatters.js
04 03 2021 11:58:10.091:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/valueFormatters/formatters/ValueFormatter.js?2090201767d73f4d4c5d333182aed53635eb4c66
04 03 2021 11:58:10.092:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/valueFormatters/formatters/ValueFormatter.js
04 03 2021 11:58:10.092:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/valueFormatters/formatters/ValueFormatter.js
04 03 2021 11:58:10.099:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/valueFormatters/formatters/StringFormatter.js?65cc4f47e92a82600ebdb9805fce9cd9f4cd59b0
04 03 2021 11:58:10.099:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/valueFormatters/formatters/StringFormatter.js
04 03 2021 11:58:10.099:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/valueFormatters/formatters/StringFormatter.js
04 03 2021 11:58:10.101:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/valueParsers/valueParsers.js?0da5da1c03c830d690fdb24a75b5e16e4c25dc13
04 03 2021 11:58:10.101:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/valueParsers/valueParsers.js
04 03 2021 11:58:10.101:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/valueParsers/valueParsers.js
04 03 2021 11:58:10.102:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/valueParsers/ValueParserStore.js?33839675de6f14ca0c4324350a70112176563a2f
04 03 2021 11:58:10.103:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/valueParsers/ValueParserStore.js
04 03 2021 11:58:10.103:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/valueParsers/ValueParserStore.js
04 03 2021 11:58:10.105:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/valueParsers/parsers/ValueParser.js?2649bf01245c263a9f828f97593c25f9e02d288c
04 03 2021 11:58:10.105:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/valueParsers/parsers/ValueParser.js
04 03 2021 11:58:10.105:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/valueParsers/parsers/ValueParser.js
04 03 2021 11:58:10.107:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/valueParsers/parsers/BoolParser.js?806b88c711b792e8fe8709b3b5deac0566d2e7f3
04 03 2021 11:58:10.107:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/valueParsers/parsers/BoolParser.js
04 03 2021 11:58:10.107:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/valueParsers/parsers/BoolParser.js
04 03 2021 11:58:10.114:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/valueParsers/parsers/FloatParser.js?0102b9eb5526c59742dbc2f8dfe78f82ed7d1490
04 03 2021 11:58:10.114:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/valueParsers/parsers/FloatParser.js
04 03 2021 11:58:10.114:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/valueParsers/parsers/FloatParser.js
04 03 2021 11:58:10.117:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/valueParsers/parsers/IntParser.js?25a12deb5384e72101b27c26457f86822ea547c5
04 03 2021 11:58:10.118:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/valueParsers/parsers/IntParser.js
04 03 2021 11:58:10.118:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/valueParsers/parsers/IntParser.js
04 03 2021 11:58:10.120:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/valueParsers/parsers/NullParser.js?b19b27af9f911ad962682a9d3cd8252a8db7e873
04 03 2021 11:58:10.120:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/valueParsers/parsers/NullParser.js
04 03 2021 11:58:10.120:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/valueParsers/parsers/NullParser.js
04 03 2021 11:58:10.123:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/valueParsers/parsers/StringParser.js?c1fa273b961c68320a34b1ddd7c35db3f8cabed1
04 03 2021 11:58:10.123:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/valueParsers/parsers/StringParser.js
04 03 2021 11:58:10.123:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/valueParsers/parsers/StringParser.js
04 03 2021 11:58:10.125:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/values/BoolValue.js?fd62ead098ed92c67a5f88347c2a94eee80454d0
04 03 2021 11:58:10.125:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/values/BoolValue.js
04 03 2021 11:58:10.126:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/values/BoolValue.js
04 03 2021 11:58:10.130:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/values/DecimalValue.js?939252ef9023496353412b239c0f9b289dc0bb47
04 03 2021 11:58:10.131:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/values/DecimalValue.js
04 03 2021 11:58:10.131:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/values/DecimalValue.js
04 03 2021 11:58:10.133:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/values/GlobeCoordinateValue.js?be43f7101d866cca4310876c4865d5f5aa2ff45d
04 03 2021 11:58:10.134:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/values/GlobeCoordinateValue.js
04 03 2021 11:58:10.134:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/values/GlobeCoordinateValue.js
04 03 2021 11:58:10.136:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/values/MonolingualTextValue.js?f88cdc59a66e4bf09e5ab3ea87048ac10b29bef3
04 03 2021 11:58:10.136:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/values/MonolingualTextValue.js
04 03 2021 11:58:10.136:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/values/MonolingualTextValue.js
04 03 2021 11:58:10.139:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/values/MultilingualTextValue.js?572c381c54f8e7d517d489f5947cf16bd96de133
04 03 2021 11:58:10.139:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/values/MultilingualTextValue.js
04 03 2021 11:58:10.140:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/values/MultilingualTextValue.js
04 03 2021 11:58:10.142:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/values/NumberValue.js?ab4b658d00b7849bdd4ff6e4dc4a19f36aca6c1f
04 03 2021 11:58:10.142:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/values/NumberValue.js
04 03 2021 11:58:10.142:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/values/NumberValue.js
Chrome Headless 87.0.4280.88 (Linux x86_64) LOG: 'JQMIGRATE: Migrate is installed with logging active, version 3.3.2'

04 03 2021 11:58:10.158:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/values/QuantityValue.js?e1e0151bc804251639ef7db19cd2b2d611f0bc7c
04 03 2021 11:58:10.159:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/values/QuantityValue.js
04 03 2021 11:58:10.159:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/values/QuantityValue.js
04 03 2021 11:58:10.162:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/values/StringValue.js?0a527734a6d986dd92508f1c815eb14b86daf00a
04 03 2021 11:58:10.162:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/values/StringValue.js
04 03 2021 11:58:10.163:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/values/StringValue.js
04 03 2021 11:58:10.163:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/values/TimeValue.js?e3f99fa0ccc088a1c9d5ae4cb4a58c0609916442
04 03 2021 11:58:10.163:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/values/TimeValue.js
04 03 2021 11:58:10.164:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/values/TimeValue.js
04 03 2021 11:58:10.166:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/values/UnDeserializableValue.js?c599842e1d9f044a28a19a7313ae9e79075bacc7
04 03 2021 11:58:10.166:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/values/UnDeserializableValue.js
04 03 2021 11:58:10.167:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/values/UnDeserializableValue.js
04 03 2021 11:58:10.169:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/values/UnknownValue.js?59c1a2f5227c795b584d84f5490d612ad19477d2
04 03 2021 11:58:10.170:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/values/UnknownValue.js
04 03 2021 11:58:10.170:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/values/UnknownValue.js
04 03 2021 11:58:10.171:DEBUG [middleware:source-files]: Requesting /base/src/jquery.valueview.valueview.js?336e393cee6afdb64402d91dd0b9a6a4e351b04c
04 03 2021 11:58:10.171:DEBUG [middleware:source-files]: Fetching /src/repo/src/jquery.valueview.valueview.js
04 03 2021 11:58:10.172:DEBUG [web-server]: serving (cached): /src/repo/src/jquery.valueview.valueview.js
04 03 2021 11:58:10.173:DEBUG [middleware:source-files]: Requesting /base/src/jquery.valueview.Expert.js?ace2d2536ab9473325d9f4d5ba58a1e2229078b0
04 03 2021 11:58:10.173:DEBUG [middleware:source-files]: Fetching /src/repo/src/jquery.valueview.Expert.js
04 03 2021 11:58:10.174:DEBUG [web-server]: serving (cached): /src/repo/src/jquery.valueview.Expert.js
04 03 2021 11:58:10.175:DEBUG [middleware:source-files]: Requesting /base/src/jquery.valueview.ExpertStore.js?0b207fab9a469ef0a3e5c8a5c9a99e0d05ff0071
04 03 2021 11:58:10.175:DEBUG [middleware:source-files]: Fetching /src/repo/src/jquery.valueview.ExpertStore.js
04 03 2021 11:58:10.176:DEBUG [web-server]: serving (cached): /src/repo/src/jquery.valueview.ExpertStore.js
04 03 2021 11:58:10.177:DEBUG [middleware:source-files]: Requesting /base/src/jquery.valueview.experts.js?d15f7e846bdc0a307d630749f664790fc917a8a1
04 03 2021 11:58:10.177:DEBUG [middleware:source-files]: Fetching /src/repo/src/jquery.valueview.experts.js
04 03 2021 11:58:10.177:DEBUG [web-server]: serving (cached): /src/repo/src/jquery.valueview.experts.js
04 03 2021 11:58:10.180:DEBUG [middleware:source-files]: Requesting /base/src/jquery.valueview.js?931265c49d03deefcee707811edbab7ea7d01723
04 03 2021 11:58:10.180:DEBUG [middleware:source-files]: Fetching /src/repo/src/jquery.valueview.js
04 03 2021 11:58:10.180:DEBUG [web-server]: serving (cached): /src/repo/src/jquery.valueview.js
04 03 2021 11:58:10.181:DEBUG [middleware:source-files]: Requesting /base/src/ExpertExtender/ExpertExtender.js?30ab6eab981a878c5cd350f3983faf6e6f7eed12
04 03 2021 11:58:10.181:DEBUG [middleware:source-files]: Fetching /src/repo/src/ExpertExtender/ExpertExtender.js
04 03 2021 11:58:10.181:DEBUG [web-server]: serving (cached): /src/repo/src/ExpertExtender/ExpertExtender.js
04 03 2021 11:58:10.182:DEBUG [middleware:source-files]: Requesting /base/src/jquery.valueview.ViewState.js?3b26cb7c1891fc9aa208a06e2870a310d6f365c3
04 03 2021 11:58:10.182:DEBUG [middleware:source-files]: Fetching /src/repo/src/jquery.valueview.ViewState.js
04 03 2021 11:58:10.182:DEBUG [web-server]: serving (cached): /src/repo/src/jquery.valueview.ViewState.js
04 03 2021 11:58:10.183:DEBUG [middleware:source-files]: Requesting /base/src/ExpertExtender/ExpertExtender.LanguageSelector.js?4a66696bc5725f0b004438f057e9a3c086952638
04 03 2021 11:58:10.183:DEBUG [middleware:source-files]: Fetching /src/repo/src/ExpertExtender/ExpertExtender.LanguageSelector.js
04 03 2021 11:58:10.184:DEBUG [web-server]: serving (cached): /src/repo/src/ExpertExtender/ExpertExtender.LanguageSelector.js
04 03 2021 11:58:10.185:DEBUG [middleware:source-files]: Requesting /base/src/ExpertExtender/ExpertExtender.Container.js?0a50d5ba914d7bbc1efd06c7cbeeea4bfe2e6ec2
04 03 2021 11:58:10.185:DEBUG [middleware:source-files]: Fetching /src/repo/src/ExpertExtender/ExpertExtender.Container.js
04 03 2021 11:58:10.185:DEBUG [web-server]: serving (cached): /src/repo/src/ExpertExtender/ExpertExtender.Container.js
04 03 2021 11:58:10.202:DEBUG [middleware:source-files]: Requesting /base/src/ExpertExtender/ExpertExtender.Listrotator.js?ee00d665450bdd31434f9c337c52fdf9fc46b53e
04 03 2021 11:58:10.203:DEBUG [middleware:source-files]: Fetching /src/repo/src/ExpertExtender/ExpertExtender.Listrotator.js
04 03 2021 11:58:10.203:DEBUG [web-server]: serving (cached): /src/repo/src/ExpertExtender/ExpertExtender.Listrotator.js
04 03 2021 11:58:10.206:DEBUG [middleware:source-files]: Requesting /base/src/ExpertExtender/ExpertExtender.Preview.js?cb8fff538b7bf01986ad13d3d040c2df9d9ec44a
04 03 2021 11:58:10.207:DEBUG [middleware:source-files]: Fetching /src/repo/src/ExpertExtender/ExpertExtender.Preview.js
04 03 2021 11:58:10.207:DEBUG [web-server]: serving (cached): /src/repo/src/ExpertExtender/ExpertExtender.Preview.js
04 03 2021 11:58:10.210:DEBUG [middleware:source-files]: Requesting /base/src/ExpertExtender/ExpertExtender.UnitSelector.js?0b2a89c5ccad128edfd3609a96befee67ccf0c8d
04 03 2021 11:58:10.210:DEBUG [middleware:source-files]: Fetching /src/repo/src/ExpertExtender/ExpertExtender.UnitSelector.js
04 03 2021 11:58:10.210:DEBUG [web-server]: serving (cached): /src/repo/src/ExpertExtender/ExpertExtender.UnitSelector.js
04 03 2021 11:58:10.212:DEBUG [middleware:source-files]: Requesting /base/src/experts/StringValue.js?13e89eeb82d83d8f9f137680903ad66bf4d085c9
04 03 2021 11:58:10.212:DEBUG [middleware:source-files]: Fetching /src/repo/src/experts/StringValue.js
04 03 2021 11:58:10.213:DEBUG [web-server]: serving (cached): /src/repo/src/experts/StringValue.js
04 03 2021 11:58:10.213:DEBUG [middleware:source-files]: Requesting /base/src/experts/CommonsMediaType.js?1af5d5a5febf58aa02d4686ab72624797d1580cc
04 03 2021 11:58:10.214:DEBUG [middleware:source-files]: Fetching /src/repo/src/experts/CommonsMediaType.js
04 03 2021 11:58:10.214:DEBUG [web-server]: serving (cached): /src/repo/src/experts/CommonsMediaType.js
04 03 2021 11:58:10.217:DEBUG [middleware:source-files]: Requesting /base/src/experts/EmptyValue.js?fbe85ee6a129c81b36fb8f14b63a08cc2737426f
04 03 2021 11:58:10.217:DEBUG [middleware:source-files]: Fetching /src/repo/src/experts/EmptyValue.js
04 03 2021 11:58:10.218:DEBUG [web-server]: serving (cached): /src/repo/src/experts/EmptyValue.js
04 03 2021 11:58:10.219:DEBUG [middleware:source-files]: Requesting /base/src/experts/GeoShape.js?2ef96a0dd012f47ce8ddc91e6bb70b16cee0a642
04 03 2021 11:58:10.219:DEBUG [middleware:source-files]: Fetching /src/repo/src/experts/GeoShape.js
04 03 2021 11:58:10.220:DEBUG [web-server]: serving (cached): /src/repo/src/experts/GeoShape.js
04 03 2021 11:58:10.223:DEBUG [middleware:source-files]: Requesting /base/src/experts/GlobeCoordinateInput.js?6a015419de69a9b64367ac50ef7c9dd22812eab0
04 03 2021 11:58:10.224:DEBUG [middleware:source-files]: Fetching /src/repo/src/experts/GlobeCoordinateInput.js
04 03 2021 11:58:10.224:DEBUG [web-server]: serving (cached): /src/repo/src/experts/GlobeCoordinateInput.js
04 03 2021 11:58:10.226:DEBUG [middleware:source-files]: Requesting /base/src/experts/MonolingualText.js?147625356a94dbfaf62d8b15fddc4a6404595904
04 03 2021 11:58:10.226:DEBUG [middleware:source-files]: Fetching /src/repo/src/experts/MonolingualText.js
04 03 2021 11:58:10.226:DEBUG [web-server]: serving (cached): /src/repo/src/experts/MonolingualText.js
04 03 2021 11:58:10.227:DEBUG [middleware:source-files]: Requesting /base/src/experts/QuantityInput.js?61b36b749cf8399e53db0bdb742f6f3d7156c883
04 03 2021 11:58:10.228:DEBUG [middleware:source-files]: Fetching /src/repo/src/experts/QuantityInput.js
04 03 2021 11:58:10.228:DEBUG [web-server]: serving (cached): /src/repo/src/experts/QuantityInput.js
04 03 2021 11:58:10.229:DEBUG [middleware:source-files]: Requesting /base/src/experts/SuggestedStringValue.js?2edd65d1deae9746d2468bdcb2238d51f339d922
04 03 2021 11:58:10.230:DEBUG [middleware:source-files]: Fetching /src/repo/src/experts/SuggestedStringValue.js
04 03 2021 11:58:10.230:DEBUG [web-server]: serving (cached): /src/repo/src/experts/SuggestedStringValue.js
04 03 2021 11:58:10.231:DEBUG [middleware:source-files]: Requesting /base/src/experts/TabularData.js?a032e5825451a30665ae0f80ed1a193447284f6d
04 03 2021 11:58:10.232:DEBUG [middleware:source-files]: Fetching /src/repo/src/experts/TabularData.js
04 03 2021 11:58:10.232:DEBUG [web-server]: serving (cached): /src/repo/src/experts/TabularData.js
04 03 2021 11:58:10.233:DEBUG [middleware:source-files]: Requesting /base/src/experts/TimeInput.js?744d6cf5247fb870a994a7df1191ca3952952097
04 03 2021 11:58:10.233:DEBUG [middleware:source-files]: Fetching /src/repo/src/experts/TimeInput.js
04 03 2021 11:58:10.234:DEBUG [web-server]: serving (cached): /src/repo/src/experts/TimeInput.js
04 03 2021 11:58:10.236:DEBUG [middleware:source-files]: Requesting /base/src/experts/UnDeserializableValue.js?73245ade6c68a980a095ff841e7a6859ff46f183
04 03 2021 11:58:10.236:DEBUG [middleware:source-files]: Fetching /src/repo/src/experts/UnDeserializableValue.js
04 03 2021 11:58:10.237:DEBUG [web-server]: serving (cached): /src/repo/src/experts/UnDeserializableValue.js
04 03 2021 11:58:10.239:DEBUG [middleware:source-files]: Requesting /base/src/experts/UnsupportedValue.js?64fe1fc1f061b502576fb262d1f939fad69ba4a1
04 03 2021 11:58:10.239:DEBUG [middleware:source-files]: Fetching /src/repo/src/experts/UnsupportedValue.js
04 03 2021 11:58:10.239:DEBUG [web-server]: serving (cached): /src/repo/src/experts/UnsupportedValue.js
04 03 2021 11:58:10.240:DEBUG [middleware:source-files]: Requesting /base/tests/sinon-qunit.js?064e800bf5673cf9cbf76ca775238829f065ae15
04 03 2021 11:58:10.240:DEBUG [middleware:source-files]: Fetching /src/repo/tests/sinon-qunit.js
04 03 2021 11:58:10.241:DEBUG [web-server]: serving (cached): /src/repo/tests/sinon-qunit.js
04 03 2021 11:58:10.243:DEBUG [middleware:source-files]: Requesting /base/tests/lib/jquery/jquery.AnimationEvent.tests.js?7021f41ce27ff9fc0c27984821fa9ec775ef142f
04 03 2021 11:58:10.244:DEBUG [middleware:source-files]: Fetching /src/repo/tests/lib/jquery/jquery.AnimationEvent.tests.js
04 03 2021 11:58:10.244:DEBUG [web-server]: serving (cached): /src/repo/tests/lib/jquery/jquery.AnimationEvent.tests.js
04 03 2021 11:58:10.246:DEBUG [middleware:source-files]: Requesting /base/tests/lib/jquery/jquery.PurposedCallbacks.tests.js?f396309671508bc454c8220724bbf140eb113f07
04 03 2021 11:58:10.246:DEBUG [middleware:source-files]: Fetching /src/repo/tests/lib/jquery/jquery.PurposedCallbacks.tests.js
04 03 2021 11:58:10.247:DEBUG [web-server]: serving (cached): /src/repo/tests/lib/jquery/jquery.PurposedCallbacks.tests.js
04 03 2021 11:58:10.248:DEBUG [middleware:source-files]: Requesting /base/tests/lib/jquery/jquery.animateWithEvent.tests.js?da12980e6a3e46d8398885914a647b44a1ed6c09
04 03 2021 11:58:10.248:DEBUG [middleware:source-files]: Fetching /src/repo/tests/lib/jquery/jquery.animateWithEvent.tests.js
04 03 2021 11:58:10.248:DEBUG [web-server]: serving (cached): /src/repo/tests/lib/jquery/jquery.animateWithEvent.tests.js
04 03 2021 11:58:10.250:DEBUG [middleware:source-files]: Requesting /base/tests/lib/jquery/jquery.autocompletestring.tests.js?1d2af669c5dc070927ba5afe0c92ac0f29aba877
04 03 2021 11:58:10.250:DEBUG [middleware:source-files]: Fetching /src/repo/tests/lib/jquery/jquery.autocompletestring.tests.js
04 03 2021 11:58:10.250:DEBUG [web-server]: serving (cached): /src/repo/tests/lib/jquery/jquery.autocompletestring.tests.js
04 03 2021 11:58:10.251:DEBUG [middleware:source-files]: Requesting /base/tests/lib/jquery/jquery.focusAt.tests.js?a1d23f0a097f39a6c4fb993436ab12cf61acc867
04 03 2021 11:58:10.252:DEBUG [middleware:source-files]: Fetching /src/repo/tests/lib/jquery/jquery.focusAt.tests.js
04 03 2021 11:58:10.252:DEBUG [web-server]: serving (cached): /src/repo/tests/lib/jquery/jquery.focusAt.tests.js
04 03 2021 11:58:10.253:DEBUG [middleware:source-files]: Requesting /base/tests/lib/jquery/jquery.inputautoexpand.tests.js?c1d5a8f317f68f67d139b51cf6a7f3b334f449ad
04 03 2021 11:58:10.254:DEBUG [middleware:source-files]: Fetching /src/repo/tests/lib/jquery/jquery.inputautoexpand.tests.js
04 03 2021 11:58:10.254:DEBUG [web-server]: serving (cached): /src/repo/tests/lib/jquery/jquery.inputautoexpand.tests.js
04 03 2021 11:58:10.255:DEBUG [middleware:source-files]: Requesting /base/tests/lib/jquery.event/jquery.event.special.eachchange.tests.js?e7bf76e2e891330e1bbcc60573563324fbcbf4c3
04 03 2021 11:58:10.255:DEBUG [middleware:source-files]: Fetching /src/repo/tests/lib/jquery.event/jquery.event.special.eachchange.tests.js
04 03 2021 11:58:10.256:DEBUG [web-server]: serving (cached): /src/repo/tests/lib/jquery.event/jquery.event.special.eachchange.tests.js
04 03 2021 11:58:10.257:DEBUG [middleware:source-files]: Requesting /base/tests/lib/jquery.ui/jquery.ui.commonssuggester.tests.js?11990b6ab8b026f7ab5bd6cf0ece86b3c04adbd4
04 03 2021 11:58:10.258:DEBUG [middleware:source-files]: Fetching /src/repo/tests/lib/jquery.ui/jquery.ui.commonssuggester.tests.js
04 03 2021 11:58:10.258:DEBUG [web-server]: serving (cached): /src/repo/tests/lib/jquery.ui/jquery.ui.commonssuggester.tests.js
04 03 2021 11:58:10.259:DEBUG [middleware:source-files]: Requesting /base/tests/lib/jquery.ui/jquery.ui.inputextender.tests.js?d3be97b72c67c8513ac46495d5c6f96d20af4d8b
04 03 2021 11:58:10.259:DEBUG [middleware:source-files]: Fetching /src/repo/tests/lib/jquery.ui/jquery.ui.inputextender.tests.js
04 03 2021 11:58:10.260:DEBUG [web-server]: serving (cached): /src/repo/tests/lib/jquery.ui/jquery.ui.inputextender.tests.js
04 03 2021 11:58:10.262:DEBUG [middleware:source-files]: Requesting /base/tests/lib/jquery.ui/jquery.ui.listrotator.tests.js?d6a6a9d3b2af399271a87e447e6f40621af50c7f
04 03 2021 11:58:10.262:DEBUG [middleware:source-files]: Fetching /src/repo/tests/lib/jquery.ui/jquery.ui.listrotator.tests.js
04 03 2021 11:58:10.263:DEBUG [web-server]: serving (cached): /src/repo/tests/lib/jquery.ui/jquery.ui.listrotator.tests.js
04 03 2021 11:58:10.264:DEBUG [middleware:source-files]: Requesting /base/tests/lib/jquery.ui/jquery.ui.ooMenu.tests.js?44bf1e5ae214f89047b374d3acb4d155b87963de
04 03 2021 11:58:10.264:DEBUG [middleware:source-files]: Fetching /src/repo/tests/lib/jquery.ui/jquery.ui.ooMenu.tests.js
04 03 2021 11:58:10.265:DEBUG [web-server]: serving (cached): /src/repo/tests/lib/jquery.ui/jquery.ui.ooMenu.tests.js
04 03 2021 11:58:10.266:DEBUG [middleware:source-files]: Requesting /base/tests/lib/jquery.ui/jquery.ui.preview.tests.js?04072d79d92287e1ae927d4b594d700bc63700b4
04 03 2021 11:58:10.266:DEBUG [middleware:source-files]: Fetching /src/repo/tests/lib/jquery.ui/jquery.ui.preview.tests.js
04 03 2021 11:58:10.267:DEBUG [web-server]: serving (cached): /src/repo/tests/lib/jquery.ui/jquery.ui.preview.tests.js
04 03 2021 11:58:10.268:DEBUG [middleware:source-files]: Requesting /base/tests/lib/jquery.ui/jquery.ui.suggester.tests.js?e4f5429992b24e1eae433d2bf635bf3ac0d2556b
04 03 2021 11:58:10.268:DEBUG [middleware:source-files]: Fetching /src/repo/tests/lib/jquery.ui/jquery.ui.suggester.tests.js
04 03 2021 11:58:10.269:DEBUG [web-server]: serving (cached): /src/repo/tests/lib/jquery.ui/jquery.ui.suggester.tests.js
04 03 2021 11:58:10.270:DEBUG [middleware:source-files]: Requesting /base/tests/lib/jquery.ui/jquery.ui.toggler.tests.js?dfb7e093a3346cc6b4ae6ee72b8f2e0e95d1c658
04 03 2021 11:58:10.270:DEBUG [middleware:source-files]: Fetching /src/repo/tests/lib/jquery.ui/jquery.ui.toggler.tests.js
04 03 2021 11:58:10.271:DEBUG [web-server]: serving (cached): /src/repo/tests/lib/jquery.ui/jquery.ui.toggler.tests.js
04 03 2021 11:58:10.273:DEBUG [middleware:source-files]: Requesting /base/tests/lib/jquery.util/jquery.util.adaptlettercase.tests.js?85224589fdd48c5aec846fa089e06b5cb46172fe
04 03 2021 11:58:10.274:DEBUG [middleware:source-files]: Fetching /src/repo/tests/lib/jquery.util/jquery.util.adaptlettercase.tests.js
04 03 2021 11:58:10.275:DEBUG [web-server]: serving (cached): /src/repo/tests/lib/jquery.util/jquery.util.adaptlettercase.tests.js
04 03 2021 11:58:10.276:DEBUG [middleware:source-files]: Requesting /base/tests/lib/jquery.util/jquery.util.getscrollbarwidth.tests.js?5e2113326f276ecd4f9ebf5e532192fe627fc321
04 03 2021 11:58:10.277:DEBUG [middleware:source-files]: Fetching /src/repo/tests/lib/jquery.util/jquery.util.getscrollbarwidth.tests.js
04 03 2021 11:58:10.277:DEBUG [web-server]: serving (cached): /src/repo/tests/lib/jquery.util/jquery.util.getscrollbarwidth.tests.js
04 03 2021 11:58:10.278:DEBUG [middleware:source-files]: Requesting /base/tests/lib/util/util.HashMessageProvider.tests.js?c95cace7ec684f830638d7e21447775b4dfbd463
04 03 2021 11:58:10.278:DEBUG [middleware:source-files]: Fetching /src/repo/tests/lib/util/util.HashMessageProvider.tests.js
04 03 2021 11:58:10.279:DEBUG [web-server]: serving (cached): /src/repo/tests/lib/util/util.HashMessageProvider.tests.js
04 03 2021 11:58:10.280:DEBUG [middleware:source-files]: Requesting /base/tests/lib/util/util.Notifier.tests.js?ff2acac76939bf3eeef072f9cabcab4ae1e83bf2
04 03 2021 11:58:10.280:DEBUG [middleware:source-files]: Fetching /src/repo/tests/lib/util/util.Notifier.tests.js
04 03 2021 11:58:10.280:DEBUG [web-server]: serving (cached): /src/repo/tests/lib/util/util.Notifier.tests.js
04 03 2021 11:58:10.282:DEBUG [middleware:source-files]: Requesting /base/tests/lib/util/util.highlightSubstring.tests.js?909281b35444d734666e1a93510782573b0cbac4
04 03 2021 11:58:10.282:DEBUG [middleware:source-files]: Fetching /src/repo/tests/lib/util/util.highlightSubstring.tests.js
04 03 2021 11:58:10.283:DEBUG [web-server]: serving (cached): /src/repo/tests/lib/util/util.highlightSubstring.tests.js
04 03 2021 11:58:10.284:DEBUG [middleware:source-files]: Requesting /base/tests/src/jquery.valueview.tests.MockExpert.js?853bc5ac49010ae9439bf5614758d7924da86534
04 03 2021 11:58:10.284:DEBUG [middleware:source-files]: Fetching /src/repo/tests/src/jquery.valueview.tests.MockExpert.js
04 03 2021 11:58:10.285:DEBUG [web-server]: serving (cached): /src/repo/tests/src/jquery.valueview.tests.MockExpert.js
04 03 2021 11:58:10.286:DEBUG [middleware:source-files]: Requesting /base/tests/src/jquery.valueview.ExpertStore.tests.js?a4bf7f13e189c1cbaea3061c4f2095a4e3fb7e70
04 03 2021 11:58:10.286:DEBUG [middleware:source-files]: Fetching /src/repo/tests/src/jquery.valueview.ExpertStore.tests.js
04 03 2021 11:58:10.288:DEBUG [web-server]: serving (cached): /src/repo/tests/src/jquery.valueview.ExpertStore.tests.js
04 03 2021 11:58:10.290:DEBUG [middleware:source-files]: Requesting /base/tests/src/jquery.valueview.tests.MockViewState.js?a384cda51e5880046a573b99e5dc4421df11b30f
04 03 2021 11:58:10.290:DEBUG [middleware:source-files]: Fetching /src/repo/tests/src/jquery.valueview.tests.MockViewState.js
04 03 2021 11:58:10.290:DEBUG [web-server]: serving (cached): /src/repo/tests/src/jquery.valueview.tests.MockViewState.js
04 03 2021 11:58:10.294:DEBUG [middleware:source-files]: Requesting /base/tests/src/jquery.valueview.tests.MockViewState.tests.js?755c451c6bedc02f8ccc9ba846defaecd455cdd8
04 03 2021 11:58:10.294:DEBUG [middleware:source-files]: Fetching /src/repo/tests/src/jquery.valueview.tests.MockViewState.tests.js
04 03 2021 11:58:10.295:DEBUG [web-server]: serving (cached): /src/repo/tests/src/jquery.valueview.tests.MockViewState.tests.js
04 03 2021 11:58:10.297:DEBUG [middleware:source-files]: Requesting /base/tests/src/jquery.valueview.tests.testExpert.js?148c503e2c2d2a2fb275fc65580be9c7957daae3
04 03 2021 11:58:10.297:DEBUG [middleware:source-files]: Fetching /src/repo/tests/src/jquery.valueview.tests.testExpert.js
04 03 2021 11:58:10.297:DEBUG [web-server]: serving (cached): /src/repo/tests/src/jquery.valueview.tests.testExpert.js
04 03 2021 11:58:10.299:DEBUG [middleware:source-files]: Requesting /base/tests/src/jquery.valueview.valueview.tests.js?230936faf0487ec10c13bed0073ce81d65882d9a
04 03 2021 11:58:10.299:DEBUG [middleware:source-files]: Fetching /src/repo/tests/src/jquery.valueview.valueview.tests.js
04 03 2021 11:58:10.300:DEBUG [web-server]: serving (cached): /src/repo/tests/src/jquery.valueview.valueview.tests.js
04 03 2021 11:58:10.303:DEBUG [middleware:source-files]: Requesting /base/tests/src/experts/GlobeCoordinateInput.tests.js?581d967420795dfc8f11da3d38ed56ddd22d6ac2
04 03 2021 11:58:10.303:DEBUG [middleware:source-files]: Fetching /src/repo/tests/src/experts/GlobeCoordinateInput.tests.js
04 03 2021 11:58:10.303:DEBUG [web-server]: serving (cached): /src/repo/tests/src/experts/GlobeCoordinateInput.tests.js
04 03 2021 11:58:10.306:DEBUG [middleware:source-files]: Requesting /base/tests/src/experts/MonolingualText.tests.js?033cb362ce34877ae6c4d5e8eec366c75b03f96f
04 03 2021 11:58:10.306:DEBUG [middleware:source-files]: Fetching /src/repo/tests/src/experts/MonolingualText.tests.js
04 03 2021 11:58:10.306:DEBUG [web-server]: serving (cached): /src/repo/tests/src/experts/MonolingualText.tests.js
04 03 2021 11:58:10.309:DEBUG [middleware:source-files]: Requesting /base/tests/src/experts/QuantityInput.tests.js?027f4f5dda5518cf56b85d10f084f3c641b41d40
04 03 2021 11:58:10.309:DEBUG [middleware:source-files]: Fetching /src/repo/tests/src/experts/QuantityInput.tests.js
04 03 2021 11:58:10.309:DEBUG [web-server]: serving (cached): /src/repo/tests/src/experts/QuantityInput.tests.js
04 03 2021 11:58:10.313:DEBUG [middleware:source-files]: Requesting /base/tests/src/experts/StringValue.tests.js?1a7d687c4280dde708527d01e87427f7624cc303
04 03 2021 11:58:10.313:DEBUG [middleware:source-files]: Fetching /src/repo/tests/src/experts/StringValue.tests.js
04 03 2021 11:58:10.313:DEBUG [web-server]: serving (cached): /src/repo/tests/src/experts/StringValue.tests.js
04 03 2021 11:58:10.314:DEBUG [middleware:source-files]: Requesting /base/tests/src/experts/TimeInput.tests.js?d9d15f97d96890701a0443d825a77480be1c183e
04 03 2021 11:58:10.315:DEBUG [middleware:source-files]: Fetching /src/repo/tests/src/experts/TimeInput.tests.js
04 03 2021 11:58:10.315:DEBUG [web-server]: serving (cached): /src/repo/tests/src/experts/TimeInput.tests.js
04 03 2021 11:58:10.318:DEBUG [middleware:source-files]: Requesting /base/tests/src/experts/UnDeserializableValueTests.js?e26c78dfb2c44cb93cc0c1bd5f9f63cbd2010aa1
04 03 2021 11:58:10.318:DEBUG [middleware:source-files]: Fetching /src/repo/tests/src/experts/UnDeserializableValueTests.js
04 03 2021 11:58:10.318:DEBUG [web-server]: serving (cached): /src/repo/tests/src/experts/UnDeserializableValueTests.js
Chrome Headless 87.0.4280.88 (Linux x86_64) WARN: 'JQMIGRATE: jQuery.expr[':'] is deprecated; use jQuery.expr.pseudos'

04 03 2021 11:58:10.322:DEBUG [middleware:source-files]: Requesting /base/tests/src/ExpertExtender/testExpertExtenderExtension.js?cdc331fa55aed891fa1502bc53a23afecdc3248c
04 03 2021 11:58:10.323:DEBUG [middleware:source-files]: Fetching /src/repo/tests/src/ExpertExtender/testExpertExtenderExtension.js
04 03 2021 11:58:10.323:DEBUG [web-server]: serving (cached): /src/repo/tests/src/ExpertExtender/testExpertExtenderExtension.js
04 03 2021 11:58:10.324:DEBUG [middleware:source-files]: Requesting /base/tests/src/ExpertExtender/ExpertExtender.Container.tests.js?e2e00b7e621ad7c30df5a36b60773fcfddcee361
04 03 2021 11:58:10.324:DEBUG [middleware:source-files]: Fetching /src/repo/tests/src/ExpertExtender/ExpertExtender.Container.tests.js
04 03 2021 11:58:10.324:DEBUG [web-server]: serving (cached): /src/repo/tests/src/ExpertExtender/ExpertExtender.Container.tests.js
04 03 2021 11:58:10.327:DEBUG [middleware:source-files]: Requesting /base/tests/src/ExpertExtender/ExpertExtender.LanguageSelector.tests.js?44602c83bf647b9aab35b57da795b1ae6d969703
04 03 2021 11:58:10.328:DEBUG [middleware:source-files]: Fetching /src/repo/tests/src/ExpertExtender/ExpertExtender.LanguageSelector.tests.js
04 03 2021 11:58:10.328:DEBUG [web-server]: serving (cached): /src/repo/tests/src/ExpertExtender/ExpertExtender.LanguageSelector.tests.js
04 03 2021 11:58:10.329:DEBUG [middleware:source-files]: Requesting /base/tests/src/ExpertExtender/ExpertExtender.Listrotator.tests.js?9a024cb629680f60ee41b5c53f5de7e8d371c573
04 03 2021 11:58:10.329:DEBUG [middleware:source-files]: Fetching /src/repo/tests/src/ExpertExtender/ExpertExtender.Listrotator.tests.js
04 03 2021 11:58:10.330:DEBUG [web-server]: serving (cached): /src/repo/tests/src/ExpertExtender/ExpertExtender.Listrotator.tests.js
04 03 2021 11:58:10.330:DEBUG [middleware:source-files]: Requesting /base/tests/src/ExpertExtender/ExpertExtender.Preview.tests.js?30c6f7b866375add5df4e885ed54681e9a6d403e
04 03 2021 11:58:10.330:DEBUG [middleware:source-files]: Fetching /src/repo/tests/src/ExpertExtender/ExpertExtender.Preview.tests.js
04 03 2021 11:58:10.331:DEBUG [web-server]: serving (cached): /src/repo/tests/src/ExpertExtender/ExpertExtender.Preview.tests.js
04 03 2021 11:58:10.334:DEBUG [middleware:source-files]: Requesting /base/tests/src/ExpertExtender/ExpertExtender.UnitSelector.tests.js?b0d570607d9f86c2dd0441a22112b06f3314bd6a
04 03 2021 11:58:10.334:DEBUG [middleware:source-files]: Fetching /src/repo/tests/src/ExpertExtender/ExpertExtender.UnitSelector.tests.js
04 03 2021 11:58:10.335:DEBUG [web-server]: serving (cached): /src/repo/tests/src/ExpertExtender/ExpertExtender.UnitSelector.tests.js
04 03 2021 11:58:10.335:DEBUG [middleware:source-files]: Requesting /base/tests/src/ExpertExtender/ExpertExtender.tests.js?8c2adb462543bfc6ae09e567281c666919213cd2
04 03 2021 11:58:10.336:DEBUG [middleware:source-files]: Fetching /src/repo/tests/src/ExpertExtender/ExpertExtender.tests.js
04 03 2021 11:58:10.336:DEBUG [web-server]: serving (cached): /src/repo/tests/src/ExpertExtender/ExpertExtender.tests.js
Chrome Headless 87.0.4280.88 (Linux x86_64) WARN: 'JQMIGRATE: jQuery.isFunction() is deprecated'

04 03 2021 11:58:10.531:DEBUG [Chrome Headless 87.0.4280.88 (Linux x86_64)]: CONFIGURING -> EXECUTING

Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 0 of 303 SUCCESS (0 secs / 0 secs)
WARN: 'JQMIGRATE: jQuery.trim is deprecated; use String.prototype.trim'
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 0 of 303 SUCCESS (0 secs / 0 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 1 of 303 SUCCESS (0 secs / 0.005 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 2 of 303 SUCCESS (0 secs / 0.006 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 3 of 303 SUCCESS (0 secs / 0.007 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 4 of 303 SUCCESS (0 secs / 0.008 secs)
WARN: 'JQMIGRATE: jQuery.isArray is deprecated; use Array.isArray'
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 4 of 303 SUCCESS (0 secs / 0.008 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 5 of 303 SUCCESS (0 secs / 0.009 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 6 of 303 SUCCESS (0 secs / 0.011 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 7 of 303 SUCCESS (0 secs / 0.011 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 8 of 303 SUCCESS (0 secs / 0.012 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 9 of 303 SUCCESS (0 secs / 0.013 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 10 of 303 SUCCESS (0 secs / 0.013 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 11 of 303 SUCCESS (0 secs / 0.014 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 12 of 303 SUCCESS (0 secs / 0.015 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 13 of 303 SUCCESS (0 secs / 0.015 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 14 of 303 SUCCESS (0 secs / 0.016 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 15 of 303 SUCCESS (0 secs / 0.018 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 16 of 303 SUCCESS (0 secs / 0.019 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 17 of 303 SUCCESS (0 secs / 0.019 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 18 of 303 SUCCESS (0 secs / 0.019 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 19 of 303 SUCCESS (0 secs / 0.019 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 20 of 303 SUCCESS (0 secs / 0.02 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 21 of 303 SUCCESS (0 secs / 0.02 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 22 of 303 SUCCESS (0 secs / 0.021 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 23 of 303 SUCCESS (0 secs / 0.021 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 24 of 303 SUCCESS (0 secs / 0.021 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 25 of 303 SUCCESS (0 secs / 0.04 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 26 of 303 SUCCESS (0 secs / 0.048 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 SUCCESS (0 secs / 0.049 secs)
04 03 2021 11:58:10.625:DEBUG [Chrome Headless 87.0.4280.88 (Linux x86_64)]: Disconnected during run, waiting 2000ms for reconnecting.
04 03 2021 11:58:10.625:DEBUG [Chrome Headless 87.0.4280.88 (Linux x86_64)]: EXECUTING -> EXECUTING_DISCONNECTED
04 03 2021 11:58:11.933:DEBUG [web-server]: serving (cached): /src/repo/node_modules/karma/static/client.html
04 03 2021 11:58:12.628:WARN [Chrome Headless 87.0.4280.88 (Linux x86_64)]: Disconnected (0 times) reconnect failed before timeout of 2000ms (transport close)
Chrome Headless 87.0.4280.88 (Linux x86_64) ERROR
  Disconnected reconnect failed before timeout of 2000ms (transport close)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
04 03 2021 11:58:12.629:DEBUG [Chrome Headless 87.0.4280.88 (Linux x86_64)]: EXECUTING_DISCONNECTED -> DISCONNECTED
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
04 03 2021 11:58:12.632:DEBUG [launcher]: CAPTURED -> BEING_KILLED
04 03 2021 11:58:12.632:DEBUG [launcher]: BEING_KILLED -> BEING_FORCE_KILLED
04 03 2021 11:58:12.633:DEBUG [Chrome Headless 87.0.4280.88 (Linux x86_64)]: DISCONNECTED -> DISCONNECTED
04 03 2021 11:58:12.659:DEBUG [launcher]: Process ChromeHeadless exited with code null and signal SIGTERM
04 03 2021 11:58:12.660:DEBUG [temp-dir]: Cleaning temp dir /tmp/karma-98770296
04 03 2021 11:58:12.718:DEBUG [launcher]: BEING_FORCE_KILLED -> FINISHED
04 03 2021 11:58:12.719:DEBUG [launcher]: FINISHED -> FINISHED
04 03 2021 11:58:12.767:DEBUG [web-server]: serving (cached): /src/repo/node_modules/karma/static/karma.js
04 03 2021 11:58:13.041:DEBUG [web-server]: serving: /src/repo/node_modules/karma/static/favicon.ico
04 03 2021 11:58:13.048:DEBUG [karma-server]: A browser has connected on socket wgTHRonLqls33AQdAAAD
04 03 2021 11:58:13.078:DEBUG [web-server]: upgrade /socket.io/?EIO=4&transport=websocket&sid=rtS0tGp6xNLevFzoAAAC
04 03 2021 11:58:13.303:DEBUG [Firefox 78.0 (Linux x86_64)]: undefined -> CONNECTED
04 03 2021 11:58:13.304:INFO [Firefox 78.0 (Linux x86_64)]: Connected on socket wgTHRonLqls33AQdAAAD with id 20283538
04 03 2021 11:58:13.305:DEBUG [launcher]: BEING_CAPTURED -> CAPTURED
04 03 2021 11:58:13.305:DEBUG [launcher]: FirefoxHeadless (id 20283538) captured in 4.51 secs
04 03 2021 11:58:13.305:DEBUG [Firefox 78.0 (Linux x86_64)]: CONNECTED -> CONFIGURING
04 03 2021 11:58:13.383:DEBUG [middleware:karma]: custom files null null null
04 03 2021 11:58:13.383:DEBUG [middleware:karma]: Serving static request /context.html
04 03 2021 11:58:13.383:DEBUG [web-server]: serving (cached): /src/repo/node_modules/karma/static/context.html
04 03 2021 11:58:13.711:DEBUG [web-server]: serving (cached): /src/repo/node_modules/karma/static/context.js
04 03 2021 11:58:13.744:DEBUG [middleware:source-files]: Requesting /base/node_modules/qunitjs/qunit/qunit.js?fca9a0ac0c00fe782af607f1058a7bf250e4eb89
04 03 2021 11:58:13.744:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/qunitjs/qunit/qunit.js
04 03 2021 11:58:13.745:DEBUG [web-server]: serving (cached): /src/repo/node_modules/qunitjs/qunit/qunit.js
04 03 2021 11:58:13.746:DEBUG [middleware:source-files]: Requesting /base/node_modules/karma-qunit/lib/adapter.js?0932caacc3ac2a0121166f2adaa7d4da20d06400
04 03 2021 11:58:13.746:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/karma-qunit/lib/adapter.js
04 03 2021 11:58:13.746:DEBUG [web-server]: serving (cached): /src/repo/node_modules/karma-qunit/lib/adapter.js
04 03 2021 11:58:13.754:DEBUG [middleware:source-files]: Requesting /base/node_modules/jquery/dist/jquery.js?ad16c4a132ad2a03b4951185fed46d55397b5e88
04 03 2021 11:58:13.754:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/jquery/dist/jquery.js
04 03 2021 11:58:13.755:DEBUG [web-server]: serving (cached): /src/repo/node_modules/jquery/dist/jquery.js
04 03 2021 11:58:13.760:DEBUG [middleware:source-files]: Requesting /base/node_modules/jquery-ui/ui/jquery.ui.core.js?b1ff9a882edfaf9d3b02e63f78e7e947f69cbc90
04 03 2021 11:58:13.760:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/jquery-ui/ui/jquery.ui.core.js
04 03 2021 11:58:13.761:DEBUG [web-server]: serving (cached): /src/repo/node_modules/jquery-ui/ui/jquery.ui.core.js
04 03 2021 11:58:13.765:DEBUG [middleware:source-files]: Requesting /base/node_modules/jquery-ui/ui/jquery.ui.widget.js?78317046ff2f5e91616f404abbcda2f9c94e98f7
04 03 2021 11:58:13.765:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/jquery-ui/ui/jquery.ui.widget.js
04 03 2021 11:58:13.765:DEBUG [web-server]: serving (cached): /src/repo/node_modules/jquery-ui/ui/jquery.ui.widget.js
04 03 2021 11:58:13.768:DEBUG [middleware:source-files]: Requesting /base/node_modules/jquery-ui/ui/jquery.ui.position.js?ca5cf471c210fdf066c5ac5fe82d0bc8004e8574
04 03 2021 11:58:13.768:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/jquery-ui/ui/jquery.ui.position.js
04 03 2021 11:58:13.768:DEBUG [web-server]: serving (cached): /src/repo/node_modules/jquery-ui/ui/jquery.ui.position.js
04 03 2021 11:58:13.774:DEBUG [middleware:source-files]: Requesting /base/node_modules/jquery-ui/ui/jquery.ui.menu.js?499d87bf7b09c70529ad71234355d646f2bd8850
04 03 2021 11:58:13.775:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/jquery-ui/ui/jquery.ui.menu.js
04 03 2021 11:58:13.775:DEBUG [web-server]: serving (cached): /src/repo/node_modules/jquery-ui/ui/jquery.ui.menu.js
04 03 2021 11:58:13.778:DEBUG [middleware:source-files]: Requesting /base/node_modules/jquery-client/jquery.client.js?36a99f18033c422e724c2315fc9f3124b40f38b2
04 03 2021 11:58:13.779:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/jquery-client/jquery.client.js
04 03 2021 11:58:13.780:DEBUG [web-server]: serving (cached): /src/repo/node_modules/jquery-client/jquery.client.js
04 03 2021 11:58:13.782:DEBUG [middleware:source-files]: Requesting /base/node_modules/jquery-migrate/dist/jquery-migrate.js?f998ae177866e8c41bb877755065c81e819b1166
04 03 2021 11:58:13.782:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/jquery-migrate/dist/jquery-migrate.js
04 03 2021 11:58:13.783:DEBUG [web-server]: serving (cached): /src/repo/node_modules/jquery-migrate/dist/jquery-migrate.js
04 03 2021 11:58:13.785:DEBUG [middleware:source-files]: Requesting /base/node_modules/sinon/pkg/sinon.js?51ef4aa3de92c43bc4721758a1e445182048177d
04 03 2021 11:58:13.785:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/sinon/pkg/sinon.js
04 03 2021 11:58:13.786:DEBUG [web-server]: serving (cached): /src/repo/node_modules/sinon/pkg/sinon.js
04 03 2021 11:58:13.801:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/lib/util/util.inherit.js?f2c19ca2f0c60ba383d98673bd8c35e4f9035e39
04 03 2021 11:58:13.802:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/lib/util/util.inherit.js
04 03 2021 11:58:13.802:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/lib/util/util.inherit.js
04 03 2021 11:58:13.802:DEBUG [middleware:source-files]: Requesting /base/lib/jquery/jquery.PurposedCallbacks.js?4ae81774ff4b061cbce81326db6314e8aae79270
04 03 2021 11:58:13.803:DEBUG [middleware:source-files]: Fetching /src/repo/lib/jquery/jquery.PurposedCallbacks.js
04 03 2021 11:58:13.803:DEBUG [web-server]: serving (cached): /src/repo/lib/jquery/jquery.PurposedCallbacks.js
04 03 2021 11:58:13.804:DEBUG [middleware:source-files]: Requesting /base/lib/jquery/jquery.autocompletestring.js?9aebaa47dcf7285f98ffe9f64c01e7d7c91e6e27
04 03 2021 11:58:13.804:DEBUG [middleware:source-files]: Fetching /src/repo/lib/jquery/jquery.autocompletestring.js
04 03 2021 11:58:13.804:DEBUG [web-server]: serving (cached): /src/repo/lib/jquery/jquery.autocompletestring.js
04 03 2021 11:58:13.805:DEBUG [middleware:source-files]: Requesting /base/lib/jquery/jquery.focusAt.js?f05d9b51f55608f8ab4e93d18e46ed93d28e7ca5
04 03 2021 11:58:13.805:DEBUG [middleware:source-files]: Fetching /src/repo/lib/jquery/jquery.focusAt.js
04 03 2021 11:58:13.806:DEBUG [web-server]: serving (cached): /src/repo/lib/jquery/jquery.focusAt.js
04 03 2021 11:58:13.808:DEBUG [middleware:source-files]: Requesting /base/lib/jquery/jquery.inputautoexpand.js?a004331bd14ec311ff0526a60b6d23f0cdd3cf29
04 03 2021 11:58:13.809:DEBUG [middleware:source-files]: Fetching /src/repo/lib/jquery/jquery.inputautoexpand.js
04 03 2021 11:58:13.809:DEBUG [web-server]: serving (cached): /src/repo/lib/jquery/jquery.inputautoexpand.js
04 03 2021 11:58:13.812:DEBUG [middleware:source-files]: Requesting /base/lib/jquery/jquery.AnimationEvent.js?b55c5a3ff9ed03b8ea939d2d6f1db74578ab51b6
04 03 2021 11:58:13.812:DEBUG [middleware:source-files]: Fetching /src/repo/lib/jquery/jquery.AnimationEvent.js
04 03 2021 11:58:13.813:DEBUG [web-server]: serving (cached): /src/repo/lib/jquery/jquery.AnimationEvent.js
04 03 2021 11:58:13.813:DEBUG [middleware:source-files]: Requesting /base/lib/jquery/jquery.animateWithEvent.js?a96276ad3e858776addab252faa6e272d485a4ff
04 03 2021 11:58:13.813:DEBUG [middleware:source-files]: Fetching /src/repo/lib/jquery/jquery.animateWithEvent.js
04 03 2021 11:58:13.814:DEBUG [web-server]: serving (cached): /src/repo/lib/jquery/jquery.animateWithEvent.js
04 03 2021 11:58:13.814:DEBUG [middleware:source-files]: Requesting /base/lib/jquery.event/jquery.event.special.eachchange.js?1637c0a55ca835e3fb7411b558dc91b7ca2abfa3
04 03 2021 11:58:13.814:DEBUG [middleware:source-files]: Fetching /src/repo/lib/jquery.event/jquery.event.special.eachchange.js
04 03 2021 11:58:13.815:DEBUG [web-server]: serving (cached): /src/repo/lib/jquery.event/jquery.event.special.eachchange.js
04 03 2021 11:58:13.815:DEBUG [middleware:source-files]: Requesting /base/lib/jquery.util/jquery.util.adaptlettercase.js?96b0030c5bae1b84edce32f25f9de8ee402952dd
04 03 2021 11:58:13.815:DEBUG [middleware:source-files]: Fetching /src/repo/lib/jquery.util/jquery.util.adaptlettercase.js
04 03 2021 11:58:13.815:DEBUG [web-server]: serving (cached): /src/repo/lib/jquery.util/jquery.util.adaptlettercase.js
04 03 2021 11:58:13.816:DEBUG [middleware:source-files]: Requesting /base/lib/jquery.util/jquery.util.getscrollbarwidth.js?47b5e777ec5863550097ca2a8418f7e3549f3f76
04 03 2021 11:58:13.818:DEBUG [middleware:source-files]: Fetching /src/repo/lib/jquery.util/jquery.util.getscrollbarwidth.js
04 03 2021 11:58:13.818:DEBUG [web-server]: serving (cached): /src/repo/lib/jquery.util/jquery.util.getscrollbarwidth.js
04 03 2021 11:58:13.826:DEBUG [middleware:source-files]: Requesting /base/lib/util/util.CombiningMessageProvider.js?5c5c638a678a1f6dfc9f95635e729acbbca36cdf
04 03 2021 11:58:13.827:DEBUG [middleware:source-files]: Fetching /src/repo/lib/util/util.CombiningMessageProvider.js
04 03 2021 11:58:13.827:DEBUG [web-server]: serving (cached): /src/repo/lib/util/util.CombiningMessageProvider.js
04 03 2021 11:58:13.828:DEBUG [middleware:source-files]: Requesting /base/lib/util/util.ContentLanguages.js?c3872d2903bd59ac81d63eff45405fc22f5c3bcc
04 03 2021 11:58:13.829:DEBUG [middleware:source-files]: Fetching /src/repo/lib/util/util.ContentLanguages.js
04 03 2021 11:58:13.829:DEBUG [web-server]: serving (cached): /src/repo/lib/util/util.ContentLanguages.js
04 03 2021 11:58:13.830:DEBUG [middleware:source-files]: Requesting /base/lib/util/util.Extendable.js?40081d4ecf13219d0439f4c4a57df5d6ff96f5ca
04 03 2021 11:58:13.830:DEBUG [middleware:source-files]: Fetching /src/repo/lib/util/util.Extendable.js
04 03 2021 11:58:13.830:DEBUG [web-server]: serving (cached): /src/repo/lib/util/util.Extendable.js
04 03 2021 11:58:13.831:DEBUG [middleware:source-files]: Requesting /base/lib/util/util.HashMessageProvider.js?90019a9002e37cd4efe6638457ac471bb7861293
04 03 2021 11:58:13.831:DEBUG [middleware:source-files]: Fetching /src/repo/lib/util/util.HashMessageProvider.js
04 03 2021 11:58:13.831:DEBUG [web-server]: serving (cached): /src/repo/lib/util/util.HashMessageProvider.js
04 03 2021 11:58:13.832:DEBUG [middleware:source-files]: Requesting /base/lib/util/util.MessageProvider.js?8c17b2ff00e3c31d29acf4ab4568fcc36cf05b4c
04 03 2021 11:58:13.832:DEBUG [middleware:source-files]: Fetching /src/repo/lib/util/util.MessageProvider.js
04 03 2021 11:58:13.832:DEBUG [web-server]: serving (cached): /src/repo/lib/util/util.MessageProvider.js
04 03 2021 11:58:13.833:DEBUG [middleware:source-files]: Requesting /base/lib/util/util.PrefixingMessageProvider.js?e642f8991b062af8106298c45e2da579bb0abadf
04 03 2021 11:58:13.833:DEBUG [middleware:source-files]: Fetching /src/repo/lib/util/util.PrefixingMessageProvider.js
04 03 2021 11:58:13.834:DEBUG [web-server]: serving (cached): /src/repo/lib/util/util.PrefixingMessageProvider.js
04 03 2021 11:58:13.834:DEBUG [middleware:source-files]: Requesting /base/lib/util/util.highlightSubstring.js?e7d2f2287b0244f99224f99836d9135027ac6a19
04 03 2021 11:58:13.834:DEBUG [middleware:source-files]: Fetching /src/repo/lib/util/util.highlightSubstring.js
04 03 2021 11:58:13.835:DEBUG [web-server]: serving (cached): /src/repo/lib/util/util.highlightSubstring.js
04 03 2021 11:58:13.836:DEBUG [middleware:source-files]: Requesting /base/lib/jquery.ui/jquery.ui.ooMenu.js?8471aabf359d3012eeb3fd56c42d45eee2d1f84a
04 03 2021 11:58:13.836:DEBUG [middleware:source-files]: Fetching /src/repo/lib/jquery.ui/jquery.ui.ooMenu.js
04 03 2021 11:58:13.836:DEBUG [web-server]: serving (cached): /src/repo/lib/jquery.ui/jquery.ui.ooMenu.js
04 03 2021 11:58:13.837:DEBUG [middleware:source-files]: Requesting /base/lib/util/util.Notifier.js?389546b8d6ab42893b246ce86cea8e37f5b43350
04 03 2021 11:58:13.837:DEBUG [middleware:source-files]: Fetching /src/repo/lib/util/util.Notifier.js
04 03 2021 11:58:13.839:DEBUG [web-server]: serving (cached): /src/repo/lib/util/util.Notifier.js
04 03 2021 11:58:13.850:DEBUG [middleware:source-files]: Requesting /base/lib/jquery.ui/jquery.ui.commonssuggester.js?a331f6804079c6429f394a0eb6a173d6ab26a261
04 03 2021 11:58:13.850:DEBUG [middleware:source-files]: Fetching /src/repo/lib/jquery.ui/jquery.ui.commonssuggester.js
04 03 2021 11:58:13.851:DEBUG [web-server]: serving (cached): /src/repo/lib/jquery.ui/jquery.ui.commonssuggester.js
04 03 2021 11:58:13.851:DEBUG [middleware:source-files]: Requesting /base/lib/jquery.ui/jquery.ui.inputextender.js?8b2114866f8486912cdaa685946a574410323291
04 03 2021 11:58:13.852:DEBUG [middleware:source-files]: Fetching /src/repo/lib/jquery.ui/jquery.ui.inputextender.js
04 03 2021 11:58:13.852:DEBUG [web-server]: serving (cached): /src/repo/lib/jquery.ui/jquery.ui.inputextender.js
04 03 2021 11:58:13.859:DEBUG [middleware:source-files]: Requesting /base/lib/jquery.ui/jquery.ui.languagesuggester.js?90488789a128d36cc23cc3dda84fa1a9226ee671
04 03 2021 11:58:13.860:DEBUG [middleware:source-files]: Fetching /src/repo/lib/jquery.ui/jquery.ui.languagesuggester.js
04 03 2021 11:58:13.860:DEBUG [web-server]: serving (cached): /src/repo/lib/jquery.ui/jquery.ui.languagesuggester.js
04 03 2021 11:58:13.861:DEBUG [middleware:source-files]: Requesting /base/lib/jquery.ui/jquery.ui.suggester.js?258df444bf69437f26b29425672a034abeebd5c6
04 03 2021 11:58:13.861:DEBUG [middleware:source-files]: Fetching /src/repo/lib/jquery.ui/jquery.ui.suggester.js
04 03 2021 11:58:13.861:DEBUG [web-server]: serving (cached): /src/repo/lib/jquery.ui/jquery.ui.suggester.js
04 03 2021 11:58:13.862:DEBUG [middleware:source-files]: Requesting /base/lib/jquery.ui/jquery.ui.preview.js?a8372a41a26f50578f90587f9b390f55f091774f
04 03 2021 11:58:13.862:DEBUG [middleware:source-files]: Fetching /src/repo/lib/jquery.ui/jquery.ui.preview.js
04 03 2021 11:58:13.862:DEBUG [web-server]: serving (cached): /src/repo/lib/jquery.ui/jquery.ui.preview.js
04 03 2021 11:58:13.863:DEBUG [middleware:source-files]: Requesting /base/lib/jquery.ui/jquery.ui.toggler.js?6e04e454a7fcc94eed26fe10bea8a4036d718152
04 03 2021 11:58:13.863:DEBUG [middleware:source-files]: Fetching /src/repo/lib/jquery.ui/jquery.ui.toggler.js
04 03 2021 11:58:13.863:DEBUG [web-server]: serving (cached): /src/repo/lib/jquery.ui/jquery.ui.toggler.js
04 03 2021 11:58:13.864:DEBUG [middleware:source-files]: Requesting /base/lib/jquery.ui/jquery.ui.unitsuggester.js?74b76393741ca1486db3291459651ed7be6740e6
04 03 2021 11:58:13.864:DEBUG [middleware:source-files]: Fetching /src/repo/lib/jquery.ui/jquery.ui.unitsuggester.js
04 03 2021 11:58:13.864:DEBUG [web-server]: serving (cached): /src/repo/lib/jquery.ui/jquery.ui.unitsuggester.js
04 03 2021 11:58:13.865:DEBUG [middleware:source-files]: Requesting /base/lib/jquery.ui/jquery.ui.listrotator.js?53a7382679cf427f4aa4bde39e4135d86b9253fc
04 03 2021 11:58:13.865:DEBUG [middleware:source-files]: Fetching /src/repo/lib/jquery.ui/jquery.ui.listrotator.js
04 03 2021 11:58:13.865:DEBUG [web-server]: serving (cached): /src/repo/lib/jquery.ui/jquery.ui.listrotator.js
04 03 2021 11:58:13.866:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/dataValues.js?6fcca5e5dd4e82e8cff457966d66a29fc663b342
04 03 2021 11:58:13.866:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/dataValues.js
04 03 2021 11:58:13.866:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/dataValues.js
04 03 2021 11:58:13.867:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/lib/globeCoordinate/globeCoordinate.js?0ebe4f48aa04cd4c81156933e88ca28cc9415ad0
04 03 2021 11:58:13.867:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/lib/globeCoordinate/globeCoordinate.js
04 03 2021 11:58:13.867:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/lib/globeCoordinate/globeCoordinate.js
04 03 2021 11:58:13.872:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/valueFormatters/formatters/NullFormatter.js?3ac98026bac7d774e792d020cf8e011162fb93f5
04 03 2021 11:58:13.872:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/valueFormatters/formatters/NullFormatter.js
04 03 2021 11:58:13.872:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/valueFormatters/formatters/NullFormatter.js
04 03 2021 11:58:13.873:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/valueFormatters/formatters/StringFormatter.js?65cc4f47e92a82600ebdb9805fce9cd9f4cd59b0
04 03 2021 11:58:13.873:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/valueFormatters/formatters/StringFormatter.js
04 03 2021 11:58:13.873:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/valueFormatters/formatters/StringFormatter.js
04 03 2021 11:58:13.875:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/DataValue.js?7f32bbbe4ef2cf9561f3b7dcc99b3e240f67df79
04 03 2021 11:58:13.875:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/DataValue.js
04 03 2021 11:58:13.877:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/DataValue.js
04 03 2021 11:58:13.877:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/valueFormatters/valueFormatters.js?aed20c008cef61010f604ebaa9cce8d72f576abe
04 03 2021 11:58:13.878:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/valueFormatters/valueFormatters.js
04 03 2021 11:58:13.878:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/valueFormatters/valueFormatters.js
04 03 2021 11:58:13.879:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/valueFormatters/formatters/ValueFormatter.js?2090201767d73f4d4c5d333182aed53635eb4c66
04 03 2021 11:58:13.880:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/valueFormatters/formatters/ValueFormatter.js
04 03 2021 11:58:13.880:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/valueFormatters/formatters/ValueFormatter.js
04 03 2021 11:58:13.881:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/valueParsers/valueParsers.js?0da5da1c03c830d690fdb24a75b5e16e4c25dc13
04 03 2021 11:58:13.881:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/valueParsers/valueParsers.js
04 03 2021 11:58:13.881:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/valueParsers/valueParsers.js
04 03 2021 11:58:13.882:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/valueParsers/ValueParserStore.js?33839675de6f14ca0c4324350a70112176563a2f
04 03 2021 11:58:13.882:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/valueParsers/ValueParserStore.js
04 03 2021 11:58:13.883:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/valueParsers/ValueParserStore.js
04 03 2021 11:58:13.884:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/valueParsers/parsers/ValueParser.js?2649bf01245c263a9f828f97593c25f9e02d288c
04 03 2021 11:58:13.885:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/valueParsers/parsers/ValueParser.js
04 03 2021 11:58:13.885:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/valueParsers/parsers/ValueParser.js
04 03 2021 11:58:13.888:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/valueParsers/parsers/BoolParser.js?806b88c711b792e8fe8709b3b5deac0566d2e7f3
04 03 2021 11:58:13.889:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/valueParsers/parsers/BoolParser.js
04 03 2021 11:58:13.889:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/valueParsers/parsers/BoolParser.js
04 03 2021 11:58:13.890:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/valueParsers/parsers/IntParser.js?25a12deb5384e72101b27c26457f86822ea547c5
04 03 2021 11:58:13.892:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/valueParsers/parsers/IntParser.js
04 03 2021 11:58:13.894:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/valueParsers/parsers/IntParser.js
04 03 2021 11:58:13.896:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/valueParsers/parsers/NullParser.js?b19b27af9f911ad962682a9d3cd8252a8db7e873
04 03 2021 11:58:13.897:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/valueParsers/parsers/NullParser.js
04 03 2021 11:58:13.897:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/valueParsers/parsers/NullParser.js
04 03 2021 11:58:13.898:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/valueParsers/parsers/StringParser.js?c1fa273b961c68320a34b1ddd7c35db3f8cabed1
04 03 2021 11:58:13.898:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/valueParsers/parsers/StringParser.js
04 03 2021 11:58:13.898:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/valueParsers/parsers/StringParser.js
04 03 2021 11:58:13.899:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/valueParsers/parsers/FloatParser.js?0102b9eb5526c59742dbc2f8dfe78f82ed7d1490
04 03 2021 11:58:13.899:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/valueParsers/parsers/FloatParser.js
04 03 2021 11:58:13.899:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/valueParsers/parsers/FloatParser.js
04 03 2021 11:58:13.900:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/values/DecimalValue.js?939252ef9023496353412b239c0f9b289dc0bb47
04 03 2021 11:58:13.900:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/values/DecimalValue.js
04 03 2021 11:58:13.900:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/values/DecimalValue.js
04 03 2021 11:58:13.903:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/values/GlobeCoordinateValue.js?be43f7101d866cca4310876c4865d5f5aa2ff45d
04 03 2021 11:58:13.903:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/values/GlobeCoordinateValue.js
04 03 2021 11:58:13.905:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/values/GlobeCoordinateValue.js
04 03 2021 11:58:13.906:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/values/MonolingualTextValue.js?f88cdc59a66e4bf09e5ab3ea87048ac10b29bef3
04 03 2021 11:58:13.906:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/values/MonolingualTextValue.js
04 03 2021 11:58:13.907:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/values/MonolingualTextValue.js
04 03 2021 11:58:13.908:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/values/BoolValue.js?fd62ead098ed92c67a5f88347c2a94eee80454d0
04 03 2021 11:58:13.908:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/values/BoolValue.js
04 03 2021 11:58:13.908:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/values/BoolValue.js
04 03 2021 11:58:13.909:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/values/NumberValue.js?ab4b658d00b7849bdd4ff6e4dc4a19f36aca6c1f
04 03 2021 11:58:13.909:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/values/NumberValue.js
04 03 2021 11:58:13.910:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/values/NumberValue.js
04 03 2021 11:58:13.910:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/values/QuantityValue.js?e1e0151bc804251639ef7db19cd2b2d611f0bc7c
04 03 2021 11:58:13.910:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/values/QuantityValue.js
04 03 2021 11:58:13.911:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/values/QuantityValue.js
04 03 2021 11:58:13.912:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/values/StringValue.js?0a527734a6d986dd92508f1c815eb14b86daf00a
04 03 2021 11:58:13.912:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/values/StringValue.js
04 03 2021 11:58:13.912:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/values/StringValue.js
04 03 2021 11:58:13.913:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/values/MultilingualTextValue.js?572c381c54f8e7d517d489f5947cf16bd96de133
04 03 2021 11:58:13.913:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/values/MultilingualTextValue.js
04 03 2021 11:58:13.914:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/values/MultilingualTextValue.js
04 03 2021 11:58:13.914:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/values/UnDeserializableValue.js?c599842e1d9f044a28a19a7313ae9e79075bacc7
04 03 2021 11:58:13.915:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/values/UnDeserializableValue.js
04 03 2021 11:58:13.915:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/values/UnDeserializableValue.js
04 03 2021 11:58:13.916:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/values/UnknownValue.js?59c1a2f5227c795b584d84f5490d612ad19477d2
04 03 2021 11:58:13.916:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/values/UnknownValue.js
04 03 2021 11:58:13.917:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/values/UnknownValue.js
04 03 2021 11:58:13.918:DEBUG [middleware:source-files]: Requesting /base/node_modules/wikibase-data-values/src/values/TimeValue.js?e3f99fa0ccc088a1c9d5ae4cb4a58c0609916442
04 03 2021 11:58:13.918:DEBUG [middleware:source-files]: Fetching /src/repo/node_modules/wikibase-data-values/src/values/TimeValue.js
04 03 2021 11:58:13.919:DEBUG [web-server]: serving (cached): /src/repo/node_modules/wikibase-data-values/src/values/TimeValue.js
04 03 2021 11:58:13.919:DEBUG [middleware:source-files]: Requesting /base/src/jquery.valueview.ExpertStore.js?0b207fab9a469ef0a3e5c8a5c9a99e0d05ff0071
04 03 2021 11:58:13.920:DEBUG [middleware:source-files]: Fetching /src/repo/src/jquery.valueview.ExpertStore.js
04 03 2021 11:58:13.920:DEBUG [web-server]: serving (cached): /src/repo/src/jquery.valueview.ExpertStore.js
04 03 2021 11:58:13.921:DEBUG [middleware:source-files]: Requesting /base/src/jquery.valueview.ViewState.js?3b26cb7c1891fc9aa208a06e2870a310d6f365c3
04 03 2021 11:58:13.922:DEBUG [middleware:source-files]: Fetching /src/repo/src/jquery.valueview.ViewState.js
04 03 2021 11:58:13.922:DEBUG [web-server]: serving (cached): /src/repo/src/jquery.valueview.ViewState.js
04 03 2021 11:58:13.923:DEBUG [middleware:source-files]: Requesting /base/src/jquery.valueview.valueview.js?336e393cee6afdb64402d91dd0b9a6a4e351b04c
04 03 2021 11:58:13.923:DEBUG [middleware:source-files]: Fetching /src/repo/src/jquery.valueview.valueview.js
04 03 2021 11:58:13.924:DEBUG [web-server]: serving (cached): /src/repo/src/jquery.valueview.valueview.js
04 03 2021 11:58:13.925:DEBUG [middleware:source-files]: Requesting /base/src/jquery.valueview.Expert.js?ace2d2536ab9473325d9f4d5ba58a1e2229078b0
04 03 2021 11:58:13.925:DEBUG [middleware:source-files]: Fetching /src/repo/src/jquery.valueview.Expert.js
04 03 2021 11:58:13.925:DEBUG [web-server]: serving (cached): /src/repo/src/jquery.valueview.Expert.js
04 03 2021 11:58:13.926:DEBUG [middleware:source-files]: Requesting /base/src/jquery.valueview.js?931265c49d03deefcee707811edbab7ea7d01723
04 03 2021 11:58:13.927:DEBUG [middleware:source-files]: Fetching /src/repo/src/jquery.valueview.js
04 03 2021 11:58:13.927:DEBUG [web-server]: serving (cached): /src/repo/src/jquery.valueview.js
04 03 2021 11:58:13.928:DEBUG [middleware:source-files]: Requesting /base/src/ExpertExtender/ExpertExtender.js?30ab6eab981a878c5cd350f3983faf6e6f7eed12
04 03 2021 11:58:13.928:DEBUG [middleware:source-files]: Fetching /src/repo/src/ExpertExtender/ExpertExtender.js
04 03 2021 11:58:13.928:DEBUG [web-server]: serving (cached): /src/repo/src/ExpertExtender/ExpertExtender.js
04 03 2021 11:58:13.929:DEBUG [middleware:source-files]: Requesting /base/src/ExpertExtender/ExpertExtender.Container.js?0a50d5ba914d7bbc1efd06c7cbeeea4bfe2e6ec2
04 03 2021 11:58:13.929:DEBUG [middleware:source-files]: Fetching /src/repo/src/ExpertExtender/ExpertExtender.Container.js
04 03 2021 11:58:13.929:DEBUG [web-server]: serving (cached): /src/repo/src/ExpertExtender/ExpertExtender.Container.js
04 03 2021 11:58:13.930:DEBUG [middleware:source-files]: Requesting /base/src/jquery.valueview.experts.js?d15f7e846bdc0a307d630749f664790fc917a8a1
04 03 2021 11:58:13.930:DEBUG [middleware:source-files]: Fetching /src/repo/src/jquery.valueview.experts.js
04 03 2021 11:58:13.930:DEBUG [web-server]: serving (cached): /src/repo/src/jquery.valueview.experts.js
04 03 2021 11:58:13.931:DEBUG [middleware:source-files]: Requesting /base/src/ExpertExtender/ExpertExtender.Listrotator.js?ee00d665450bdd31434f9c337c52fdf9fc46b53e
04 03 2021 11:58:13.931:DEBUG [middleware:source-files]: Fetching /src/repo/src/ExpertExtender/ExpertExtender.Listrotator.js
04 03 2021 11:58:13.931:DEBUG [web-server]: serving (cached): /src/repo/src/ExpertExtender/ExpertExtender.Listrotator.js
04 03 2021 11:58:13.932:DEBUG [middleware:source-files]: Requesting /base/src/ExpertExtender/ExpertExtender.Preview.js?cb8fff538b7bf01986ad13d3d040c2df9d9ec44a
04 03 2021 11:58:13.932:DEBUG [middleware:source-files]: Fetching /src/repo/src/ExpertExtender/ExpertExtender.Preview.js
04 03 2021 11:58:13.932:DEBUG [web-server]: serving (cached): /src/repo/src/ExpertExtender/ExpertExtender.Preview.js
04 03 2021 11:58:13.933:DEBUG [middleware:source-files]: Requesting /base/src/ExpertExtender/ExpertExtender.UnitSelector.js?0b2a89c5ccad128edfd3609a96befee67ccf0c8d
04 03 2021 11:58:13.933:DEBUG [middleware:source-files]: Fetching /src/repo/src/ExpertExtender/ExpertExtender.UnitSelector.js
04 03 2021 11:58:13.933:DEBUG [web-server]: serving (cached): /src/repo/src/ExpertExtender/ExpertExtender.UnitSelector.js
04 03 2021 11:58:13.934:DEBUG [middleware:source-files]: Requesting /base/src/ExpertExtender/ExpertExtender.LanguageSelector.js?4a66696bc5725f0b004438f057e9a3c086952638
04 03 2021 11:58:13.934:DEBUG [middleware:source-files]: Fetching /src/repo/src/ExpertExtender/ExpertExtender.LanguageSelector.js
04 03 2021 11:58:13.934:DEBUG [web-server]: serving (cached): /src/repo/src/ExpertExtender/ExpertExtender.LanguageSelector.js
04 03 2021 11:58:13.935:DEBUG [middleware:source-files]: Requesting /base/src/experts/CommonsMediaType.js?1af5d5a5febf58aa02d4686ab72624797d1580cc
04 03 2021 11:58:13.935:DEBUG [middleware:source-files]: Fetching /src/repo/src/experts/CommonsMediaType.js
04 03 2021 11:58:13.935:DEBUG [web-server]: serving (cached): /src/repo/src/experts/CommonsMediaType.js
04 03 2021 11:58:13.936:DEBUG [middleware:source-files]: Requesting /base/src/experts/EmptyValue.js?fbe85ee6a129c81b36fb8f14b63a08cc2737426f
04 03 2021 11:58:13.936:DEBUG [middleware:source-files]: Fetching /src/repo/src/experts/EmptyValue.js
04 03 2021 11:58:13.936:DEBUG [web-server]: serving (cached): /src/repo/src/experts/EmptyValue.js
04 03 2021 11:58:13.937:DEBUG [middleware:source-files]: Requesting /base/src/experts/GeoShape.js?2ef96a0dd012f47ce8ddc91e6bb70b16cee0a642
04 03 2021 11:58:13.938:DEBUG [middleware:source-files]: Fetching /src/repo/src/experts/GeoShape.js
04 03 2021 11:58:13.941:DEBUG [web-server]: serving (cached): /src/repo/src/experts/GeoShape.js
04 03 2021 11:58:13.942:DEBUG [middleware:source-files]: Requesting /base/src/experts/StringValue.js?13e89eeb82d83d8f9f137680903ad66bf4d085c9
04 03 2021 11:58:13.942:DEBUG [middleware:source-files]: Fetching /src/repo/src/experts/StringValue.js
04 03 2021 11:58:13.942:DEBUG [web-server]: serving (cached): /src/repo/src/experts/StringValue.js
04 03 2021 11:58:13.943:DEBUG [middleware:source-files]: Requesting /base/src/experts/MonolingualText.js?147625356a94dbfaf62d8b15fddc4a6404595904
04 03 2021 11:58:13.943:DEBUG [middleware:source-files]: Fetching /src/repo/src/experts/MonolingualText.js
04 03 2021 11:58:13.943:DEBUG [web-server]: serving (cached): /src/repo/src/experts/MonolingualText.js
04 03 2021 11:58:13.944:DEBUG [middleware:source-files]: Requesting /base/src/experts/QuantityInput.js?61b36b749cf8399e53db0bdb742f6f3d7156c883
04 03 2021 11:58:13.944:DEBUG [middleware:source-files]: Fetching /src/repo/src/experts/QuantityInput.js
04 03 2021 11:58:13.944:DEBUG [web-server]: serving (cached): /src/repo/src/experts/QuantityInput.js
04 03 2021 11:58:13.945:DEBUG [middleware:source-files]: Requesting /base/src/experts/GlobeCoordinateInput.js?6a015419de69a9b64367ac50ef7c9dd22812eab0
04 03 2021 11:58:13.945:DEBUG [middleware:source-files]: Fetching /src/repo/src/experts/GlobeCoordinateInput.js
04 03 2021 11:58:13.946:DEBUG [web-server]: serving (cached): /src/repo/src/experts/GlobeCoordinateInput.js
04 03 2021 11:58:13.947:DEBUG [middleware:source-files]: Requesting /base/src/experts/SuggestedStringValue.js?2edd65d1deae9746d2468bdcb2238d51f339d922
04 03 2021 11:58:13.948:DEBUG [middleware:source-files]: Fetching /src/repo/src/experts/SuggestedStringValue.js
04 03 2021 11:58:13.948:DEBUG [web-server]: serving (cached): /src/repo/src/experts/SuggestedStringValue.js
04 03 2021 11:58:13.948:DEBUG [middleware:source-files]: Requesting /base/src/experts/UnDeserializableValue.js?73245ade6c68a980a095ff841e7a6859ff46f183
04 03 2021 11:58:13.949:DEBUG [middleware:source-files]: Fetching /src/repo/src/experts/UnDeserializableValue.js
04 03 2021 11:58:13.949:DEBUG [web-server]: serving (cached): /src/repo/src/experts/UnDeserializableValue.js
04 03 2021 11:58:13.950:DEBUG [middleware:source-files]: Requesting /base/src/experts/UnsupportedValue.js?64fe1fc1f061b502576fb262d1f939fad69ba4a1
04 03 2021 11:58:13.950:DEBUG [middleware:source-files]: Fetching /src/repo/src/experts/UnsupportedValue.js
04 03 2021 11:58:13.950:DEBUG [web-server]: serving (cached): /src/repo/src/experts/UnsupportedValue.js
04 03 2021 11:58:13.951:DEBUG [middleware:source-files]: Requesting /base/src/experts/TabularData.js?a032e5825451a30665ae0f80ed1a193447284f6d
04 03 2021 11:58:13.951:DEBUG [middleware:source-files]: Fetching /src/repo/src/experts/TabularData.js
04 03 2021 11:58:13.951:DEBUG [web-server]: serving (cached): /src/repo/src/experts/TabularData.js
04 03 2021 11:58:13.952:DEBUG [middleware:source-files]: Requesting /base/src/experts/TimeInput.js?744d6cf5247fb870a994a7df1191ca3952952097
04 03 2021 11:58:13.952:DEBUG [middleware:source-files]: Fetching /src/repo/src/experts/TimeInput.js
04 03 2021 11:58:13.952:DEBUG [web-server]: serving (cached): /src/repo/src/experts/TimeInput.js
04 03 2021 11:58:13.953:DEBUG [middleware:source-files]: Requesting /base/tests/sinon-qunit.js?064e800bf5673cf9cbf76ca775238829f065ae15
04 03 2021 11:58:13.954:DEBUG [middleware:source-files]: Fetching /src/repo/tests/sinon-qunit.js
04 03 2021 11:58:13.954:DEBUG [web-server]: serving (cached): /src/repo/tests/sinon-qunit.js
04 03 2021 11:58:13.955:DEBUG [middleware:source-files]: Requesting /base/tests/lib/jquery/jquery.AnimationEvent.tests.js?7021f41ce27ff9fc0c27984821fa9ec775ef142f
04 03 2021 11:58:13.955:DEBUG [middleware:source-files]: Fetching /src/repo/tests/lib/jquery/jquery.AnimationEvent.tests.js
04 03 2021 11:58:13.955:DEBUG [web-server]: serving (cached): /src/repo/tests/lib/jquery/jquery.AnimationEvent.tests.js
04 03 2021 11:58:13.956:DEBUG [middleware:source-files]: Requesting /base/tests/lib/jquery/jquery.PurposedCallbacks.tests.js?f396309671508bc454c8220724bbf140eb113f07
04 03 2021 11:58:13.956:DEBUG [middleware:source-files]: Fetching /src/repo/tests/lib/jquery/jquery.PurposedCallbacks.tests.js
04 03 2021 11:58:13.956:DEBUG [web-server]: serving (cached): /src/repo/tests/lib/jquery/jquery.PurposedCallbacks.tests.js
04 03 2021 11:58:13.957:DEBUG [middleware:source-files]: Requesting /base/tests/lib/jquery/jquery.animateWithEvent.tests.js?da12980e6a3e46d8398885914a647b44a1ed6c09
04 03 2021 11:58:13.957:DEBUG [middleware:source-files]: Fetching /src/repo/tests/lib/jquery/jquery.animateWithEvent.tests.js
04 03 2021 11:58:13.957:DEBUG [web-server]: serving (cached): /src/repo/tests/lib/jquery/jquery.animateWithEvent.tests.js
04 03 2021 11:58:13.958:DEBUG [middleware:source-files]: Requesting /base/tests/lib/jquery/jquery.focusAt.tests.js?a1d23f0a097f39a6c4fb993436ab12cf61acc867
04 03 2021 11:58:13.958:DEBUG [middleware:source-files]: Fetching /src/repo/tests/lib/jquery/jquery.focusAt.tests.js
04 03 2021 11:58:13.958:DEBUG [web-server]: serving (cached): /src/repo/tests/lib/jquery/jquery.focusAt.tests.js
04 03 2021 11:58:13.959:DEBUG [middleware:source-files]: Requesting /base/tests/lib/jquery/jquery.inputautoexpand.tests.js?c1d5a8f317f68f67d139b51cf6a7f3b334f449ad
04 03 2021 11:58:13.959:DEBUG [middleware:source-files]: Fetching /src/repo/tests/lib/jquery/jquery.inputautoexpand.tests.js
04 03 2021 11:58:13.959:DEBUG [web-server]: serving (cached): /src/repo/tests/lib/jquery/jquery.inputautoexpand.tests.js
04 03 2021 11:58:13.960:DEBUG [middleware:source-files]: Requesting /base/tests/lib/jquery.event/jquery.event.special.eachchange.tests.js?e7bf76e2e891330e1bbcc60573563324fbcbf4c3
04 03 2021 11:58:13.960:DEBUG [middleware:source-files]: Fetching /src/repo/tests/lib/jquery.event/jquery.event.special.eachchange.tests.js
04 03 2021 11:58:13.960:DEBUG [web-server]: serving (cached): /src/repo/tests/lib/jquery.event/jquery.event.special.eachchange.tests.js
04 03 2021 11:58:13.961:DEBUG [middleware:source-files]: Requesting /base/tests/lib/jquery/jquery.autocompletestring.tests.js?1d2af669c5dc070927ba5afe0c92ac0f29aba877
04 03 2021 11:58:13.961:DEBUG [middleware:source-files]: Fetching /src/repo/tests/lib/jquery/jquery.autocompletestring.tests.js
04 03 2021 11:58:13.961:DEBUG [web-server]: serving (cached): /src/repo/tests/lib/jquery/jquery.autocompletestring.tests.js
04 03 2021 11:58:13.962:DEBUG [middleware:source-files]: Requesting /base/tests/lib/jquery.ui/jquery.ui.inputextender.tests.js?d3be97b72c67c8513ac46495d5c6f96d20af4d8b
04 03 2021 11:58:13.962:DEBUG [middleware:source-files]: Fetching /src/repo/tests/lib/jquery.ui/jquery.ui.inputextender.tests.js
04 03 2021 11:58:13.962:DEBUG [web-server]: serving (cached): /src/repo/tests/lib/jquery.ui/jquery.ui.inputextender.tests.js
04 03 2021 11:58:13.963:DEBUG [middleware:source-files]: Requesting /base/tests/lib/jquery.ui/jquery.ui.listrotator.tests.js?d6a6a9d3b2af399271a87e447e6f40621af50c7f
04 03 2021 11:58:13.963:DEBUG [middleware:source-files]: Fetching /src/repo/tests/lib/jquery.ui/jquery.ui.listrotator.tests.js
04 03 2021 11:58:13.963:DEBUG [web-server]: serving (cached): /src/repo/tests/lib/jquery.ui/jquery.ui.listrotator.tests.js
04 03 2021 11:58:13.964:DEBUG [middleware:source-files]: Requesting /base/tests/lib/jquery.ui/jquery.ui.ooMenu.tests.js?44bf1e5ae214f89047b374d3acb4d155b87963de
04 03 2021 11:58:13.964:DEBUG [middleware:source-files]: Fetching /src/repo/tests/lib/jquery.ui/jquery.ui.ooMenu.tests.js
04 03 2021 11:58:13.964:DEBUG [web-server]: serving (cached): /src/repo/tests/lib/jquery.ui/jquery.ui.ooMenu.tests.js
04 03 2021 11:58:13.965:DEBUG [middleware:source-files]: Requesting /base/tests/lib/jquery.ui/jquery.ui.commonssuggester.tests.js?11990b6ab8b026f7ab5bd6cf0ece86b3c04adbd4
04 03 2021 11:58:13.965:DEBUG [middleware:source-files]: Fetching /src/repo/tests/lib/jquery.ui/jquery.ui.commonssuggester.tests.js
04 03 2021 11:58:13.965:DEBUG [web-server]: serving (cached): /src/repo/tests/lib/jquery.ui/jquery.ui.commonssuggester.tests.js
04 03 2021 11:58:13.966:DEBUG [middleware:source-files]: Requesting /base/tests/lib/jquery.ui/jquery.ui.suggester.tests.js?e4f5429992b24e1eae433d2bf635bf3ac0d2556b
04 03 2021 11:58:13.966:DEBUG [middleware:source-files]: Fetching /src/repo/tests/lib/jquery.ui/jquery.ui.suggester.tests.js
04 03 2021 11:58:13.967:DEBUG [web-server]: serving (cached): /src/repo/tests/lib/jquery.ui/jquery.ui.suggester.tests.js
04 03 2021 11:58:13.968:DEBUG [middleware:source-files]: Requesting /base/tests/lib/jquery.ui/jquery.ui.toggler.tests.js?dfb7e093a3346cc6b4ae6ee72b8f2e0e95d1c658
04 03 2021 11:58:13.969:DEBUG [middleware:source-files]: Fetching /src/repo/tests/lib/jquery.ui/jquery.ui.toggler.tests.js
04 03 2021 11:58:13.969:DEBUG [web-server]: serving (cached): /src/repo/tests/lib/jquery.ui/jquery.ui.toggler.tests.js
04 03 2021 11:58:13.970:DEBUG [middleware:source-files]: Requesting /base/tests/lib/jquery.ui/jquery.ui.preview.tests.js?04072d79d92287e1ae927d4b594d700bc63700b4
04 03 2021 11:58:13.970:DEBUG [middleware:source-files]: Fetching /src/repo/tests/lib/jquery.ui/jquery.ui.preview.tests.js
04 03 2021 11:58:13.970:DEBUG [web-server]: serving (cached): /src/repo/tests/lib/jquery.ui/jquery.ui.preview.tests.js
04 03 2021 11:58:13.971:DEBUG [middleware:source-files]: Requesting /base/tests/lib/util/util.HashMessageProvider.tests.js?c95cace7ec684f830638d7e21447775b4dfbd463
04 03 2021 11:58:13.971:DEBUG [middleware:source-files]: Fetching /src/repo/tests/lib/util/util.HashMessageProvider.tests.js
04 03 2021 11:58:13.972:DEBUG [web-server]: serving (cached): /src/repo/tests/lib/util/util.HashMessageProvider.tests.js
04 03 2021 11:58:13.973:DEBUG [middleware:source-files]: Requesting /base/tests/lib/util/util.Notifier.tests.js?ff2acac76939bf3eeef072f9cabcab4ae1e83bf2
04 03 2021 11:58:13.973:DEBUG [middleware:source-files]: Fetching /src/repo/tests/lib/util/util.Notifier.tests.js
04 03 2021 11:58:13.974:DEBUG [web-server]: serving (cached): /src/repo/tests/lib/util/util.Notifier.tests.js
04 03 2021 11:58:13.976:DEBUG [middleware:source-files]: Requesting /base/tests/lib/jquery.util/jquery.util.adaptlettercase.tests.js?85224589fdd48c5aec846fa089e06b5cb46172fe
04 03 2021 11:58:13.976:DEBUG [middleware:source-files]: Fetching /src/repo/tests/lib/jquery.util/jquery.util.adaptlettercase.tests.js
04 03 2021 11:58:13.976:DEBUG [web-server]: serving (cached): /src/repo/tests/lib/jquery.util/jquery.util.adaptlettercase.tests.js
04 03 2021 11:58:13.978:DEBUG [middleware:source-files]: Requesting /base/tests/lib/jquery.util/jquery.util.getscrollbarwidth.tests.js?5e2113326f276ecd4f9ebf5e532192fe627fc321
04 03 2021 11:58:13.979:DEBUG [middleware:source-files]: Fetching /src/repo/tests/lib/jquery.util/jquery.util.getscrollbarwidth.tests.js
04 03 2021 11:58:13.979:DEBUG [web-server]: serving (cached): /src/repo/tests/lib/jquery.util/jquery.util.getscrollbarwidth.tests.js
04 03 2021 11:58:13.982:DEBUG [middleware:source-files]: Requesting /base/tests/src/jquery.valueview.tests.MockExpert.js?853bc5ac49010ae9439bf5614758d7924da86534
04 03 2021 11:58:13.982:DEBUG [middleware:source-files]: Fetching /src/repo/tests/src/jquery.valueview.tests.MockExpert.js
04 03 2021 11:58:13.982:DEBUG [web-server]: serving (cached): /src/repo/tests/src/jquery.valueview.tests.MockExpert.js
04 03 2021 11:58:13.983:DEBUG [middleware:source-files]: Requesting /base/tests/src/jquery.valueview.ExpertStore.tests.js?a4bf7f13e189c1cbaea3061c4f2095a4e3fb7e70
04 03 2021 11:58:13.983:DEBUG [middleware:source-files]: Fetching /src/repo/tests/src/jquery.valueview.ExpertStore.tests.js
04 03 2021 11:58:13.984:DEBUG [web-server]: serving (cached): /src/repo/tests/src/jquery.valueview.ExpertStore.tests.js
04 03 2021 11:58:13.985:DEBUG [middleware:source-files]: Requesting /base/tests/src/jquery.valueview.tests.MockViewState.js?a384cda51e5880046a573b99e5dc4421df11b30f
04 03 2021 11:58:13.985:DEBUG [middleware:source-files]: Fetching /src/repo/tests/src/jquery.valueview.tests.MockViewState.js
04 03 2021 11:58:13.986:DEBUG [web-server]: serving (cached): /src/repo/tests/src/jquery.valueview.tests.MockViewState.js
04 03 2021 11:58:13.986:DEBUG [middleware:source-files]: Requesting /base/tests/src/jquery.valueview.tests.testExpert.js?148c503e2c2d2a2fb275fc65580be9c7957daae3
04 03 2021 11:58:13.987:DEBUG [middleware:source-files]: Fetching /src/repo/tests/src/jquery.valueview.tests.testExpert.js
04 03 2021 11:58:13.988:DEBUG [web-server]: serving (cached): /src/repo/tests/src/jquery.valueview.tests.testExpert.js
04 03 2021 11:58:13.990:DEBUG [middleware:source-files]: Requesting /base/tests/lib/util/util.highlightSubstring.tests.js?909281b35444d734666e1a93510782573b0cbac4
04 03 2021 11:58:13.991:DEBUG [middleware:source-files]: Fetching /src/repo/tests/lib/util/util.highlightSubstring.tests.js
04 03 2021 11:58:13.991:DEBUG [web-server]: serving (cached): /src/repo/tests/lib/util/util.highlightSubstring.tests.js
04 03 2021 11:58:13.992:DEBUG [middleware:source-files]: Requesting /base/tests/src/jquery.valueview.tests.MockViewState.tests.js?755c451c6bedc02f8ccc9ba846defaecd455cdd8
04 03 2021 11:58:13.992:DEBUG [middleware:source-files]: Fetching /src/repo/tests/src/jquery.valueview.tests.MockViewState.tests.js
04 03 2021 11:58:13.995:DEBUG [web-server]: serving (cached): /src/repo/tests/src/jquery.valueview.tests.MockViewState.tests.js
04 03 2021 11:58:13.995:DEBUG [middleware:source-files]: Requesting /base/tests/src/jquery.valueview.valueview.tests.js?230936faf0487ec10c13bed0073ce81d65882d9a
04 03 2021 11:58:13.996:DEBUG [middleware:source-files]: Fetching /src/repo/tests/src/jquery.valueview.valueview.tests.js
04 03 2021 11:58:13.996:DEBUG [web-server]: serving (cached): /src/repo/tests/src/jquery.valueview.valueview.tests.js
04 03 2021 11:58:13.997:DEBUG [middleware:source-files]: Requesting /base/tests/src/experts/GlobeCoordinateInput.tests.js?581d967420795dfc8f11da3d38ed56ddd22d6ac2
04 03 2021 11:58:13.997:DEBUG [middleware:source-files]: Fetching /src/repo/tests/src/experts/GlobeCoordinateInput.tests.js
04 03 2021 11:58:13.997:DEBUG [web-server]: serving (cached): /src/repo/tests/src/experts/GlobeCoordinateInput.tests.js
04 03 2021 11:58:13.998:DEBUG [middleware:source-files]: Requesting /base/tests/src/experts/MonolingualText.tests.js?033cb362ce34877ae6c4d5e8eec366c75b03f96f
04 03 2021 11:58:13.998:DEBUG [middleware:source-files]: Fetching /src/repo/tests/src/experts/MonolingualText.tests.js
04 03 2021 11:58:13.999:DEBUG [web-server]: serving (cached): /src/repo/tests/src/experts/MonolingualText.tests.js
04 03 2021 11:58:14.000:DEBUG [middleware:source-files]: Requesting /base/tests/src/experts/QuantityInput.tests.js?027f4f5dda5518cf56b85d10f084f3c641b41d40
04 03 2021 11:58:14.000:DEBUG [middleware:source-files]: Fetching /src/repo/tests/src/experts/QuantityInput.tests.js
04 03 2021 11:58:14.001:DEBUG [web-server]: serving (cached): /src/repo/tests/src/experts/QuantityInput.tests.js
04 03 2021 11:58:14.006:DEBUG [middleware:source-files]: Requesting /base/tests/src/experts/StringValue.tests.js?1a7d687c4280dde708527d01e87427f7624cc303
04 03 2021 11:58:14.006:DEBUG [middleware:source-files]: Fetching /src/repo/tests/src/experts/StringValue.tests.js
04 03 2021 11:58:14.007:DEBUG [web-server]: serving (cached): /src/repo/tests/src/experts/StringValue.tests.js
04 03 2021 11:58:14.009:DEBUG [middleware:source-files]: Requesting /base/tests/src/experts/UnDeserializableValueTests.js?e26c78dfb2c44cb93cc0c1bd5f9f63cbd2010aa1
04 03 2021 11:58:14.010:DEBUG [middleware:source-files]: Fetching /src/repo/tests/src/experts/UnDeserializableValueTests.js
04 03 2021 11:58:14.010:DEBUG [web-server]: serving (cached): /src/repo/tests/src/experts/UnDeserializableValueTests.js
04 03 2021 11:58:14.013:DEBUG [middleware:source-files]: Requesting /base/tests/src/ExpertExtender/testExpertExtenderExtension.js?cdc331fa55aed891fa1502bc53a23afecdc3248c
04 03 2021 11:58:14.013:DEBUG [middleware:source-files]: Fetching /src/repo/tests/src/ExpertExtender/testExpertExtenderExtension.js
04 03 2021 11:58:14.015:DEBUG [web-server]: serving (cached): /src/repo/tests/src/ExpertExtender/testExpertExtenderExtension.js
04 03 2021 11:58:14.020:DEBUG [middleware:source-files]: Requesting /base/tests/src/ExpertExtender/ExpertExtender.Container.tests.js?e2e00b7e621ad7c30df5a36b60773fcfddcee361
04 03 2021 11:58:14.020:DEBUG [middleware:source-files]: Fetching /src/repo/tests/src/ExpertExtender/ExpertExtender.Container.tests.js
04 03 2021 11:58:14.023:DEBUG [web-server]: serving (cached): /src/repo/tests/src/ExpertExtender/ExpertExtender.Container.tests.js
04 03 2021 11:58:14.025:DEBUG [middleware:source-files]: Requesting /base/tests/src/ExpertExtender/ExpertExtender.LanguageSelector.tests.js?44602c83bf647b9aab35b57da795b1ae6d969703
04 03 2021 11:58:14.025:DEBUG [middleware:source-files]: Fetching /src/repo/tests/src/ExpertExtender/ExpertExtender.LanguageSelector.tests.js
04 03 2021 11:58:14.026:DEBUG [web-server]: serving (cached): /src/repo/tests/src/ExpertExtender/ExpertExtender.LanguageSelector.tests.js
04 03 2021 11:58:14.028:DEBUG [middleware:source-files]: Requesting /base/tests/src/ExpertExtender/ExpertExtender.Listrotator.tests.js?9a024cb629680f60ee41b5c53f5de7e8d371c573
04 03 2021 11:58:14.028:DEBUG [middleware:source-files]: Fetching /src/repo/tests/src/ExpertExtender/ExpertExtender.Listrotator.tests.js
04 03 2021 11:58:14.029:DEBUG [web-server]: serving (cached): /src/repo/tests/src/ExpertExtender/ExpertExtender.Listrotator.tests.js
04 03 2021 11:58:14.030:DEBUG [middleware:source-files]: Requesting /base/tests/src/experts/TimeInput.tests.js?d9d15f97d96890701a0443d825a77480be1c183e
04 03 2021 11:58:14.031:DEBUG [middleware:source-files]: Fetching /src/repo/tests/src/experts/TimeInput.tests.js
04 03 2021 11:58:14.031:DEBUG [web-server]: serving (cached): /src/repo/tests/src/experts/TimeInput.tests.js
04 03 2021 11:58:14.033:DEBUG [middleware:source-files]: Requesting /base/tests/src/ExpertExtender/ExpertExtender.Preview.tests.js?30c6f7b866375add5df4e885ed54681e9a6d403e
04 03 2021 11:58:14.033:DEBUG [middleware:source-files]: Fetching /src/repo/tests/src/ExpertExtender/ExpertExtender.Preview.tests.js
04 03 2021 11:58:14.034:DEBUG [web-server]: serving (cached): /src/repo/tests/src/ExpertExtender/ExpertExtender.Preview.tests.js
04 03 2021 11:58:14.035:DEBUG [middleware:source-files]: Requesting /base/tests/src/ExpertExtender/ExpertExtender.UnitSelector.tests.js?b0d570607d9f86c2dd0441a22112b06f3314bd6a
04 03 2021 11:58:14.035:DEBUG [middleware:source-files]: Fetching /src/repo/tests/src/ExpertExtender/ExpertExtender.UnitSelector.tests.js
04 03 2021 11:58:14.036:DEBUG [web-server]: serving (cached): /src/repo/tests/src/ExpertExtender/ExpertExtender.UnitSelector.tests.js
04 03 2021 11:58:14.037:DEBUG [middleware:source-files]: Requesting /base/tests/src/ExpertExtender/ExpertExtender.tests.js?8c2adb462543bfc6ae09e567281c666919213cd2
04 03 2021 11:58:14.037:DEBUG [middleware:source-files]: Fetching /src/repo/tests/src/ExpertExtender/ExpertExtender.tests.js
04 03 2021 11:58:14.038:DEBUG [web-server]: serving (cached): /src/repo/tests/src/ExpertExtender/ExpertExtender.tests.js
LOG: 'JQMIGRATE: Migrate is installed with logging active, version 3.3.2'
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
WARN: 'JQMIGRATE: jQuery.expr[':'] is deprecated; use jQuery.expr.pseudos'
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
WARN: 'JQMIGRATE: jQuery.isFunction() is deprecated'
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
04 03 2021 11:58:14.509:DEBUG [Firefox 78.0 (Linux x86_64)]: CONFIGURING -> EXECUTING

Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 0 of 333 SUCCESS (0 secs / 0 secs)
Firefox 78.0 (Linux x86_64) WARN: 'JQMIGRATE: jQuery.trim is deprecated; use String.prototype.trim'
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 0 of 333 SUCCESS (0 secs / 0 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 1 of 333 SUCCESS (0 secs / 0.006 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 2 of 333 SUCCESS (0 secs / 0.007 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 3 of 333 SUCCESS (0 secs / 0.009 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 4 of 333 SUCCESS (0 secs / 0.011 secs)
Firefox 78.0 (Linux x86_64) WARN: 'JQMIGRATE: jQuery.isArray is deprecated; use Array.isArray'
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 4 of 333 SUCCESS (0 secs / 0.011 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 5 of 333 SUCCESS (0 secs / 0.014 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 6 of 333 SUCCESS (0 secs / 0.016 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 7 of 333 SUCCESS (0 secs / 0.018 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 8 of 333 SUCCESS (0 secs / 0.019 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 9 of 333 SUCCESS (0 secs / 0.02 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 10 of 333 SUCCESS (0 secs / 0.021 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 11 of 333 SUCCESS (0 secs / 0.022 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 12 of 333 SUCCESS (0 secs / 0.023 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 13 of 333 SUCCESS (0 secs / 0.024 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 14 of 333 SUCCESS (0 secs / 0.025 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 15 of 333 SUCCESS (0 secs / 0.027 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 16 of 333 SUCCESS (0 secs / 0.027 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 17 of 333 SUCCESS (0 secs / 0.027 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 18 of 333 SUCCESS (0 secs / 0.027 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 19 of 333 SUCCESS (0 secs / 0.028 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 20 of 333 SUCCESS (0 secs / 0.029 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 21 of 333 SUCCESS (0 secs / 0.03 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 22 of 333 SUCCESS (0 secs / 0.031 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 23 of 333 SUCCESS (0 secs / 0.032 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 24 of 333 SUCCESS (0 secs / 0.032 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 25 of 333 SUCCESS (0 secs / 0.053 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 26 of 333 SUCCESS (0 secs / 0.058 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 27 of 333 SUCCESS (0 secs / 0.06 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 28 of 333 SUCCESS (0 secs / 0.082 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 29 of 333 SUCCESS (0 secs / 0.083 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 30 of 333 SUCCESS (0 secs / 0.501 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 31 of 333 SUCCESS (0 secs / 0.506 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 32 of 333 SUCCESS (0 secs / 0.508 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 33 of 333 SUCCESS (0 secs / 0.509 secs)
Firefox 78.0 (Linux x86_64) WARN: 'JQMIGRATE: jQuery.fn.focus() event shorthand is deprecated'
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 33 of 333 SUCCESS (0 secs / 0.509 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 34 of 333 SUCCESS (0 secs / 0.53 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 35 of 333 SUCCESS (0 secs / 0.548 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 36 of 333 SUCCESS (0 secs / 0.578 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 37 of 333 SUCCESS (0 secs / 0.606 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 38 of 333 SUCCESS (0 secs / 0.613 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 39 of 333 SUCCESS (0 secs / 0.616 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 40 of 333 SUCCESS (0 secs / 0.617 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 41 of 333 SUCCESS (0 secs / 0.618 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 42 of 333 SUCCESS (0 secs / 0.618 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 43 of 333 SUCCESS (0 secs / 0.619 secs)
Firefox 78.0 (Linux x86_64) WARN: 'JQMIGRATE: jQuery.fn.blur() event shorthand is deprecated'
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 43 of 333 SUCCESS (0 secs / 0.619 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 44 of 333 SUCCESS (0 secs / 0.622 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 45 of 333 SUCCESS (0 secs / 0.623 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 46 of 333 SUCCESS (0 secs / 0.625 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 47 of 333 SUCCESS (0 secs / 0.626 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 48 of 333 SUCCESS (0 secs / 0.627 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 49 of 333 SUCCESS (0 secs / 0.629 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 50 of 333 SUCCESS (0 secs / 0.636 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 51 of 333 SUCCESS (0 secs / 0.646 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 52 of 333 SUCCESS (0 secs / 0.651 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 53 of 333 SUCCESS (0 secs / 0.653 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 54 of 333 SUCCESS (0 secs / 0.694 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 55 of 333 SUCCESS (0 secs / 0.723 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 56 of 333 SUCCESS (0 secs / 0.745 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 57 of 333 SUCCESS (0 secs / 0.757 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 58 of 333 SUCCESS (0 secs / 0.781 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 59 of 333 SUCCESS (0 secs / 0.784 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 60 of 333 SUCCESS (0 secs / 0.786 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 61 of 333 SUCCESS (0 secs / 0.787 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 62 of 333 SUCCESS (0 secs / 0.788 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 63 of 333 SUCCESS (0 secs / 0.789 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 64 of 333 SUCCESS (0 secs / 0.79 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 65 of 333 SUCCESS (0 secs / 0.792 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 66 of 333 SUCCESS (0 secs / 0.793 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 67 of 333 SUCCESS (0 secs / 0.796 secs)
Firefox 78.0 (Linux x86_64) WARN: 'JQMIGRATE: jQuery.fn.bind() is deprecated'
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 67 of 333 SUCCESS (0 secs / 0.796 secs)
Firefox 78.0 (Linux x86_64) WARN: 'JQMIGRATE: jQuery.fn.unbind() is deprecated'
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 67 of 333 SUCCESS (0 secs / 0.796 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 68 of 333 SUCCESS (0 secs / 0.814 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 69 of 333 SUCCESS (0 secs / 0.827 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 70 of 333 SUCCESS (0 secs / 0.86 secs)
Firefox 78.0 (Linux x86_64) WARN: 'JQMIGRATE: jQuery.isWindow() is deprecated'
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 70 of 333 SUCCESS (0 secs / 0.86 secs)
Firefox 78.0 (Linux x86_64) WARN: 'JQMIGRATE: jQuery.fn.offset() requires a valid DOM element'
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 70 of 333 SUCCESS (0 secs / 0.86 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 71 of 333 SUCCESS (0 secs / 0.921 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 72 of 333 SUCCESS (0 secs / 0.927 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 73 of 333 SUCCESS (0 secs / 0.95 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 74 of 333 SUCCESS (0 secs / 0.971 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 75 of 333 SUCCESS (0 secs / 1.194 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 76 of 333 SUCCESS (0 secs / 1.429 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 77 of 333 SUCCESS (0 secs / 2.151 secs)
Firefox 78.0 (Linux x86_64) WARN: 'JQMIGRATE: jQuery.fn.delegate() is deprecated'
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 77 of 333 SUCCESS (0 secs / 2.151 secs)
Firefox 78.0 (Linux x86_64) WARN: 'JQMIGRATE: jQuery.fn.andSelf() is deprecated and removed, use jQuery.fn.addBack()'
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 77 of 333 SUCCESS (0 secs / 2.151 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 78 of 333 SUCCESS (0 secs / 2.191 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 79 of 333 SUCCESS (0 secs / 2.211 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 80 of 333 SUCCESS (0 secs / 2.238 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 81 of 333 SUCCESS (0 secs / 2.285 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 82 of 333 SUCCESS (0 secs / 2.324 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 83 of 333 SUCCESS (0 secs / 2.349 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 84 of 333 SUCCESS (0 secs / 2.373 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 85 of 333 SUCCESS (0 secs / 2.381 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 86 of 333 SUCCESS (0 secs / 2.409 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 87 of 333 SUCCESS (0 secs / 2.43 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 88 of 333 SUCCESS (0 secs / 2.438 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 89 of 333 SUCCESS (0 secs / 2.464 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 90 of 333 SUCCESS (0 secs / 2.48 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 91 of 333 SUCCESS (0 secs / 2.493 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 92 of 333 SUCCESS (0 secs / 2.498 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 93 of 333 SUCCESS (0 secs / 2.511 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 94 of 333 SUCCESS (0 secs / 2.522 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 95 of 333 SUCCESS (0 secs / 2.537 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 96 of 333 SUCCESS (0 secs / 2.538 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 97 of 333 SUCCESS (0 secs / 2.541 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 98 of 333 SUCCESS (0 secs / 2.547 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 99 of 333 SUCCESS (0 secs / 2.552 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 100 of 333 SUCCESS (0 secs / 2.569 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 101 of 333 SUCCESS (0 secs / 2.628 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 102 of 333 SUCCESS (0 secs / 2.665 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 103 of 333 SUCCESS (0 secs / 2.703 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 104 of 333 SUCCESS (0 secs / 2.843 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 105 of 333 SUCCESS (0 secs / 3.192 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 106 of 333 SUCCESS (0 secs / 3.235 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 107 of 333 SUCCESS (0 secs / 3.243 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 108 of 333 SUCCESS (0 secs / 3.257 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 109 of 333 SUCCESS (0 secs / 3.257 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 110 of 333 SUCCESS (0 secs / 3.258 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 111 of 333 SUCCESS (0 secs / 3.259 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 112 of 333 SUCCESS (0 secs / 3.259 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 113 of 333 SUCCESS (0 secs / 3.261 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 114 of 333 SUCCESS (0 secs / 3.262 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 115 of 333 SUCCESS (0 secs / 3.263 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 116 of 333 SUCCESS (0 secs / 3.264 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 117 of 333 SUCCESS (0 secs / 3.266 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 118 of 333 SUCCESS (0 secs / 3.266 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 119 of 333 SUCCESS (0 secs / 3.266 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 120 of 333 SUCCESS (0 secs / 3.267 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 121 of 333 SUCCESS (0 secs / 3.268 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 122 of 333 SUCCESS (0 secs / 3.268 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 123 of 333 SUCCESS (0 secs / 3.269 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 124 of 333 SUCCESS (0 secs / 3.27 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 125 of 333 SUCCESS (0 secs / 3.27 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 126 of 333 SUCCESS (0 secs / 3.27 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 127 of 333 SUCCESS (0 secs / 3.27 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 128 of 333 SUCCESS (0 secs / 3.271 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 129 of 333 SUCCESS (0 secs / 3.271 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 130 of 333 SUCCESS (0 secs / 3.271 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 131 of 333 SUCCESS (0 secs / 3.271 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 132 of 333 SUCCESS (0 secs / 3.271 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 133 of 333 SUCCESS (0 secs / 3.271 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 134 of 333 SUCCESS (0 secs / 3.271 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 135 of 333 SUCCESS (0 secs / 3.271 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 136 of 333 SUCCESS (0 secs / 3.271 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 137 of 333 SUCCESS (0 secs / 3.271 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 138 of 333 SUCCESS (0 secs / 3.272 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 139 of 333 SUCCESS (0 secs / 3.272 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 140 of 333 SUCCESS (0 secs / 3.272 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 141 of 333 SUCCESS (0 secs / 3.272 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 142 of 333 SUCCESS (0 secs / 3.272 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 143 of 333 SUCCESS (0 secs / 3.272 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 144 of 333 SUCCESS (0 secs / 3.273 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 145 of 333 SUCCESS (0 secs / 3.273 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 146 of 333 SUCCESS (0 secs / 3.273 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 147 of 333 SUCCESS (0 secs / 3.273 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 148 of 333 SUCCESS (0 secs / 3.277 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 149 of 333 SUCCESS (0 secs / 3.28 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 150 of 333 SUCCESS (0 secs / 3.282 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 151 of 333 SUCCESS (0 secs / 3.284 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 152 of 333 SUCCESS (0 secs / 3.286 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 153 of 333 SUCCESS (0 secs / 3.29 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 154 of 333 SUCCESS (0 secs / 3.291 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 155 of 333 SUCCESS (0 secs / 3.295 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 156 of 333 SUCCESS (0 secs / 3.321 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 157 of 333 SUCCESS (0 secs / 3.345 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 158 of 333 SUCCESS (0 secs / 3.368 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 159 of 333 SUCCESS (0 secs / 3.391 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 160 of 333 SUCCESS (0 secs / 3.414 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 161 of 333 SUCCESS (0 secs / 3.448 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 162 of 333 SUCCESS (0 secs / 3.469 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 163 of 333 SUCCESS (0 secs / 3.488 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 164 of 333 SUCCESS (0 secs / 3.511 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 165 of 333 SUCCESS (0 secs / 3.529 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 166 of 333 SUCCESS (0 secs / 3.549 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 167 of 333 SUCCESS (0 secs / 3.57 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 168 of 333 SUCCESS (0 secs / 3.59 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 169 of 333 SUCCESS (0 secs / 3.611 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 170 of 333 SUCCESS (0 secs / 3.628 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 171 of 333 SUCCESS (0 secs / 3.65 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 172 of 333 SUCCESS (0 secs / 3.668 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 173 of 333 SUCCESS (0 secs / 3.687 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 174 of 333 SUCCESS (0 secs / 3.703 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 175 of 333 SUCCESS (0 secs / 3.718 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 176 of 333 SUCCESS (0 secs / 3.729 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 177 of 333 SUCCESS (0 secs / 3.74 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 178 of 333 SUCCESS (0 secs / 3.758 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 179 of 333 SUCCESS (0 secs / 3.769 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 180 of 333 SUCCESS (0 secs / 3.782 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 181 of 333 SUCCESS (0 secs / 3.792 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 182 of 333 SUCCESS (0 secs / 4.135 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 183 of 333 SUCCESS (0 secs / 4.139 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 184 of 333 SUCCESS (0 secs / 4.141 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 185 of 333 SUCCESS (0 secs / 4.143 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 186 of 333 SUCCESS (0 secs / 4.145 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 187 of 333 SUCCESS (0 secs / 4.148 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 188 of 333 SUCCESS (0 secs / 4.15 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 189 of 333 SUCCESS (0 secs / 4.153 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 190 of 333 SUCCESS (0 secs / 4.155 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 191 of 333 SUCCESS (0 secs / 4.157 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 192 of 333 SUCCESS (0 secs / 4.16 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 193 of 333 SUCCESS (0 secs / 4.163 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 194 of 333 SUCCESS (0 secs / 4.166 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 195 of 333 SUCCESS (0 secs / 4.168 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 196 of 333 SUCCESS (0 secs / 4.17 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 197 of 333 SUCCESS (0 secs / 4.173 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 198 of 333 SUCCESS (0 secs / 4.179 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 199 of 333 SUCCESS (0 secs / 4.183 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 200 of 333 SUCCESS (0 secs / 4.189 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 201 of 333 SUCCESS (0 secs / 4.191 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 202 of 333 SUCCESS (0 secs / 4.193 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 203 of 333 SUCCESS (0 secs / 4.196 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 204 of 333 SUCCESS (0 secs / 4.2 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 205 of 333 SUCCESS (0 secs / 4.212 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 206 of 333 SUCCESS (0 secs / 4.216 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 207 of 333 SUCCESS (0 secs / 4.22 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 208 of 333 SUCCESS (0 secs / 4.222 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 209 of 333 SUCCESS (0 secs / 4.224 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 210 of 333 SUCCESS (0 secs / 4.227 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 211 of 333 SUCCESS (0 secs / 4.229 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 212 of 333 SUCCESS (0 secs / 4.232 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 213 of 333 SUCCESS (0 secs / 4.234 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 214 of 333 SUCCESS (0 secs / 4.236 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 215 of 333 SUCCESS (0 secs / 4.237 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 216 of 333 SUCCESS (0 secs / 4.239 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 217 of 333 SUCCESS (0 secs / 4.242 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 218 of 333 SUCCESS (0 secs / 4.245 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 219 of 333 SUCCESS (0 secs / 4.247 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 220 of 333 SUCCESS (0 secs / 4.249 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 221 of 333 SUCCESS (0 secs / 4.251 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 222 of 333 SUCCESS (0 secs / 4.257 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 223 of 333 SUCCESS (0 secs / 4.261 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 224 of 333 SUCCESS (0 secs / 4.267 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 225 of 333 SUCCESS (0 secs / 4.27 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 226 of 333 SUCCESS (0 secs / 4.271 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 227 of 333 SUCCESS (0 secs / 4.275 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 228 of 333 SUCCESS (0 secs / 4.282 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 229 of 333 SUCCESS (0 secs / 4.288 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 230 of 333 SUCCESS (0 secs / 4.291 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 231 of 333 SUCCESS (0 secs / 4.291 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 232 of 333 SUCCESS (0 secs / 4.292 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 233 of 333 SUCCESS (0 secs / 4.293 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 234 of 333 SUCCESS (0 secs / 4.294 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 235 of 333 SUCCESS (0 secs / 4.294 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 236 of 333 SUCCESS (0 secs / 4.296 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 237 of 333 SUCCESS (0 secs / 4.297 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 238 of 333 SUCCESS (0 secs / 4.298 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 239 of 333 SUCCESS (0 secs / 4.299 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 240 of 333 SUCCESS (0 secs / 4.3 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 241 of 333 SUCCESS (0 secs / 4.301 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 242 of 333 SUCCESS (0 secs / 4.301 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 243 of 333 SUCCESS (0 secs / 4.302 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 244 of 333 SUCCESS (0 secs / 4.303 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 245 of 333 SUCCESS (0 secs / 4.304 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 246 of 333 SUCCESS (0 secs / 4.304 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 247 of 333 SUCCESS (0 secs / 4.308 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 248 of 333 SUCCESS (0 secs / 4.311 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 249 of 333 SUCCESS (0 secs / 4.313 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 250 of 333 SUCCESS (0 secs / 4.314 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 251 of 333 SUCCESS (0 secs / 4.315 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 252 of 333 SUCCESS (0 secs / 4.318 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 253 of 333 SUCCESS (0 secs / 4.32 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 254 of 333 SUCCESS (0 secs / 4.322 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 255 of 333 SUCCESS (0 secs / 4.323 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 256 of 333 SUCCESS (0 secs / 4.353 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 257 of 333 SUCCESS (0 secs / 4.374 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 258 of 333 SUCCESS (0 secs / 4.404 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 259 of 333 SUCCESS (0 secs / 4.435 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 260 of 333 SUCCESS (0 secs / 4.456 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 261 of 333 SUCCESS (0 secs / 4.487 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 262 of 333 SUCCESS (0 secs / 4.514 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 263 of 333 SUCCESS (0 secs / 4.535 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 264 of 333 SUCCESS (0 secs / 4.569 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 265 of 333 SUCCESS (0 secs / 4.612 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 266 of 333 SUCCESS (0 secs / 4.646 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 267 of 333 SUCCESS (0 secs / 4.67 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 268 of 333 SUCCESS (0 secs / 4.689 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 269 of 333 SUCCESS (0 secs / 4.708 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 270 of 333 SUCCESS (0 secs / 4.728 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 271 of 333 SUCCESS (0 secs / 4.756 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 272 of 333 SUCCESS (0 secs / 4.778 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 273 of 333 SUCCESS (0 secs / 4.809 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 274 of 333 SUCCESS (0 secs / 4.829 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 275 of 333 SUCCESS (0 secs / 4.852 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 276 of 333 SUCCESS (0 secs / 4.877 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 277 of 333 SUCCESS (0 secs / 4.905 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 278 of 333 SUCCESS (0 secs / 4.929 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 279 of 333 SUCCESS (0 secs / 4.952 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 280 of 333 SUCCESS (0 secs / 4.953 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 281 of 333 SUCCESS (0 secs / 4.953 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 282 of 333 SUCCESS (0 secs / 4.954 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 283 of 333 SUCCESS (0 secs / 4.955 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 284 of 333 SUCCESS (0 secs / 4.955 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 285 of 333 SUCCESS (0 secs / 4.955 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 286 of 333 SUCCESS (0 secs / 4.956 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 287 of 333 SUCCESS (0 secs / 4.957 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 288 of 333 SUCCESS (0 secs / 4.957 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 289 of 333 SUCCESS (0 secs / 4.957 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 290 of 333 SUCCESS (0 secs / 4.957 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 291 of 333 SUCCESS (0 secs / 4.958 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 292 of 333 SUCCESS (0 secs / 4.958 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 293 of 333 SUCCESS (0 secs / 4.958 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 294 of 333 SUCCESS (0 secs / 4.958 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 295 of 333 SUCCESS (0 secs / 4.958 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 296 of 333 SUCCESS (0 secs / 4.959 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 297 of 333 SUCCESS (0 secs / 4.959 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 298 of 333 SUCCESS (0 secs / 4.959 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 299 of 333 SUCCESS (0 secs / 4.96 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 300 of 333 SUCCESS (0 secs / 4.964 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 301 of 333 SUCCESS (0 secs / 4.964 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 302 of 333 SUCCESS (0 secs / 4.964 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 303 of 333 SUCCESS (0 secs / 4.965 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 304 of 333 SUCCESS (0 secs / 4.967 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 305 of 333 SUCCESS (0 secs / 4.968 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 306 of 333 SUCCESS (0 secs / 4.968 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 307 of 333 SUCCESS (0 secs / 4.97 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 308 of 333 SUCCESS (0 secs / 4.971 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 309 of 333 SUCCESS (0 secs / 4.972 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 310 of 333 SUCCESS (0 secs / 4.973 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 311 of 333 SUCCESS (0 secs / 4.978 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 312 of 333 SUCCESS (0 secs / 4.981 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 313 of 333 SUCCESS (0 secs / 4.985 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 314 of 333 SUCCESS (0 secs / 4.989 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 315 of 333 SUCCESS (0 secs / 4.992 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 316 of 333 SUCCESS (0 secs / 4.996 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 317 of 333 SUCCESS (0 secs / 5.004 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 318 of 333 SUCCESS (0 secs / 5.012 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 319 of 333 SUCCESS (0 secs / 5.022 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 320 of 333 SUCCESS (0 secs / 5.03 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 321 of 333 SUCCESS (0 secs / 5.257 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 322 of 333 SUCCESS (0 secs / 5.26 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 323 of 333 SUCCESS (0 secs / 5.261 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 324 of 333 SUCCESS (0 secs / 5.262 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 325 of 333 SUCCESS (0 secs / 5.263 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 326 of 333 SUCCESS (0 secs / 5.263 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 327 of 333 SUCCESS (0 secs / 5.268 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 328 of 333 SUCCESS (0 secs / 5.272 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 329 of 333 SUCCESS (0 secs / 5.275 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 330 of 333 SUCCESS (0 secs / 5.276 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 331 of 333 SUCCESS (0 secs / 5.277 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 332 of 333 SUCCESS (0 secs / 5.278 secs)
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 333 of 333 SUCCESS (0 secs / 5.328 secs)
04 03 2021 11:58:19.985:DEBUG [Firefox 78.0 (Linux x86_64)]: EXECUTING -> CONNECTED
Chrome Headless 87.0.4280.88 (Linux x86_64): Executed 27 of 303 DISCONNECTED (2.096 secs / 0.049 secs)
Firefox 78.0 (Linux x86_64): Executed 333 of 333 SUCCESS (5.476 secs / 5.328 secs)
04 03 2021 11:58:19.986:DEBUG [launcher]: CAPTURED -> BEING_KILLED
04 03 2021 11:58:19.987:DEBUG [launcher]: BEING_KILLED -> BEING_FORCE_KILLED
04 03 2021 11:58:19.987:DEBUG [Firefox 78.0 (Linux x86_64)]: CONNECTED -> DISCONNECTED
04 03 2021 11:58:19.989:DEBUG [karma-server]: Run complete, exiting.
04 03 2021 11:58:19.989:DEBUG [launcher]: Disconnecting all browsers
04 03 2021 11:58:19.990:DEBUG [launcher]: FINISHED -> BEING_FORCE_KILLED
04 03 2021 11:58:19.990:DEBUG [launcher]: BEING_FORCE_KILLED -> BEING_FORCE_KILLED
04 03 2021 11:58:19.999:DEBUG [proxy]: Destroying proxy agents
04 03 2021 11:58:20.038:DEBUG [launcher]: Process FirefoxHeadless exited with code null and signal SIGTERM
04 03 2021 11:58:20.039:DEBUG [temp-dir]: Cleaning temp dir /tmp/karma-20283538
04 03 2021 11:58:20.148:DEBUG [launcher]: Finished all browsers
04 03 2021 11:58:20.149:DEBUG [launcher]: BEING_FORCE_KILLED -> FINISHED
04 03 2021 11:58:20.149:DEBUG [launcher]: FINISHED -> FINISHED
Warning: Task "karma:all" failed. Use --force to continue.

Aborted due to warnings.
npm ERR! Test failed.  See above for more details.

Traceback (most recent call last):
  File "/venv/lib/python3.7/site-packages/libup-0.0.1-py3.7.egg/libup/ng.py", line 1188, in main
    libup.run(args.repo, args.output, args.branch)
  File "/venv/lib/python3.7/site-packages/libup-0.0.1-py3.7.egg/libup/ng.py", line 1130, in run
    self.npm_upgrade(plan)
  File "/venv/lib/python3.7/site-packages/libup-0.0.1-py3.7.egg/libup/ng.py", line 857, in npm_upgrade
    self.npm_test()
  File "/venv/lib/python3.7/site-packages/libup-0.0.1-py3.7.egg/libup/ng.py", line 240, in npm_test
    self.check_call(['npm', 'test'])
  File "/venv/lib/python3.7/site-packages/libup-0.0.1-py3.7.egg/libup/shell.py", line 38, in check_call
    res.check_returncode()
  File "/usr/lib/python3.7/subprocess.py", line 428, in check_returncode
    self.stderr)
subprocess.CalledProcessError: Command '['npm', 'test']' returned non-zero exit status 1.

npm dependencies

Dependencies
Development dependencies

Logs

Source code is licensed under the AGPL.